Automatisation d'une feuille de garde

salsitawapa

XLDnaute Occasionnel
Bonjour à tous, me re-voici. Je cherche depuis une semaine à trouver une formule pour une feuille de garde mais le problème est que je ne trouve pas. Voila j'essaie de rajeunir un peu la feuille de garde de mon boulot (pompier). Par soucis de confidentialité, j'ai remplacé les noms par des numéros.
Le fichier excel se compose de 4 feuilles (Jour, nuit, Garde et macro1).
En fait j'ai créé la feuille garde qui par la suite ira chercher dans le tableau des gardes qui travail et quand.
Dans la feuille garde, on peut voir qu'il y a 3 équipe (qui travail 24 h par garde) avec un "g" une case sur 3, et il y a 5 équipe (qui travail 12 h par garde) notée "j" pour le travail de jour suivis de "n" pour le travail de nuit suivi de 3 cases vide.
J'aimerais que l'orsque l'on met la date sur la feuille de jour, les noms des personnes en "g" et en "j" se mettent automatiquement dans les cases colorée (idem pour la nuit avec "g" et "n").
Ces cases colorés sont en 2 colonnes (les mêmes que sur leurs droites ou l'on voit les n° de chambre et le nom). La colonne de gauche et pour les non conducteurs poids lourds et celle de droite pour les conducteurs poids lourds. J'aimerais que lorsque les noms et les n° de chambre se mettent, les colonnes soit respecté (ainsi que pour les sous officier caporaux...).
Je ne sais pas si les explications sont bonnes, mais j'ai joint le fichier cela sera peut être plus clair. Merci de votre aide !

Fichier excel
 

jeanpierre

Nous a quitté
Repose en paix
Re : Automatisation d'une feuille de garde

Bonsoir salsitawapa,

C'est déjà la seconde fois en quelques jours que je vois ton fichier. N'y aurait-il pas des doublons de posts ???? Pas GLOP.!!!! Edit : Désolé, je viens de voir d'où venait le doublon... Posté sur un autre Forum... Excuses...

Pour le reste, si je comprends ce que tu voudrais, honnêtement, au travers ton fichier, je dois avouer que je ne comprends rien...

Je ne suis peut-être pas trop attentionné en ce moment.

34.et quelques bananes de ° encore il y a peu y contribue sans doute.

Pour ce soir pas de solution.

Sinon, restes sur le même fil, et au besoin, affines tes questions.

En attendant, bonne soirée et sans rancunes.

Jean-Pierre
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Automatisation d'une feuille de garde

Re,

Effectivement, entre-temps, je m'en suis aperçu, et j'ai réédité mon message.

Je réfléchis à la chose, mais pour l'instant, pas trop d'idées...

Bonne soirée tout de même. Et puis je ne suis pas tout seul, donc, d'autres vont sans doute passer et être plus performants.

A Bientôt.

Jean-Pierre
 

salsitawapa

XLDnaute Occasionnel
Re : Automatisation d'une feuille de garde

Merci bcp, moi sa fait depuis plus d'une semaine que je sèche dessus et plus je cherche, plus je m'éloigne de la solution !!!
J'avais trouvé une formule pour dire que tel jour un tel était de garde (que ce soit g, j ou n) mais dès qu'ils y étaient effectivement, cela me mettait #valeur! (trop d'arguments dans ma formule !)
 

Gorfael

XLDnaute Barbatruc
Re : Automatisation d'une feuille de garde

Salut
Un peut perdu dans ton fichier !
Pour les noms, au lieu de mettre des nombres, il serait plus judicieux de mettre des lettres AAAA, BBBB, CCCC : ça permet d'éviter les confusions entre par exemple n°chambre et nom.
La feuille "Garge", c'est ta feuille "Garde" je suppose ?

En fait j'ai créé la feuille garde qui par la suite ira chercher dans le tableau des gardes qui travail et quand.
?????

Page "Garge"
selon la date trouvé en A2, la formule marquera pour le jour prévu si la personne est de garde ou pas (je n'ai pas encore trouvé la formule puisque dès qu'une personne est de garde, il ne me met pas
G, J ou N, mais il marque #VALEUR!
Je suppose que tu recherches la formule que tu dois mettre en colonne AT

Comme ça va prendre un temps fou pour expliquer ce que je ne comprends pas dans ton problème, je vais simplement essayer de te donner des pistes de travail pour que tu puisses y arriver tout seul (ou sinon, essaie d'être compréhensible!!!)

en AT5, tu as la formule suivante :
=SI($A$2=1;N5;SI($A$2=2;O5;SI($A$2=3;P5;SI($A$2=4;Q5;SI($A$2=5;R5;SI($A$2=6;S5;SI($A$2=7;T5;SI($A$2=8;U5))))))))
+
SI($A$2=9;V5;SI($A$2=10;W5;SI($A$2=11;X5;SI($A$2=12;Y5;SI($A$2=13;Z5;SI($A$2=14;AA5;SI($A$2=15;AB5;SI($A$2=16;AC5))))))))
+
SI($A$2=17;AD5;SI($A$2=18;AE5;SI($A$2=19;AF5;SI($A$2=20;AG5;SI($A$2=21;AH5;SI($A$2=22;AI5;SI($A$2=23;AJ5;SI($A$2=24;AK5))))))))
+
SI($A$2=25;AL5;SI($A$2=26;AM5;SI($A$2=27;AN5;SI($A$2=28;AO5;SI($A$2=29;AP5;SI($A$2=30;AQ5;SI($A$2=31;AR5)))))))
1re partie donne comme résultat "g"
2me partie donne comme résultat FAUX
3me partie donne comme résultat FAUX
4me partie donne comme résultat FAUX
est mon tout est ?................... réponse #######

Belle charade, mais pas éfficace
en lisant ta formule, je crois comprendre que tu veux afficher la valeur de la colonne qui correspond à la date entrée en A2
Si c'est ça, essaies cette formule (pour AT5) :
PHP:
=INDEX(N5:AR5;EQUIV($A$2;$N$4:$AR$4;0))
ou en plus simple
PHP:
=INDEX(N5:AR5;$A$2)
et si tu mets la date de manière automatique en A2 (A2 : =aujourdhui())
PHP:
=INDEX(N5:AR5;Jour($A$2))

ça donne 0 ou valeur de la case ciblée quand elle n'est pas vide.
pour éliminer le 0, plutôt qu'une formule si(formule=0;"";formule), je préconiserais un format du style "0;;"

Sinon, quand tu as une formule rallonge, les "+" ne servent à rien, sauf si tu as un résultat numérique.
Tu peux utiliser plusieurs cellules :
AT5 : =SI($A$2=1;N5;SI($A$2=2;O5;SI($A$2=3;P5;SI($A$2=4;Q5;SI($A$2=5;R5;SI($A$2=6;S5;SI($A$2=7;T5;AU5)))))))

AU5 : =SI($A$2=8;U5;....AV5))))))) et en dernier

...5 : =si(....si(...si(...;AS5;""))))

mais tu as d'autres choix de formule qui sont plus facilement maintenables
A+
 
Dernière édition:

salsitawapa

XLDnaute Occasionnel
Re : Automatisation d'une feuille de garde

Bonjour, merci pour la réponse. Déjà, pour la formule : =INDEX(N5:AR5;$A$2) c'est bien celle qui me fallait sur la feuille "garde" en AT5.
Je mettais mal exprimé pour la feuille de garde. Au boulot, on travail sur plusieurs fichier excel. J'ai créer une feuille de garde (qui se nomme classeur équipe), celui-ci nous donne exactement les tours de gardes avec les décomptes horraires, jours de vacances...
La feuille de garde test est la pour un jour précis avec toutes les personnes de garde et dur leurs piquet de la journée (ambulance, incendie, échelle, secours routier...). C'est sur ce fichier "feuille de garde test" que j'ai rajouté la feuille nommée "garde" et qui par la suite ira chercher automatiquement dans un autre fichier les jours de travail (dans celui qui se nomme classeur équipe).
Voila j'ai corrigé la feuille de garde test avec les bonnes formule. Il me manque plus qu'a trouver la formule pour mettre les personnes de garde dans la bonne case (celles qui ont un "g" et un "j" dans les cases orangé de la feuille de jour et celles qui ont un "g" et un "n" dans les cases orangé de la feuille de nuit).
Je pense qu'elle est compliqué puisqu'il faut respecter la case (a gauche si le nom doit être dans celle de gauche, pareil pour la droite et aussi pour les sous officiers, caporaux et sapeurs.).
Si vous avez des idées, merci


Nouveau Fichier excel
 
Dernière édition:

Gorfael

XLDnaute Barbatruc
Re : Automatisation d'une feuille de garde

salsitawapa à dit:
Il me manque plus qu'a trouver la formule pour mettre les personnes de garde dans la bonne case (celles qui ont un "g" et un "j" dans les cases orangé de la feuille de jour et celles qui ont un "g" et un "n" dans les cases orangé de la feuille de nuit).
Je pense qu'elle est compliqué puisqu'il faut respecter la case (a gauche si le nom doit être dans celle de gauche, pareil pour la droite et aussi pour les sous officiers, caporaux et sapeurs.).
Si vous avez des idées, merci
Salut
P'vez répéter la question ?????
Avant de m'attaquer (sauvagement) au problème, je récapépéte ce que je crois avoir compris (comme le service) :
Feuille "Garde"
Tu remplis la colonne B
Les colonnes AS et AT se remplissent automatiquement : AS avec le nom correspondant à la ligne de la colonne B et AT en fonction du planning et de la date (en A2)

Tu veux remplir de manière automatique les cellules en jaune de J20 à N57 des feuilles Jour et Nuit chaque fois que tu changes la date en A2(feuille "garde") avec

Colonne K les noms des colonnes Q, W et AC et
Colonne N les noms des colonnes T, Z et AF qui ont, en AT de la feuille "garde"
-soit un "g" (Feuilles "Jour" et "Nuit")
-soit un "j" (feuille "jour")
-soit un "n" (feuille "Nuit")
en face de leur nom, en tenant compte des titres comme "Sous-officiers FAE" ou "Caporaux C/A VSAB" (Caporaux chefs d'équipe ???)

C'est à peu prés ce qu'il te reste à trouver comment faire :) ?

Comme il y a des macros, je pense qu'une macro de plus permettra de résoudre ton problème (mais donne ta version d'Excel, on sait jamais)
A+
 
Dernière édition:

salsitawapa

XLDnaute Occasionnel
Re : Automatisation d'une feuille de garde

Bonjour, c'est tout à fait sa. Ma version excel est 2003 version 11. Par contre, celle du boulot il me semble qu'il s'agit d'une version millénium.
Pour les noms qui s'affichent automatiquement dans les colonnes en jaunes (colonne K et N), il faut que le n° de chambre s'affiche également dans les 2 autres colonnes jaune (colonne J et M).
Voila je crois que c'est a peu près tout.
Merci
 

Bebere

XLDnaute Barbatruc
Re : Automatisation d'une feuille de garde

bonsoir Salsitawapa,Gorfael

un petit essai qui ne traite qu'une partie, mais je pense à répéter pour la suite

est ce le résultat désiré?

Code à mettre dans Feuille Nuit(clic droit onglet feuille et visualiser code)

Private Sub FeuilNuit()
Dim Plg As Variant, Eq1 As Variant
Dim L As Byte,L1 As Byte, C As Byte, C1 As Byte

Plg = Range("P11:T38")
For L = 1 To UBound(Plg, 1)
For C = 1 To UBound(Plg, 2)
If IsNumeric(Plg(L, C)) And Plg(L, C) <> "" Then C1 = C1 + 1 'compte
Next C
Next L

ReDim Eq1(1 To C1, 1 To 3)

For L = 1 To UBound(Plg, 1)
If IsNumeric(Plg(L, 1)) And Plg(L, 1) <> "" Then
l1 = l1 + 1
Eq1(l1, 1) = Plg(L, 1)
Eq1(l1, 2) = Plg(L, 2)
End If
If IsNumeric(Plg(L, 4)) And Plg(L, 4) <> "" Then
l1 = l1 + 1
Eq1(l1, 1) = Plg(L, 4)
Eq1(l1, 2) = Plg(L, 5)
End If
Next L

With Sheets("Garde")
Plg = .Range("N4:AS22")
monjour = .Range("A1").Value
End With

For L = 1 To UBound(Eq1, 1)
For l1 = 2 To UBound(Plg, 1)
If Plg(l1, UBound(Plg, 2)) = Eq1(L, 2) Then 'compare noms
For C = 1 To UBound(Plg, 2)
If Plg(1, C) = monjour Then
Eq1(L, 3) = Plg(l1, C) 'la garde
Exit For
End If
Next C
Exit For
End If
Next l1
Next L
'écrit dans nuit cellules jaunes
For L = 1 To UBound(Eq1, 1)
If Eq1(L, 3) = "g" Then
If L <= 9 Then
Range("J" & L + 19) = Eq1(L, 1)
Range("K" & L + 19) = Eq1(L, 2)
Else
Range("M" & L + 10) = Eq1(L, 1)
Range("N" & L + 10) = Eq1(L, 2)
End If
End If
Next L

End Sub

à bientôt
 

salsitawapa

XLDnaute Occasionnel
Re : Automatisation d'une feuille de garde

re bonsoir !
Je viens d'essayer la macro, elle me marque tous dans la colonne sous officiers sans respecter la colonne de droite ou de gauche. Ces colonnes sont aussi importante que l'ordre des sous officiers, caporaux, sapeurs... La colonne de gauche est pour les non conducteurs poids lourd et celle de droite pour les conducteurs poids lours. L'idéale serait même de recopier les noms qui sont copier dans les feuilles nommé "jour" et "nuit" puisque normalement il y a des commentaires pour les spécialitées qui remette à l'aide d'une macro le nom qui est présent sur la feuille de garde dans sa spécialité dès que l'on clique sur le bouton spécialité. J'ai remis la feuille avec l'exemple avec les commentaires. Volontairement je n'ai pas cliqué sur le bouton "spécialité" dès que tu cliqueras, tu verras que les commentaires se mette également.
Je te remercie


Fichier excel modifié
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Automatisation d'une feuille de garde

bonjour Salsitawapa
question
dans la feuille de garde,ou il y a les g
il faudrait différencier,je présume qu'il y en a de la feuille jour et de la feuille nuit

2 procédures,une pour gauche(nonconducteur),l'autre pour droite(conducteur)

Private Sub FeuilNuitG()
Dim Plg As Variant, EqG As Variant
Dim L As Byte, L1 As Byte, C As Byte, C1 As Byte

Plg = Range("P11:Q38")
For L = 1 To UBound(Plg, 1)
If Plg(L, 1) <> "" Then C = C + 1 'compte
Next L

ReDim EqG(1 To C, 1 To 3)

For L = 1 To UBound(Plg, 1)
If Plg(L, 1) <> "" Then
L1 = L1 + 1
EqG(L1, 1) = Plg(L, 1)
EqG(L1, 2) = Plg(L, 2)
End If
Next L

With Sheets("Garde")
Plg = .Range("N4:AS22")
monjour = .Range("A1").Value
End With

For L = 1 To UBound(EqG, 1)
For L1 = 2 To UBound(Plg, 1)
If Plg(L1, UBound(Plg, 2)) = EqG(L, 2) Then 'compare noms
For C = 1 To UBound(Plg, 2)
If Plg(1, C) = monjour Then
EqG(L, 3) = Plg(L1, C) 'la garde
Exit For
End If
Next C
Exit For
End If
Next L1
Next L
'écrit dans nuit cellules jaunes
L1 = 0
For L = 1 To UBound(EqG, 1)
If EqG(L, 3) = "g" Then
L1 = L1 + 1
Range("J" & L1 + 19) = EqG(L, 1)
Range("K" & L1 + 19) = EqG(L, 2)
End If
Next L

End Sub

Private Sub FeuilNuitD()
Dim Plg As Variant, EqG As Variant
Dim L As Byte, L1 As Byte, C As Byte, C1 As Byte

Plg = Range("S11:T38")
For L = 1 To UBound(Plg, 1)
If Plg(L, 1) <> "" Then C = C + 1 'compte
Next L

ReDim EqG(1 To C, 1 To 3)

For L = 1 To UBound(Plg, 1)
If Plg(L, 1) <> "" Then
L1 = L1 + 1
EqG(L1, 1) = Plg(L, 1)
EqG(L1, 2) = Plg(L, 2)
End If
Next L

With Sheets("Garde")
Plg = .Range("N4:AS22")
monjour = .Range("A1").Value
End With

For L = 1 To UBound(EqG, 1)
For L1 = 2 To UBound(Plg, 1)
If Plg(L1, UBound(Plg, 2)) = EqG(L, 2) Then 'compare noms
For C = 1 To UBound(Plg, 2)
If Plg(1, C) = monjour Then
EqG(L, 3) = Plg(L1, C) 'la garde
Exit For
End If
Next C
Exit For
End If
Next L1
Next L
'écrit dans nuit cellules jaunes
L1 = 0
For L = 1 To UBound(EqG, 1)
If EqG(L, 3) = "g" Then
L1 = L1 + 1
Range("M" & L1 + 10) = EqG(L, 1)
Range("N" & L1 + 10) = EqG(L, 2)
End If
Next L

End Sub
 

salsitawapa

XLDnaute Occasionnel
Re : Automatisation d'une feuille de garde

Bonjour Beber, en fait les personnes qui sont en "g" équivaut a une personne en "j" et une personne en "n". La personne en g reste 24 h de garde (jour + nuit). La personne en j reste 12 heure de garde la journée et celle en n reste 12h la nuit. J'ai essayé le code, mais il ne me marque pas dans les bonnes cases. Il me marque dans les bonnes colonnes mais toujours pas dans les bonnes lignes.
J'ai également vu une petite faute :
Range("M" & L1 + 10) = EqG(L, 1)
Range("N" & L1 + 10) = EqG(L, 2)

J'ai remplacé les 10 par 19.
Je suppose que pour ceux écrit en "n", on fait un copier coller de la même formule et on change g par n ? Comment faire pour que les caporaux, sapeurs... se marquent dans la bonne cellule ? Merci
 

Bebere

XLDnaute Barbatruc
Re : Automatisation d'une feuille de garde

rebonjour
oui,j'avais bien compris cette partie
mais si tu veux le résultat des "g" dans feuille jour et nuit,il faut différencier,la provenance des noms,mettre "gj" ou "gn" peut être,autrement le code donne le même résultat dans feuille jour et nuit,je parle des tableaux 24h
le code ne traite que équipe1 sous officiers fae
je ne comprends "à la bonne ligne" ou bien tu penses que le code traite le tout
explique mais un exemple vaut mieux qu'une (parfois) longue explication
pour traiter les autres parties, il faut changer les références des plg

ex feuille garde équipe1:plg = .Range("N4:AS22")
feuille garde équipe2:plg = .Range("N31:AS41")
ex feuille nuit équipe1 sous officiers fae:plg = Range("P11:Q38") et
Plg = Range("S11:T38")
et "g" en "n" ou "j"

quand cette partie sera bonne,on continue pour le reste

à bientôt
 

salsitawapa

XLDnaute Occasionnel
Re : Automatisation d'une feuille de garde

re bonjour
Voila pour l'exemple j'ai rempli Manuellement la feuille de garde de "jour". J'ai mis les noms à leurs bonnes place. Par exemple, LLLL est bien dans la colonne Caporaux C/A VSAB. Pour différenciers toute ces cases, j'ai mis plusieurs couleur (sans tenir compte des côtés pour les conducteurs et non conducteurs), cela poura peux être mieux t'aider à comprendre ce que je veux dire.
Je te remercie





Fichier excel
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2