calendrier excel

Laetitia L

XLDnaute Junior
Bonjour à tous,
Je travaille toujours sur un calendrier automatisé sur Excel.
Ma question est assez complexe, j'espère que quelqu'un pourra m'aider
Sur l'onglet calendrier, un calendrier automatisé renvoi aux dates de l'onglet "instructions" avec une liste de lieux sur chaque dates.
Je souhaiterai que si on renseigne un nombre de jours dans les colonnes D du calendrier, ce nombre apparaisse sur la bonne cellule de l'onglet instruction en fonction du lieux et de la date. Ce qui permettrait alors de décaler automatiquement le lieux dans le calendrier.
D'autre part, certains lieux ne peuvent être fixés que sur certains jours de la semaine. Il faudrait alors que ce décalage ne puisse se faire que sur les jours indiqués. Et certains lieux n'ont pas de particularité, je peux les décaler du nombre de jours que je souhaite.

J'espère que je ne vous ai pas perdu avec mes explications
Le fichier est en PJ
 

Pièces jointes

  • PROGRAMMATION-MAJ 2 - Copie.xlsx
    4.3 MB · Affichages: 107

vgendron

XLDnaute Barbatruc
Euh.... peux tu reposter ton fichier?
parce que
1) dans la dernière version que j'ai envoyée post 42: pas de 15 février 2019 à décaler pour Héricourt
2) la macro pour les décalages, était l'ancienne quand il n'y avait pas la colonne Q
et qui en plus mettait des D..
il faut la remplacer par celle ci
VB:
Sub DécalageToInstructions()
 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual

With Sheets("Calendrier")
     nbcol = .Range("TabCalend").Columns.Count 'nb de colonnes dans la zone TabCalend
     nblig = .Range("TabCalend").Rows.Count 'Nb de lignes à parcourir dans la zone TabCalend
     For i = 1 To nbcol Step 7 'on parcourt les dates de la zone "TabCalend" qui sont une colonne sur 4
         For j = 1 To nblig 'pour chaque ligne
             ville = .Range("TabCalend").Item(j + 1, i) 'on récupère la ville
             IndJour = (Int(j / 9) Mod 9) * 9 'numéro de ligne de la date à prendre en compte
             Jour = .Range("TabCalend").Item(IndJour + 1, i) 'la date
             Decalage = .Range("TabCalend").Item(j + 1, i + 2) 'on récupère le décalage
              If ville <> "" And Decalage <> "" And Decalage <> "D" Then 'si il y a une ville ET un décalage
                 With Sheets("instructions") 'dans la feuille Instructions
                     Set ici = .Range("TabInst").Find(ville, lookat:=xlWhole) 'on cherche le nom EXACT de la ville
                     If Not ici Is Nothing Then 'si on l'a trouvée
                         .Range("O" & ici.Row) = Decalage 'on met le décalage dans la colonne P de la meme ligne
                     End If
                 End With
                 .Range("TabCalend").Item(j + 1, i + 2).ClearContents 'on efface le décalage de la feuille Calendrier
             End If
         Next j
     Next i
End With

 Application.Calculation = xlCalculationAutomatic
 Application.ScreenUpdating = True

End Sub
 

Laetitia L

XLDnaute Junior
Bonjour,
Je vous renvoi le fichier (PJ) je n'ai rien modifié dessus, et la macro décalage ne fonctionne toujours pas. J'ai juste mis en violet les lignes ou il y a des particularités par rapport aux dates, certaines par exemple doivent être le lundi et le mardi à la suite. Je ne sais pas si il est possible de les intégrer dans la macro ...
 

Pièces jointes

  • PROGRAMMATION-MAJ 10 MACRO.xlsm
    1.3 MB · Affichages: 25

vgendron

XLDnaute Barbatruc
Et moi je ne comprend pas ou ca ne va pas..
Morez-Lycee Berard (Ligne 156)
si on efface TOUS les décalages
Dernière collecte au Mercredi 05 déc 2018 ===> Toutes les collectes tombent un mercredi: 30Janv2019 --> 27Mars --> 22Mai -->17Juillet...

depuis Calendrier: je mets décalage = 1
==> on commence toujours au Mercredi 05 dec 2018 puis 30 Janv ==> mais le 27 mars est bien devenu le Jeudi 28Mars.. puis les suivantes passent un jeudi

Depuis Instructions, je rajoute un décalage de 2 dans le décalage 2(colonneQ) ===> à partir de la collecte 3, tout est décalé au samedi...


donc.. non. je ne vois pas ou est le problème...??

Dans le doute....quand tu ajoutes un décalage dans Calendrier.. il faut cliquer sur "Reporter décalage" PUIS dans instructions, cliquer sur "Calculer Dates de collecte"
si tu ajoutes un décalage directement dans Instructions==> il faut cliquer sur le bouton ...
 

vgendron

XLDnaute Barbatruc
Quand on met un décalage de 1 dans la colonne O, il décale la 2ème collecte en colonne P et pas en colonne N.
bah si...
du mercredi 30 janvier, on décale de 1 jour (ColO) pour arriver au Jeudi 28Mars (ColP)
ensuite.. pour passer de ColP à Col R, on applique le délai entre collectes.. 56 Jours ==> donc le Jeudi 23 Mai
Si tu veux encore décaler d'un jour, il faut mettre 1 dans la colonne Q...

La colonne N ne sert QUE à passer de la colonne M au prochain jour autorisé.. (pas de décalage pris en compte)
 

Laetitia L

XLDnaute Junior
Alors je pense qu'il y a une erreur dans la macro car les lieux dans le calendrier ne se déplacent pas automatiquement alors que j'ai utilisé les 2 macros. Et j'ai un beug, il s'ouvre quand je fais marcher la macro décalage dans le calendrier
upload_2018-7-11_20-42-44.png
 

Laetitia L

XLDnaute Junior
Et, le décalage de la 1ere collecte se fait en colonne L, le décalage de la 2eme collecte se fait en colonne O, effectivement quand on est sur l'onglet "instructions", les décalages se font bien au bon endroit. Mais quand on fait les décalages sur le calendrier, le décalage de la 1ere collecte se fait sur la colonne O alors que ça devrait être fait sur la colonne L
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib