1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

calendrier excel

Discussion dans 'Forum Excel' démarrée par Laetitia L, 6 Juin 2018.

  1. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    bon.. j'ai repris et voici une correction..
    avec des commentaires dans le code pour que tu puisses suivre
     

    Pièces jointes:

  2. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    avec plus de commentaires
    Code (Visual Basic):

    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 4 '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 + 1) 'on récupère le décalage
                 If ville <> "" And decalage <> "" 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("P" & 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 + 1).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
     
     
  3. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    Merci pour ces explications. Par contre, la table Inc ne fonctionne pas quand je remplace le numéro des collectes dans la formule, même quand je rajoute le nom des collectes (_8emecollecte, ...) ...
     
  4. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    et avec ce qu'il y a dans la macro, je pensais qu'il suffisait de mettre à jour la table inst comme vous l'avez dit, mais les décalages ne se font toujours pas
     
  5. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    Hello
    Je ne vois pas ce que tu veux dire..
    de quelle formule parles tu? remplacer quoi par quoi??
     
  6. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    Hello
    Dans l'onglet "calendrier" pour les formules dans les lieux de collectes, la formule :
    --> =SIERREUR(INDEX(lieux_collectes;PETITE.VALEUR(SI((ESTNUM(CHERCHE(Calendrier!B$38;ENT(Premiere_collecte:Deuxieme_collecte:Troisieme_collecte:Quatrieme_collecte:Cinquieme_collecte:Sixieme_collecte:Septieme_collecte))))*(NB.SI(B$38:B38;lieux_collectes)=0);LIGNE(lieux_collectes)-1);1));"")
    ne prend en compte que les collectes jusqu'à la 7eme, j'en ai rajouté d'autres, il faut donc aller jusqu'à la 14ème collecte, je les ai nommé pour pouvoir les intégrer dans cette formule, mais ça ne fonctionne pas
     
  7. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    Dans la version ci jointe (Rev8)
    j'ai repris mon dernier fichier qui fonctionnait avec les macros modifiées
    et j'ai ajouté UNE collecte (j'ai modifié les noms. Collecte_xx) et changé leur définittion. plus simple à recopier

    j'ai donc aussi modifié la formule pour le 31 décembre 2018
    et j'ai toujours le meme (bon?) résultat..
    il faut juste penser à faire F9 pour recalculer la feuille.. ton fichier était passé en mode calcul manuel..
     

    Pièces jointes:

  8. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    Merci, j'ai remodifié la formule pour qu'il puisse prendre toutes les colonnes des collectes.
    Mais la macro décalage ne fonctionne pas. Pouvez vous faire quelque chose ? (utiliser le fichier en pj)
     

    Pièces jointes:

  9. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    Bonjour

    déjà.. reprend la dernière macro qui fonctionne dans mon fichier.........
    et essaie de comprendre comment ca fonctionne plutot qu'un "simple" Ca marche pas...
     
  10. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    Ci jointe LA macro
    Code (Visual Basic):

    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 4 '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 + 1) 'on récupère le décalage
                 If ville <> "" And decalage <> "" 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("P" & 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 + 1).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

     

    et evidemment.. si tu ajoutes des colonnes (Q entre les dates et le Decalage) sans prévenir.. ca va pas bien fonctionner..
    et je ne m'amuse pas à comparer ligne à ligne et colonne à colonne toutes les versions de fichier qui sont envoyées...donc.. si la structure du fichier change.. je ne le vois pas...
     
  11. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    Je comprends votre réaction mais je n'arrive pas à comprendre la macro, je ne pensais pas que les modifications que j'ai apporté à l'outil avaient des conséquences sur la macro. J'ai testé différentes modifications, sans succès car je ne maitrise pas le codage.
     
  12. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    For i = 1 To nbcol Step 4 'on parcourt les dates de la zone "TabCalend" qui sont une colonne sur 4 --> en mettant un 6 puisque j'ai rajouté 2 colonnes
    IndJour = (Int(j / 9) Mod 9) * 9 --> à quoi correspond la ligne 9 ?
    .Range("P" & ici.Row) = decalage : Doit-on mettre le décalage dans la colonne O
     
  13. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    For i = 1 To nbcol Step 4 'on parcourt les dates de la zone "TabCalend" qui sont une colonne sur 4 --> en mettant un 6 puisque j'ai rajouté 2 colonnes
    ==> c'est exact

    IndJour = (Int(j / 9) Mod 9) * 9 --> à quoi correspond la ligne 9 ?
    ==> comme on parcourt le calendrier ligne par ligne, et qu'il y a plusieurs dates sur une colonne (et 7 villes par date), il faut lui dire à quelle ligne récupérer la date
    Cette ligne change toutes les 9 lignes....

    .Range("P" & ici.Row) = decalage : Doit-on mettre le décalage dans la colonne O
    ==> effectivement. si le décalage est en colonne O au lieu de P.. il faut lui dire: La macro n'est pas capable de détecter toute seule le changement de place d'une colonne (sauf dans le cas de table Excel et de zones nommées)

    Pour t'aider à comprendre la macro (je ne vois pas quel commentaire je peux ajouter vu que toutes les lignes sont commentées), utilise le mode pas à pas pour executer la macro:
    les lignes de code seront executées une par une (à chaque touche F8) tu pourra ainsi suivre ce qu'elle fait..
     
  14. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    Bonjour,
    J'ai compris la macro, je n'aurai plus besoin de vous embêter avec ça.
    Je tiens vraiment à vous remercier pour votre aide, je n'y serais pas arrivé autrement.

    Si ça ne vous ennuie pas j'aurai une autre petite problématique :
    Dans les formules des dates, je prends en considération un seul jour

    pour la première collecte :
    =SIERREUR(M2+EQUIV(F2;TEXTE(M2+{1;2;3;4;5;6;7};"jjjj");0);M2)
    pour les collectes suivantes :
    =SIERREUR(N2+K2+O2+EQUIV(F2;TEXTE(N2+K2+O2+{1;2;3;4;5;6;7};"jjjj");0);N2+K2+O2)

    Dans ces 2 formules, la cellule F2 correspond à un mardi. Dans les colonnes suivant F, il peut y avoir d'autres colonnes avec d'autres jours.
    J'aimerai savoir comment il est possible de les intégrer dans la formule, afin que la date ne soit pas bloqué à un seul jour de la semaine dans le calendrier.
    J'ai essayé avec un OU et un ET sans succès.
     

    Pièces jointes:

  15. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    Hello
    pas sur de comprendre ce que tu souhaites afficher..
    un essai pour la fomrule en P6
    Code (Visual Basic):
    =TEXTE(SIERREUR(N6+K6+O6+EQUIV($F$6;TEXTE(N6+K6+O6+{1;2;3;4;5;6;7};"jjjj");0);N6+K6+O6);"[$-F800]jjjj, mmmm jj, aaaa")&CAR(10) &TEXTE(SIERREUR(N6+K6+O6+EQUIV($G$6;TEXTE(N6+K6+O6+{1;2;3;4;5;6;7};"jjjj");0);N6+K6+O6);"[$-F800]jjjj, mmmm jj, aaaa")

    à noter que ca va te faire des formules à rallonge avec gros risque d'erreur...
    peut etre une solution par fonction personalisée serait plus adaptée.?
     
  16. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    Ce n'est pas exactement le résultat que je cherche
    La les 2 résultats apparaissent dans la cellule
    Ce que je souhaiterai, c'est que dans le calendrier, si un lieux peut être pris un mardi, un mercredi et un jeudi (comme indiqué en colonne F G et H). Il faudrait que la cellule qui calcule les dates des collectes prennent en compte ces 3 possibilités.
    De sorte à ce que si on veut décaler un lieux du mardi au mercredi on puisse le faire. Et qu'on ne soit pas obligé de décaler le lieux une semaine après car on a pris en compte qu'une seule possibilité de jour.
    J'espère que j'ai été assez claire ...
     
  17. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    bon. je viens de jeter un oeil aux formules..
    déjà. un souci à régler avant..
    expliquer le fonctionnement
    1) Colonnes de E à I
    *Colonne E : numéro du jour de préférence
    * Colonnes FGH = les jours séparés identifiés en colonne E
    *Colonne I = particularités pour certaines journées: soir matin, ou autre...
    Correct jusque la?

    2) Colonne J
    Toutes les lignes sont rentrées manuellement

    3) Colonne K: Ccalcul pour le nombre de jours entre 2 collectes
    4) Colonne L: Décalage rempli par la macro
    5) Colonne M: pourquoi le Nbr de jour entre 2 collectes est parfois rempli à la main, plutot qu'une référence à la colonne K?
    ==> en gros. toutes les lignes n'ont pas la meme formule..
    Exemple De M1 à M5: le nombre 56 est rentré à la main dans la formule alors qu'il est dispo en colonne K
    en M6: tu fais encore: J6+56+L6 alors que en K6, tu as calculé 82.5..?
    et en M9: tu mets la formule qui (à mon avis) devrait apparaitre sur TOUTES les lignes: =J9+K9+L9
    en M228: tu ne mets carrement plus le nbre de jours entre 2 collectes: =J228+L228

    6) Colonne N
    On cherche le jour de la colonne F situé juste après la date de première collecte (colonne M)
    ex: Colonne M = mardi 15 sept 2018
    Colonne F= jeudi
    ==> Colonne N = Jeudi 17 sept 2018
    au pire. on se retrouve avec une date à +7 jours

    7) Colonne O: Décalage
    8) Colonne P: c'est comme la colonne N, SAUF que le calcul part de la date col N + le nbr de jour entre 2 collectes + le décalage..

    etc etc..
    ca, c'est dans le cas ou il n'y a QU'UN seul jour "préférence"

    maintenant. je ne comprend pas le besoin du cas ou il y en a 2.. ou 3: Exemple Ligne 16

    Sont préférés Vendredi OU samedi
    on est au samedi 20 Oct en col J
    ==> on arrive à une 1ere collecte le sam 15 dec (colonne M)
    ==> en N: on arrive au vendredi 21 dec 2018 (on a tenu compte QUE du vendredi autorisé)
    MAIS si on avait tenu aussi compte du Samedi... tu aurais voulu avoir quoi en colonne N??

    à priori. quand tu spécifies plusieurs jours autorisés.. ils sont classés dans l'ordre..
    et donc.. tes formules te decalent au jour le plus proche..

    si tu autorises jeudi ou vendredi.. forcément le premier sera trouvé..(sauf si'l y a une autre condition que je ne vois pas)
    et du coup. ca ne sert à rien de préciser aussi le vendredi...

    Bref. dans quel cas (quelle ligne) as tu un souci et pour lequel tu veux une modif de formule..?


    je viens de relire ton post
    ok, je pense avoir compris..
    maintenant.. comment faire.....bonne question....j'essaie d'y refléchir.. ...
     
    Dernière édition: 5 Juillet 2018
  18. Laetitia L

    Laetitia L XLDnaute Nouveau

    Inscrit depuis le :
    7 Mai 2018
    Messages :
    45
    "J'aime" reçus :
    0
    1) Colonnes de E à I
    *Colonne E : numéro du jour de préférence
    * Colonnes FGH = les jours séparés identifiés en colonne E
    *Colonne I = particularités pour certaines journées: soir matin, ou autre...
    Correct jusque la? oui

    2) Colonne J
    Toutes les lignes sont rentrées manuellement oui

    3) Colonne K: Ccalcul pour le nombre de jours entre 2 collectes oui
    4) Colonne L: Décalage rempli par la macro oui
    5) oui j'ai refais des modifications sur le fichier, j'y suis allée étape par étape donc il y a des coquilles, mais je suis d'accord avec vous j'ai modifié le fichier

    6) Colonne N
    On cherche le jour de la colonne F situé juste après la date de première collecte (colonne M)
    ex: Colonne M = mardi 15 sept 2018
    Colonne F= jeudi
    ==> Colonne N = Jeudi 17 sept 2018
    au pire. on se retrouve avec une date à +7 jours
    oui, je n'ai pas compris pourquoi il y avait un décalage d'une semaine alors que ça tombe un bon jour, je n'ai pas trouvé de moyens pour éviter ça.

    7) Colonne O: Décalage (de la 1ere collecte)
    8) Colonne P: c'est comme la colonne N, SAUF que le calcul part de la date col N + le nbr de jour entre 2 collectes + le décalage..

    etc etc..
    ca, c'est dans le cas ou il n'y a QU'UN seul jour "préférence" Exactement

    maintenant. je ne comprend pas le besoin du cas ou il y en a 2.. ou 3: Exemple Ligne 16

    Sont préférés Vendredi OU samedi
    on est au samedi 20 Oct en col J
    ==> on arrive à une 1ere collecte le sam 15 dec (colonne M)
    ==> en N: on arrive au vendredi 21 dec 2018 (on a tenu compte QUE du vendredi autorisé)
    MAIS si on avait tenu aussi compte du Samedi... tu aurais voulu avoir quoi en colonne N??

    Justement, ce n'est pas un problème que la formule prenne en compte le premier jour spécifié, mais il faudrait qu'il prenne en compte le 2eme jour également, au cas ou on voudrait décaler dans le calendrier une date au 2eme jour spécifié.
     
  19. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    ok, j'ai donc à peu près compris..
    encore une question.. ou deux...

    1) Ligne 6: autorisés Jeudi ou Vendredi
    colJ: vendredi 20 juillet
    ColM: on ne s'occupe PAS des jours autorisés.. on fait juste +colK + Col L ==> Correct?
    ==> finalement la colonne L, ne sert pas à grand chose.. d'ailleurs.. elle est vide..
    donc ColM=Mercredi 10 oct 2018 (Mercredi n'étant pas dans la liste des jours)

    ColN: on S'OCCUPE des jours autorisés: on passe donc directemnent au jour autorisé le plus proche: ici. le Jeudi 11 oct 2018
    (dans le cas ou on est déjà sur le jour autorisé.. il ne faut pas faire +1 semaine.. mais rester sur le jour: correct?)

    Col P: On tient compte de la colK (NbrJourEntre Coll) ET col L (décalage) ET Jours précis..
    THE question:
    le décalage s'applique à quoi?
    Toujours dans la ligne 6: on part du jeudi 11 Oct 2018 avec Décalage =0 ??:
    * NbrJourEntre Coll =82.5 ===>on arrive donc au Mardi 1er Janvier 2019
    * Decalage=0 ==> 01 Janvier 2019
    *Jour Précis (jeudi ou vendredi)===> on passe au plus proche ==> Jeudi 03 Janvier 2019

    Toujours dans la ligne 6: on part du jeudi 11 Oct 2018 avec Décalage =1 ??:
    * NbrJourEntre Coll =82.5 ===>on arrive donc au Mardi 1er Janvier 2019
    * Decalage=1 ==> mercredi 2 Janvier 2019 (ca revient juste à ajouter un jour entre deux collectes.)
    *Jour Précis (jeudi ou vendredi)===> on passe au plus proche ==> Jeudi 03 Janvier 2019

    OU ALORS.. le décalage s'applique APRES le jour précis
    * NbrJourEntre Coll =82.5 ===>on arrive donc au Mardi 1er Janvier 2019
    *Jour Précis (jeudi ou vendredi)===> on passe au plus proche ==> Jeudi 03 Janvier 2019
    * Decalage=1 ==> Vendredi 4 Janvier 2019 (qui est un jour autorisé)
    ==> avec un décalage de 2: on serait donc arrivé à Jeudi 10 Janvier 2019...


    Dernière question: as tu besoin de voir les formules dans ton tableau ou une macro qui mettrait directement le résultat ferait l'affaire?
    j'ai peur qu'avec une fonction personalisée.. ce soit très long d'execution..
     
  20. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    4940
    "J'aime" reçus :
    504
    Utilise:
    Excel 2007 (PC)
    autre question
    Colonnes E, F G et H
    laquelle remplis tu en premier??
    ==>Si tu remplis uniquement la colonne E (toujours sur le meme schéma : 2 OU 3) les colonnes FGH pourraient etre remplis automatiquement
    et plutot que taper 2 OU 3, ce serait plus simple de taper 2;3
     
Chargement...
Discussions similaires - calendrier excel Forum Date
XL 2003 Calendrier thunderbird en fichier Excel Forum Excel 22 Novembre 2017
MAC Calendrier ROLAND M compatibilité Excel MAC Forum Excel 26 Janvier 2017
Créer un lien entre un planning excel et le calendrier outlook Forum Excel 5 Janvier 2017
Creer une feuille excel animee avec des photos, texte avec un calendrier a un endroit Forum Excel 13 Juin 2016
bug avec excellent calendrier de Roland_M Forum Excel 5 Juin 2016

Partager cette page