Transmettre infos d'un planning à une feuille du jour
Bonjour à tous,
Désolé par avance si la question a déjà été posée, je fais au mieux pour respecter la charte, merci à vous.
Je travaille dans un hôpital, au sein du service restauration de ce dernier, et faisant des tableaux et plannings par-ci par-là, je cherche à améliorer la chose et gagner du temps, en transmettant la bonne info d'un agent au bon endroit dans la feuille du jour.
Difficile d'expliquer la problématique dans le titre, mais la voici en détail :
Le service restauration est composé de 90 agents environ. il y a donc une dizaine de plannings. (self, production chaude, production froide, magasin, etc)
On va se concentrer sur le cas du planning du self.
J'ai donc d'un côté, le planning des agents du self, mois par mois, ici c'est Juillet.
De l'autre, comme il y a du monde, nous suivons cela avec des "feuille du jour" c'est une feuille qui récapitule tous les agents présents ce jour.
Actuellement, nous remplissons ces feuilles du jour en recopiant comme des ânes le planning, et c'est un travail qui prend vraiment un temps de zinzin pour une plus value minime, mais surtout qui peut être une grande source d'erreur.
Ce que je cherche à faire, c'est d'automatiser ce recopiage, mais le problème que je rencontre, c'est qu'il faut qu'Excel mette le bon agent au bon endroit en fonction du jour sélectionné.
Vous avez en PJ les documents.
Sur le planning du self, au mardi 1er Juillet, on peut voir un agent présent en 1, 3 agents présents en 2, un agent en 5, un en 6 et un en 7.
Donc sur ma feuille du jour j'ai recopié exactement qui est où.
J'aimerai réussir à faire en sorte que, pour le Mardi 1er Juillet, Excel sache que pour l'horaire 1, il me mette d'office Mme TRUC. L'horaire 2, il me mettent tous ceux qui sont en 2, et ainsi de suite.
Dans le cas du 1 par exemple, il faut qu'en sélectionnant la colonne de chiffres allant de B5 à B14, la cellule de la feuille du jour trouve le 1 (qui est en B8) et m'inscrive le nom qui s'y réfère, à savoir Mlle TRUC, qui elle est en A8, et m'inscrive son nom, vous comprenez ?
J'espère être le plus clair possible, et surtout j'espère réussir à me faire comprendre, car c'est pas évident.
Par avance un immense merci à vous pour votre temps, et désolé si un sujet similaire existe, je ne sais pas si j'ai les connaissances ou le vocabulaire pour un rechercher un truc de la sorte dans tous les sujets.
Bonjour,
Une proposition (via une macro VBA)
Sélectionner la feuille du mois pour lequel générer la feuille planning, puis faire alt-F8 et lancer la macro (la macro est conçue pour ce classeur, toute modification de sa structure nécessitera une adaptation de la macro).
WA-OU impressionnant merci merci vraiment ! C'est exactement ca que je cherchais à faire.
Maintenant comment je peux faire pour conserver la macro et l'applique à d'autres plannings ?
En fait j'ai d'un côté le doc excel de la Feuille du jour vierge à part. Et de l'autre l'ensemble des plannings (un doc excel pour le self comme ceci mais avec 4 autres agents de +, un autre doc pour la production chaude, un doc pour la froide, etc).
Sachant que l'objectif serait de le faire pour chaque mois par la suite, une fois le planning d'Août validé, hop on génère les feuilles du jour instantanément.
Ce serait parfait de partir du doc Feuille du jour, et que la macro aille chercher les infos dans tous les autres plannings pour se compléter, plutôt qu'ajouter un onglet à ce seul planning, qui ne sera pas pertinent car il ne tient pas compte des autres plannings.
Encore merci je suis impressionné, je lisais quelques autres topics pour voir un peu, tout content de faire quelques tableaux excel plutôt jolis et deux-trois formules basiques !
Bonsoir,
Comme indiqué, je n'ai pu faire que sur base de ce que tu as fourni comme fichier et comme explications. Répondre à tes questions sans voir à quoi ressemblent tes fichiers et tes données, c'est très compliqué.
Tu peux toujours essayer ceci : (sinon il faudra que tu mettes des infos plus précises sur ce que tu as (fichier exemple représentatif) et ce que tu veux obtenir comme résultat).
Tu prends le fichier (feuilledujour.xlsm) que j'ai mis sur le forum. Tu l'ouvres, tu ouvres également ton fichier qui contient tes feuilles planning (elles doivent avoir la même structure que celle qui se trouve dans le fichier exemple que tu as mis, titres au même endroit, info jour dans les mêmes colonnes, le mot HORAIRE à la fin de la liste des personnes, ...). Tu sélectionnes la feuille planning qui te convient et tu lances la macro via alt-F8.
Hello,
Une proposition PowerQuery, je rejoins h2so4 (que je salue
- Dans la cellule tout en haut il faut que tu tapes la date au format jj/mm/aaaa, ça mettra les deux lignes du dessous à jour
- Coller ensuite tout ton ton tableau du mois à partir de la ligne 5. (il faut aussi que tu mettes les tableaux horaires etc en dessous. Enfin bref garder le même format et le même nombre de ligne entre chaque tableau etc mais je rpésume qu'ils sont tous construits comme ça donc pas de souci.
Après tu as juste à aller sur la feuille2 et faire clic droit sur le tableau puis actualiser sur le tableau et filtrer selon ta date pour avoir tous les tableaux par jour.
@+
Bonjour,
Bien noté je vous répondrai de manière complète dès le début de semaine, de retour au boulot avec l''ensemble des documents. Je pensais naïvement que la macro était "facilement" duplicable pour les autres plannings.
En effet à la louche il y a d'un côté le doc feuille du jour, et de l'autre les 8-9 plannings concernés qui remplissent la feuille du jour.
En tout cas un immense merci pour vos retours vraiment, merci pour votre temps et votre patience, et à Lundi ou Mardi avec des infos plus complètes
Bonjour à vous mes sauveurs, j'espère que vous avez passé un bon week-end, et je me permets de vous remercier encore une fois pour le temps que vous m'accordez à faire le boulot à ma place à cause de mon incompétence, j'en suis encore désolé.
Donc @BAROUTE78, je n'ai pas encore bien compris précisément la manœuvre que tu souhaites me faire faire, mais je m'y pencherai plus précisément quand j'aurais le temps.
Cependant je te confirme que oui, l'ensemble des plannings démarrent en A5 avec le 1er agent, et vont jusqu'à AC5 ou AF5 selon les mois (de Février 28jours à Janvier 31jours).
Ils descendent également jusqu'à la ligne 19 ou 20 au maximum en fonction du nombre d'agents par planning, Donc de A5 à AF20. Cependant attention à certains plannings qui, avec moins d'agents, risquent d'avoir d'autres infos sur ces lignes 15 à 20, comme les horaires).
Voici donc les documents en entier et anonymisés :
La feuille du jour qu'on utilise en réalité :
Et l'ensemble des plannings dont j'ai besoin
Dans mes rêves les plus fous, la manip démarre à partir de la feuille du jour, et en une touche, comme l'a proposé @h2s04, tout vient s'incrémenter automatiquement pour le mois voulu en créant un nouvel onglet (un onglet par jour, sur le doc de la feuille du jour)
Puis en quelques clics refaire pareil pour adapter la macro au mois d'après, etc etc. mais je sens que cela risque d'être plus compliqué que "quelques clics" pour changer de mois.
Disons que j'aimerai réussir à me débrouille seul une fois tous les éléments en main pour éviter d'avoir à vous solliciter trop, mais j'ai l'impression que le travail que vous allez me proposez risque d'être trop avancé et de dépasser mes compétences, et qu'à la fin je me retrouve un outil trop complexe pour moi !
Encore merci à vous sincèrement.
Bonsoir,
un premier jet sur base des nouveaux fichiers que tu as mis. Il me semble qu'il y a des codes qui ne sont pas à leur place (en tout cas sur base des infos que j'ai trouvées dans le classeur feuille-du-jour-cuisine.xls) des codes différents pour le même horaire (8,SK,CR,CRE), des codes identiques pour des horaires différents(1 à 8,P,...), des codes non repris (DS,+), ...
Je n'ai pas pris le temps de gérer tous les cas d'erreur possibles, donc très probable que la macro plante s'il y a quelque chose qu'elle n'a pas prévu.
Waou, j'imagine travail de titan pour faire tout ca.
En effet je te confirme qu'il y a quelques petites coquilles de ce genre : Crèche est des fois mis en CR, des fois en CRE. Tout comme l'Hopital de jour (HDJ ou HJ).
J'ai par ailleurs refait la feuille du jour, tendant, je pense, vers un modèle définitif, si jamais : la voici.
Cependant je rencontre un souci que je n'avais pas avant :
De ce fait en l'état, impossible de lancer et tester la macro pour le moment. Tu as une solution pour contourner cela ? Sachant que dans le premier jet que tu m'as proposés l'autre fois, juste celui du self, la macro marchait très bien, et là je viens de retester à l'instant, et cela marche toujours
En fait pour être précis : la macro "feuilledujour.xlsm!Module1.planningjour" ne marche pas et me dit :
tandis que la "planningjour" marche.
Une solution que je peux mettre en place tout seul ? Ou je dois contacter mon service informatique ?
bonjour,
pour ce qui est du problème de sécurité, peut-être dois-tu mettre ce fichier dans un répertoire autorisé à contenir des fichiers excel avec macro.
si cela ne fonctionne toujours pas, je pourrais te faire essayer une autre solution.
à savoir te :
- donner le fichier sans macro
- donner le texte des macros sur le forum
- donner les instructions pour charger ce code dans le fichier sans macro
- donner les instructions pour adapter les boutons pour qu'ils lancent les bonnes macros.
en attendant ta réponse :
voici une nouvelle version adaptée, (sache que tes modifications de présentation représentent un boulot conséquent !).
Bonjour,
Désolé pour la modification de la feuille du jour. Cela dit je pense qu'elle ne devrait plus trop bouger.
Qu'est ce qui peut m'indiquer où se trouve un répertoire autorisant les macros sur mon PC ?
Sachant que l'autre jour, je cherchais une macro pour copier le contenu d'une cellule sans copier les bordures autour, et je tombe sur ce poste, tiens donc !
https://forum.excel-pratique.com/excel/proteger-les-bordures-des-cellules-d-une-feuille-34866
Et je teste alors la macro suivante proposée par Deraks : Selection.PasteSpecial Paste:=xlPasteAllExceptBorders
Or même souci, rien que cette petite macro toute bête ne marche pas, alors que pour rappel, ta macro "planningjour" de ton premier poste, marche toujours pour autant. Quelle différence finalement entre celle qui marche et celle qui ne marche pas ?
bonjour,
Qu'est ce qui peut m'indiquer où se trouve un répertoire autorisant les macros sur mon PC ?
aller dans fichier ->options,
puis centre de gestion de la confidentialité,
puis cliquer sur paramètres de la gestion de la confidentialité,
puis emplacements approuvés
re,
essaie ceci
télécharge et ouvre ce fichier
ensuite copie et insère le code VBA suivant :
ensuite fait un clic-droit sur le bouton générer planning pour un jour et associe-lui la macro feuilledujour
puis fait un clic-droit sur le bouton générer planning pour tous les jours du mois et associe-lui la macro feuillesdumois
puis sauvegarde le document au format xlsm (excel avec macros) au même endroit que le fichier qui contient la macro qui fonctionne
et enfin vérifie si cela fonctionne (comme tu veux). Comme je n'avais pas initialement compris qu'il fallait générer toutes les feuilles pour un mois, le code n'est pas optimisé (il ouvre et ferme tous les fichiers planning pour chaque jour)
Sub feuilledujour()
Application.StatusBar = ""
Application.ScreenUpdating = False
Do Until ddjok(ddj)
ddj = InputBox("date pour laquelle établir la feuille du jour (format jj/mm/aa)")
If ddj = "" Then Exit Sub
If ddjok(ddj) Then Exit Do
MsgBox ddj & " Date incorrecte"
Loop
Application.StatusBar = "en cours"
genfeuil ddj 'génère planning du jour
MsgBox "génération du planning terminée"
Application.StatusBar = ""
End Sub
Sub feuillesdumois()
Application.StatusBar = ""
Do Until moisok(ddj)
ddj = InputBox("mois pour lequel établir les feuilles du jour (format mm/aa)")
If ddj = "" Then Exit Sub
If moisok(ddj) Then Exit Do
MsgBox ddj & " mois incorrect"
Loop
ddjvt = Split(ddj, "/")
ddj = DateSerial(ddjvt(1), ddjvt(0), 1)
For i = ddj To Application.WorksheetFunction.EoMonth(ddj, 0)
Application.StatusBar = "génération feuille pour le " & Format(i, "dd/mm/yyyy")
Application.ScreenUpdating = False
genfeuil i 'génére le planning pour le jour i
Next i
Application.StatusBar = ""
End Sub
Sub genfeuil(ddj)
' génération d'une feuille planning cuisine pour la date ddj
ddjvt = Split(ddj, "/")
ddj = DateSerial(ddjvt(2), ddjvt(1), ddjvt(0))
annee = Format(ddj, "yyyy")
listemois = Split(",Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre", ",")
mois = listemois(ddjvt(1)) & " " & annee 'feuille dans le classeur
Set twb = ThisWorkbook
On Error Resume Next
Application.DisplayAlerts = False
twb.Sheets(Format(ddj, "dd.mm.yy")).Delete
Application.DisplayAlerts = True
On Error GoTo 0
twb.Sheets("modèle").Copy after:=twb.Sheets(twb.Sheets.Count)
Set wsp = ActiveSheet
wsp.Name = Format(ddj, "dd.mm.yy")
wsp.Range("D4") = Format(ddj, "dddd, d mmmm yyyy")
chemin = twb.Sheets("instructions").Range("J4") & "\"
' fichier 1-planning-année-self.xls
nf = Replace("1-planning-année-self.xls", "année", annee)
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find("HORAIRE", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
'HORAIRE 1 : Ouverture Self 7H20-14H40 HORAIRE 5 : Self 10H35-17H55 HORAIRE 7 : Self 14H05-21H25 HORAIRE P : 9H05-16H25 RH : Repos Hebdomadaire FE : Jour Férié
'HORAIRE 2 : Self 8H35-15H55 HORAIRE 6 : Self 13H05-20H25 HORAIRE 8 : Snack 8H35-15H55 HORAIRE 3 : Prod Froide : 8H05-15H25 CA : Congé Annuel FOR : Formation
code2 = 29
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case 1
wsp.Range("g28") = ws.Cells(i, 1)
Case 2
wsp.Cells(code2, "g") = ws.Cells(i, 1)
code2 = code2 + 1
Case 5, 6, 7
wsp.Cells(co + 23, "i") = ws.Cells(i, 1)
Case "P"
If wsp.Range("i33") = "" Then
wsp.Range("i33") = ws.Cells(i, 1)
Else
wsp.Range("i34") = ws.Cells(i, 1)
End If
End Select
End If
Next i
wb.Close False
' fichier seq2-planning-année-groupe-seq1.xls
For seq1 = 1 To 3
seq2 = seq1 + 1
nf = Replace("seq2-planning-année-groupe-seq1.xls", "année", annee)
nf = Replace(nf, "seq1", CStr(seq1))
nf = Replace(nf, "seq2", CStr(seq2))
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find(" : ", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
'1 : Repas à domicile 6H35-13H55 PLM : Laverie Matin 7H05-14H25 5 : Tranchage W.E. 6H35-13H55
'2 : Repas à domicile 8H05-15H25 7 : Laverie Soir 13H05-20H25 6 : Déconditionnement W.E. 7H05-14H25
'3 : Production Froide 8H05-15H25 8 : Laverie 9H35-16H55 CRE: crèche
'4 : Production Froide 6H35-13H55 SK : Snack : 8H05-15H25
code3 = 8
code7 = 10
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case 0
wsp.Range("i8") = ws.Cells(i, 1)
Case 1
If wsp.Range("c8") = "" Then
wsp.Range("c8") = ws.Cells(i, 1)
Else
wsp.Range("c9") = ws.Cells(i, 1)
End If
Case 2
If wsp.Range("c10") = "" Then
wsp.Range("c10") = ws.Cells(i, 1)
Else
wsp.Range("c11") = ws.Cells(i, 1)
End If
Case 3
If code3 < 13 Then
wsp.Cells(code3, "g") = ws.Cells(i, 1)
code3 = code3 + 1
End If
Case 4
If wsp.Range("e8") = "" Then
wsp.Range("e8") = ws.Cells(i, 1)
Else
wsp.Range("e9") = ws.Cells(i, 1)
End If
Case "PLM"
wsp.Range("k8") = ws.Cells(i, 1)
Case 7
If code7 < 13 Then
wsp.Cells(code7, "K") = ws.Cells(i, 1)
code7 = code7 + 1
End If
Case 8
wsp.Range("k9") = ws.Cells(i, 1)
Case "SK"
wsp.Range("i11") = ws.Cells(i, 1)
Case "CRE"
End Select
End If
Next i
wb.Close False
Next seq1
' fichier seq2-planning-année-prod-chaude-seq1.xls
For seq1 = 1 To 2
seq2 = seq1 + 4
nf = Replace("seq2-planning-année-prod-chaude-seq1.xls", "année", annee)
nf = Replace(nf, "seq1", CStr(seq1))
nf = Replace(nf, "seq2", CStr(seq2))
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find(" : ", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
'PT1 : Pâtisserie : 06H05-13H25 PV1 : Production Viande : 6H05-13H25 D1 : Décondit. 1 : 06H05-13H25 0 : Prod. Froide Sem. 13H05-20H25 PF3:Prod froide 8h RH : Repos Hebdomadaire
'PT2 : Pâtisserie : 09H05-16H25 PV2 : Production Viande : 7H05-14H25 D2 : Décondit. 2 : 07H5-14H25 7 : Prod. Froide W.E. 11H05-18H25 CA : Congés Annuels
'DT1 : Diététique : 06H05-13H25 L1 : Légumes : 6H05- 13H25 D3 : Décondit. 3 : 11H05-18H25 CF : Ch. Fr. Prod. Fin. : 07H05-14H25 FE : Jour Férié
'DT2 : Diététique : 09H05-16H25 L2 : Légumes : 7H05-14H25 B : Boucherie : 06H35-13H55 OP : Operculage : 08H05-15H25 FOR : Formation
'10 : Acheminement 5H35-12H55 A : Acheminement 6H35-13H55 CAP CE : Cellule : 8h05-13h25 HJ : 7H05-14H25 CR : 6H35 - 13H55
code2 = 11
codeplus = 22
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case "PT1"
wsp.Range("g22") = ws.Cells(i, 1)
Case "PT2"
wsp.Range("g23") = ws.Cells(i, 1)
Case "DT1"
wsp.Range("i22") = ws.Cells(i, 1)
Case "DT2"
wsp.Range("i23") = ws.Cells(i, 1)
Case "PV1"
wsp.Range("e16") = ws.Cells(i, 1)
Case "PV2"
wsp.Range("e17") = ws.Cells(i, 1)
Case "PL1"
wsp.Range("e20") = ws.Cells(i, 1)
Case "PL2"
wsp.Range("e21") = ws.Cells(i, 1)
Case "D1"
wsp.Range("c16") = ws.Cells(i, 1)
Case "D2"
wsp.Range("c17") = ws.Cells(i, 1)
Case "D3"
wsp.Range("c18") = ws.Cells(i, 1)
Case "OP"
wsp.Range("c21") = ws.Cells(i, 1)
Case "A"
wsp.Range("i19") = ws.Cells(i, 1)
Case "B"
wsp.Range("c24") = ws.Cells(i, 1)
Case "CF"
wsp.Range("g16") = ws.Cells(i, 1)
Case "CE"
wsp.Range("g19") = ws.Cells(i, 1)
Case "UB"
wsp.Range("k19") = ws.Cells(i, 1)
Case "HJ", "HDJ"
wsp.Range("k16") = ws.Cells(i, 1)
Case 10
wsp.Range("i16") = ws.Cells(i, 1)
Case "+"
If codeplus < 25 Then
wsp.Cells(code7, "K") = ws.Cells(i, 1)
codeplus = codeplus + 1
End If
End Select
End If
Next i
wb.Close False
Next seq1
' fichier 7-planning-année-magasin.xls
nf = Replace("7-planning-année-magasin.xls", "année", annee)
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find("G1 :", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
'HORAIRE A : 08H05 - 15H25
'HORAIRE B : 10H05 - 17H25
code2 = 31
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case "G1"
wsp.Range("C28") = ws.Cells(i, 1)
Case "G2"
wsp.Range("C29") = ws.Cells(i, 1)
Case 1
wsp.Range("C30") = ws.Cells(i, 1)
Case 2
If code2 < 35 Then
wsp.Cells(code2, "c") = ws.Cells(i, 1)
code2 = code2 + 1
End If
End Select
End If
Next i
wb.Close False
' fichier 8-planning-année-creche.xls
nf = Replace("8-planning-année-creche.xls", "année", annee)
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find("HORAIRE", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
code2 = 28
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case "CR"
If code2 < 31 Then
wsp.Cells(code2, "e") = ws.Cells(i, 1)
code2 = code2 + 1
End If
End Select
End If
Next i
wb.Close False
' fichier 9-planning-année-greenbox.xls
nf = Replace("9-planning-année-greenbox.xls", "année", annee)
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find("HORAIRE", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
'HORAIRE A : 08H05 - 15H25
'HORAIRE B : 10H05 - 17H25
code2 = 33
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case "A"
wsp.Range("e32") = ws.Cells(i, 1)
Case "B"
If code2 < 35 Then
wsp.Cells(code2, "e") = ws.Cells(i, 1)
code2 = code2 + 1
End If
End Select
End If
Next i
wb.Close False
' fichier 10-planning-année-responsables-cuisine1.xls
nf = Replace("10-planning-année-responsables-cuisine1.xls", "année", annee)
Set wb = Workbooks.Open(chemin & nf)
If wb Is Nothing Then MsgBox "fichier " & chemin & nf & " non trouvé": Exit Sub
Set ws = wb.Sheets(mois) 'la feuille dans le classeur
Set re = Nothing
Set re = ws.Range("A1:A100").Find(" : ", lookat:=xlPart, MatchCase:=False)
If re Is Nothing Then MsgBox "la feuille " & ws.Name & " du fichier " & wb.Name & " 'a pas la bonne structure": Exit Sub
dl = re.Row - 2
col = ddjvt(0) + 1 ' colonne du jour sélectionné
'HORAIRE A : 08H05 - 15H25
'HORAIRE B : 10H05 - 17H25
codeP = 28
For i = 5 To dl
If ws.Cells(i, 1) <> "" Then
co = ws.Cells(i, col)
Select Case co
Case "RH", "CA", "FE", "FOR"
Case "P"
If codeP < 35 Then
wsp.Cells(codeP, "k") = ws.Cells(i, 1)
codeP = codeP + 1
End If
End Select
End If
Next i
wb.Close False
End Sub
Function ddjok(ddj)
'fonction de validation d'une date format j/m/a
Dim ddjv(0 To 2) As Long
ddjok = False
ddjvt = Split(ddj & "/", "/")
If UBound(ddjvt) <> 3 Then Exit Function
If Len(ddjvt(2)) <> 2 And Len(ddjvt(2)) <> 4 Then Exit Function
For i = 0 To 2
If Not IsNumeric(ddjvt(i)) Then Exit Function
ddjv(i) = CLng(ddjvt(i))
Next i
If ddjv(1) > 12 Or ddjv(1) = 0 Then Exit Function
Select Case ddjv(1)
Case 1, 3, 5, 7, 8, 10, 12
If ddjv(0) > 31 Then Exit Function
Case 4, 6, 9, 11
If ddjv(0) > 30 Then Exit Function
Case 2
If ddjv(0) > (28 + IIf((ddjv(2) Mod 4) = 0, 1, 0)) Then Exit Function
Case Else
Exit Function
End Select
ddjok = True
End Function
Function moisok(ddj)
'fonction de validation d'une date format j/m/a
Dim ddjv(0 To 1) As Long
moisok = False
ddjvt = Split(ddj & "/", "/")
If UBound(ddjvt) <> 2 Then Exit Function
For i = 0 To 1
If Not IsNumeric(ddjvt(i)) Then Exit Function
ddjv(i) = CLng(ddjvt(i))
Next i
If ddjv(0) > 12 Or ddjv(0) = 0 Then Exit Function
If Len(ddjvt(1)) <> 2 And Len(ddjvt(1)) <> 4 Then Exit Function
moisok = True
End FunctionBonjour,
ce message indique que tu dois choisir de sauver le fichier avec les macros, donc avec l'extension .xlsm (à choisir dans la liste des formats de fichiers au moment de la sauvegarde)
Bonjour,
Je pense avoir bien fait la manoeuvre, voici ou j'en suis :
Quand je clique sur 'générer planning du jour', il m'apparait cette fenêtre
Je mets donc la date du 01/07/25, et OK, et ce message d'erreur apparait :
Et en cliquant sur Débogage cela m'envoi sur cette ligne :
Merci pour ta grande patience d'ailleurs...
Sache que j'ai eu une fois un deux un message d'erreur m'indiquant une utilisation de macro interdite par l'administrateur, que ce ficher peut être modifié par des tiers car dans un emplacement en réseau (alors qu'il est bien sur mon disque à moi, et non pas le dossier partage que nous avons en commun, etc). Mais cela semble être passé pour le moment.
bonjour,
ce message d'erreur signifie qu'il ne trouve pas la feuille nommée "instructions" dans le classeur qui contient les macros.
Ok je comprends, mais pour autant je n'ai aucun fichier excel ou classeur appartenant à un fichier excel portant ce nom. Que puis-je faire ?
bonjour,
le fichier feuille-du-jour-cuisine.xlsx que j'ai mis jeudi à 15:01 contient bien cette feuille. As-tu bien suivi les instructions que j'ai fournies ? c'est dans ce fichier qu'il faut mettre les macros.


