Automatisation base de données

jacopymo

XLDnaute Nouveau
Bonjour,

Je suis employé au chu de Rennes. Je débute sur Excel et j'essaye de créer une petite base de données pour gérer des transports nuit/week-end/Fériés sur la base du volontariat. Transport d'organes, de matériel, de pharmacie, de laboratoires etc.....
Elle comprend une dizaine de noms et se présente de la façon suivante:

Nom, Prénom, Adresse, Tel, Date appel, Heure appel, Accepté, Refusé.

Quand un agent a accepté le transport, je voudrais que la ligne où figure son nom descende automatiquement en dernière position dans la liste.
Quand un agent refuse le transport je lui laisse la possibilité de refuser trois fois avant de le mettre en fin de liste.
Ceci a pour but de mettre un peu de souplesse dans cette organisation.
Mon post est peu long je m'en excuse. Merci d'avoir prit le temps de me lire et de me répondre.

Bien amicalement.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Automatisation base de données

Bonjour jacopymo,

Quand un agent a accepté le transport, je voudrais que la ligne où figure son nom descende automatiquement en dernière position dans la liste.
Quand un agent refuse le transport je lui laisse la possibilité de refuser trois fois avant de le mettre en fin de liste.

donc ils vont se retrouver tous les deux en fin de liste mais pour des raisons différentes

pourrais-tu joindre un petit bout de fichier avec des explication un peu plus claires
à+
Philippe
 

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonsoir,

Quelle réactivité? J'ai adressé en pièce jointe le tableau avec des données fictives.

Cas n° 1 Voici un exemple concret. Un rein à emmener au chu de Brest. L'agent qui reçoit cette demande, téléphone au premier nom de la liste "Aubert Aurélien".
Celui-ci est disponible et accepte.Un "oui" apparait dans la case "accepté". Je veux maintenant que "Aubert Aurélien" aille en dernière position de la liste.
Cas n° 2 Le premier de la liste est donc maintenant "Bernard Pierre". Il est appelé pour un autre transport. Il refuse. Je coche la case "Refusé" mais il reste à sa place (tolérance 3 refus). Au 3éme refus consécutif il ira automatiquement en fin de liste. On fait donc appel à "Dubourg Léon" qui lui accepte et rejoins donc la fin de liste et ainsi de suite.... C'est un turnover avec quelques règles.
La solution à mon probléme doit passer par le vba ou la macro, hélas je ne sais pas m'en servir.
Merci pour votre patience. Bonne soirée.
 

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonsoir,

Je ne comprend pas. J'ai ajouté une pièce jointe à partir de mon pc. Le fichier est en xlsx 18 ko. J'ai pigé je fais la conversion en 2003.

A +
 

Pièces jointes

  • Transport_volontariat.xls
    27.5 KB · Affichages: 118

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonsoir,

Initialement 9. Je souhaiterai pouvoir rajouter 4 ou 5 noms à cette liste dans l'avenir si le besoin s'en faisait sentir. Cela serait peut-être plus simple si mon administration acceptait que l'on crée ce fichier sur Access.

Merci.
 
Dernière édition:

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonsoir CISCO,

Initialement 9. Il est possible que 2 ou 3 agents intègrent cette liste en cas de besoin. Créer cette liste aurait probablement été plus simple avec access, mais ma direction ne veut pas.
Ce qui est important pour moi c'est de comprendre le cheminement.

Merci.
 

ROGER2327

XLDnaute Barbatruc
Re : Automatisation base de données

Bonjour à tous
Une proposition à installer dans le module de la feuille Attribution Transport :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim L1, PL
   Set PL = Intersect(Target.Cells(1, 1), Range("H:I"), Range("A1").CurrentRegion.Offset(1, 0))
   If PL Is Nothing Then Exit Sub
   With Application
      .ScreenUpdating = False
      .EnableEvents = False
      With PL.Cells
         Select Case .Column
            Case 8: .Offset(0, 1).Value = Empty
            Case 9: .Offset(0, -1).Value = Empty
         End Select
         If .Value = "Oui" Or .Value = "Refusé 3 fois" Then
            L1 = Rows(.Row).Value
            With Range(Cells(.Row + 1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, Range("A1").CurrentRegion.Columns.Count))
               .Offset(-1, 0).Rows.Value = .Rows.Value
            End With
            Rows(Cells(Rows.Count, 1).End(xlUp).Row).Value = L1
         End If
      End With
      .EnableEvents = True
      .ScreenUpdating = True
   End With
End Sub[/B][/COLOR]
Pour l'utiliser, il faut modifier la liste de choix de la colonne Refusé en mettant

Refusé;Refusé 2 fois;Refusé 3 fois

comme source de la liste de validation.​
ROGER2327
#2477
 
Dernière édition:

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonne et heureuse année à tous les membres de ce superbe site.

Bonjour,

Je viens chercher un peu d'aide car je suis bloqué. Toutes vos suggestions pour améliorer mon projet seront les bienvenues.

Question n°1: Dans la feuille "attribution Transport" sur la ligne "Aubert Aurélien", est-il possible que la date et l'heure s'inscrivent en même temps sur la feuille nommée "Aubert Aurelien" dans les champs correspondants?
Question n°2: Comment réaliser un compteur qui me permette de comptabiliser en temps réel chaque colonne en jaune?

Dernière question: Dans les colonnes H et I comment supprimer le "Oui" et "Refus 3" quand ils redescendent en fin de liste?

Merci infiniment pour le temps que vous m'accorderez.

Bien amicalement.
 

Pièces jointes

  • Planning Michel.zip
    24.5 KB · Affichages: 52
  • Planning Michel.zip
    24.5 KB · Affichages: 56
  • Planning Michel.zip
    24.5 KB · Affichages: 52

ROGER2327

XLDnaute Barbatruc
Re : Automatisation base de données

Bonjour jacopymo
Dommage de ne pas avoir posé tout le problème dès le début. Un essai de rafistolage pour les questions 1 & 3 :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)

Dim M1, DL, tmp

Set DL = Intersect(Target.Cells(1, 1), Range("H:I"), Range("A1").CurrentRegion.Offset(1, 0))

   If DL Is Nothing Then Exit Sub

   With Application
      .ScreenUpdating = False
      .EnableEvents = False

      With DL.Cells

         Select Case .Column
            Case 8: .Offset(0, 1).Value = Empty
            Case 9: .Offset(0, -1).Value = Empty
         End Select

         If .Value = "Oui" Or .Value = "Refus 3" Then
            [COLOR="Sienna"]If .Value = "Oui" Then
               tmp = Rows(.Row).Resize(1, 2).Offset(0, 5)
               Sheets(Rows(.Row).Cells(1, 1) & Space(1) & Rows(.Row).Cells(1, 2)).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2).Value = tmp
            End If
            .Value = Empty[/COLOR]
            M1 = Rows(.Row).Value
            With Range(Cells(.Row + 1, 1), Cells(Rows.Count, 1).End(xlUp).Offset(0, Range("A1").CurrentRegion.Columns.Count))
               .Offset(-1, 0).Rows.Value = .Rows.Value
            End With
            Rows(Cells(Rows.Count, 1).End(xlUp).Row).Value = M1
         End If

      End With

      .EnableEvents = True
      .ScreenUpdating = True
   End With

End Sub[/B][/COLOR]
Je n'ai pas compris la deuxième question.
Bonne année.
ROGER2327
#2510
 

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonjour ROGER2327

Je vous souhaite à vous et à ceux qui vous sont chers une très belle année 2010.

Vous êtes trop fort. Votre réponse répond exactement à mon souhait. Je mesure tout le chemin qu'il me reste à parcourir.
Pour la 2éme question. Je vous propose un autre planning plus parlant.
- "Oui" en H2 = 1 en C23. 2éme "oui" en H2 = 2 en C23 etc....
- Refus 1 en I2 = 1 en D23. Refus 2 en I2 = 2 en D23 etc...
Cela permettrait un calcul individuel et total.
Un autre avantage est que chacun pourra savoir qui à fait quoi. Je veux un système souple équitable et transparent.
Un autre souci est apparu je vous le soumet. J'ai fait un lien hypertexte pour chaque nom. Tout fonctionne bien sauf que quand le nom le nom redescend en fin de liste le lien pointe sur un nom différent.
Je vous remercie infiniment pour votre patience et le temps que vous prenez pour m'aider.

Bonne soirée.
 

Pièces jointes

  • Planning Michel.zip
    46.8 KB · Affichages: 51
  • Planning Michel.zip
    46.8 KB · Affichages: 47
  • Planning Michel.zip
    46.8 KB · Affichages: 47

jacopymo

XLDnaute Nouveau
Re : Automatisation base de données

Bonsoir,


En pièces jointes le projet final. C'est très parlant. J'aurai dû commencer par là. Dans l'avant dernier post j'ai répondu à la 2ème question. Pour le lien hypertexte c'est résolu, il apparait dans le cadre du bas.
Je récapitule:
Sur la feuille "Attribution Transport" le cadre supérieur sert à l'agent qui est chargé de trouver un volontaire. Il doit remplir les champs concernés en tenant compte des règles.
Sur la feuille "Attribution Transport" le cadre inférieur permet à chacun d'avoir une vue d'ensemble sur le nombre de transports.
La feuille allouée à chaque agent récapitule toutes les données en détail concernant l'attribution des transports.
Souci n°1- Je ne peux pas rajouter de noms à ma liste, je voudrais mettre quinze noms.
Souci n°2- Exemple: Sur la ligne "Dubourg" j'ai rempli certains champs.
Si vous cliquez "Oui" dans "Accepté", la Date et l'Heure sont inscrites dans la feuille "Dubourg" et la cellule "Refusé" est effacée, ça c'est génial, mais pour être logique il faudrait effacer en même temps les cellules J,K,L,M.
Souci n°3- Que les cellules H,i,J,K,L,M, indiquent dans le tableau du bas l'équivalent en chiffre augmenté de 1 à chaque activation (voir tableau) et s'incrémentent en même temps dans la feuille "Aubert" en H,I,J,K,L,M par le chiffre 1.
Question? Pour résoudre une partie du problème serait-il possible qu'après avoir incrémenter les cellules des colonnes F,G,H,J,K,L,M, dans leurs feuilles respectives, elles s'effacent à la fermeture d'Excel sauf celles de la colonne "I".
Merci de bien vouloir regarder.

Merci et bonne soirée.
 

Pièces jointes

  • Planning Michel.xlsm
    40.1 KB · Affichages: 80

Discussions similaires