Planning Travaux_Etude

Bonjour à tous

Je sollicite votre aide à trouver une solution à mon problème.
J'ai un fichier de suivi de travaux. Chaque semaine lors de la réunion avec les clients on planifie les activités des semaines à venir (donc on change l'ordre des lignes d'activités )et je place n nombre de personne pour chaque activité à la date souhaité.
Aujourd'hui on aimerais rajouter su le même fichier un planning pour les études à savoir que :
les études de chaque activité doit se dérouler 2 semaines avant la date de démarrage de chantier planifiée.​Une autre étude "TQC" doit se faire 2 semaines après la fin de chaque activité​
Je n'ai pas d'idée claire de ce que je veux faire ou quel solution proposer vu que je ne suis pas expert en excel
Est ce que vous avez des suggestions svp ?Je suis aussi preneur de toute idée d'amélioration

23planning-test.xlsx (125.82 Ko)

Merci

Bonjour,

vous pourriez par exemple rajouter 2 colonnes -une par étude- et avec une formule qui enlèverait ou rajouterait 2 semaines, on pourrait cocher les cellules des semaines correspondantes à droite (dans le planning).

ça serais vraiment bien .Je vous avoue que je suis pas très doué en excel donc je ne saurais pas le faire tout seul. Est ce que vous pouvez m'aider là-dessus ?

Oui, vous pouvez insérer 2 colonnes autour de la colonne E (clic droit en haut de la colonne, insérer, la nouvelle se met à gauche). Et vous y mettez le nom de l'étude.

Ou alors vous ne rajoutez pas de colonne et on se contente de rajouter des X dans les cellules 2 semaines avant et après.

Pour mettre ces X, on a le choix entre formules tapées dans les cellules ou du code VBA.

Mettre des formules posera un souci puisque vous remplissez manuellement le planning, donc j'irais plutôt vers du VBA (que je ne maîtrise pas). Une solution intermédiaire consisterait à rajouter 4 colonnes avec les dates de début et de fin des 2 études basées sur les cellules cochées dans le planning et mettre un code VBA qui va cocher les cellules en fonction de ces dates.

Les 2 études durent à chaque fois 2 semaines, même si l'activité ne dure qu'un ou 2 jours ?

Oui c'est ça il faudra prévoir à chaque fois 2 semaines et 2 semaine après pour les études.

L'idée des dates serait vraiment bien

bonjour KSIKSI1,salut Doux Rêveur,

2 colonnes AD et AE pour les 2 dates des études et puis une MFC

12planning-test-2.xlsx (131.37 Ko)

Je suis en train de voir pour le VBA, voici déjà un 1er jet avec ajout de 4 colonnes pour les dates et ajout d'un mois dans le planning avant les premiers travaux ;

Salut BsAlv, bien vu aussi l'idée de la MFC (pas vu avant).

Je ne parviens à faire ce que j'avais en tête, j'ai tenté ceci mais ça n'a aucun effet ;

Private Sub Workbook_SheetChange(ByVal Target As Range)
    Dim li As Long, co As Long, c As Range
    For li = 6 To 67
    For co = 34 To 240
    For Each c In Range(li, co)
    If Cells(3, co).Value <> "S" Or Cells(3, co).Value <> "D" And Cells(4, co).Value >= Cells(li, 30).Value And Cells(4, co).Value <= Cells(li, 31).Value Then
    c.Value = "PR"
    Next c
End Sub

L'idée est de mettre PR dans les cellules répondant aux critères du code. Et ensuite, je voudrais rajouter PO pour les cellules situées entre les dates mises en colonnes 32 et 33 (AF et AG).

excel planning travaux etude par ksiksi1 b

bonjour Doux Rêveur,

j'ai nommé une plage "MesDates" et puis on a cette macro "Worksheet_Change" dans le module de "planning SW". Les valeurs numériques serotn ignorées et donc ne seront pas écrasées/modifiées par la macro. On fait tout en mémoire parce que cela est plus vite ! Je pense que certaines formules ne sont pas encore comme il faut. On peut ajouter 4 MFCs pour surlignes les valeurs "PR", "PO" et numériques et puis les weekends

Merci BsAlv, joli mais je n'y comprends pas grand chose.

Est-il possible de faire une autre version basée sur mon code en modifiant juste ce qui doit l'être pour que ça marche ?

Merci énormément . Le fichier de BSAlV est nickel .

Encore merci à Doux rêveur pour la solution .

Merci

@Doux Rêveur,

la macro "EOn" estpour réactiver les évenements quand la macro est arrêté quelque part au milieu.

Merci, ça reste assez complexe.

Ma 1ère tentative était celle-ci mais ne donnait rien non plus ;

Private Sub Workbook_SheetChange(ByVal Target As Range)
    Dim li As Long
    Dim co As Long
    For li = 6 To 67
    For co = 34 To 240
    If Cells(3, co).Value <> "S" Or Cells(3, co).Value <> "D" And Cells(4, co).Value >= Cells(li, 30).Value And Cells(4, co).Value <= Cells(li, 31).Value Then
    Cells(li, co).Value = "PR"
    End If
    Next co
    Next li
End Sub

Dans le principe elle ressemble à ta dernière proposition mais il doit manquer un truc .

re,

c'est mieux comme ceci ?

Merci, il m'a l'air très proche du précédent.

Pas grave, ils fonctionnent tous.

Mais je n'ai pas encore compris où était mon erreur.

vous avez vérifié la condition "PR", mais il y a encore les autres conditions (PO, vide et numérique) à vérifier ...

If Cells(li, co).Value <> "" And IsNumeric(Cells(li, co).Value) Then

                    ElseIf Cells(3, co).Value = "S" Or Cells(3, co).Value = "D" Then
                         Cells(li, co) = ""
                    ElseIf Cells(4, co).Value >= Cells(li, 30).Value And Cells(4, co).Value <= Cells(li, 31).Value Then
                         Cells(li, co).Value = "PR"
                    ElseIf Cells(4, co).Value >= Cells(li, 32).Value And Cells(4, co).Value <= Cells(li, 33).Value Then
                         Cells(li, co).Value = "PO"
                    Else
                         Cells(li, co).Value = ""
                    End If

Merci pour ta patience !

J'ai essayé ceci mais ça n'a toujours aucun effet

Private Sub Workbook_SheetChange(ByVal Target As Range)
    Dim li As Long
    Dim co As Long
    For li = 6 To 67
    For co = 34 To 240
    If Cells(li, co).Value <> "" And IsNumeric(Cells(li, co).Value) Then
                    ElseIf Cells(3, co).Value = "S" Or Cells(3, co).Value = "D" Then
                         Cells(li, co) = ""
                    ElseIf Cells(4, co).Value >= Cells(li, 30).Value And Cells(4, co).Value <= Cells(li, 31).Value Then
                         Cells(li, co).Value = "PR"
                    ElseIf Cells(4, co).Value >= Cells(li, 32).Value And Cells(4, co).Value <= Cells(li, 33).Value Then
                         Cells(li, co).Value = "PO"
                    Else
                         Cells(li, co).Value = ""
                    End If
    Next co
    Next li
End Sub

re,

pour éviter les evenements, j'utilise un bouton "Macro en cellule AD2

Merci, ça marche comme ça. Mais curieusement ça prend 11 secondes pour arriver au résultat.

Et si je mets ton code sur la feuille (donc pas dans un module), rien ne se passe.C'est peut-être mon pc qui est trop lent pour ce code.

C'est étonnant parce que c'est la 1ère fois que j'ai un code qui met autant de temps, il ne porte pourtant pas sur des milliers de lignes ou de colonnes.

re,

chaque interaction avec la feuille coût du temps (très peu mais la somme peut être considèrable), donc il faut minimaliser tout cela. Ma première macro lit les choses nécessaires en matrices (sorte de tableaux en mémoire) puis fait ce qu'il est nécessaire et colle le résultat dans la feuille, donc il y a au max 5 interactions, = extrèmement vite. La dernière macro, il y a plusieurs interactions par cellule et la somme était votre 11 sec ...

Nouveau fichier, 2 valeurs temporaire en mémoire, old_ et new_. On lit chaque le contenu d'une cellule dans "Old_" et écrase la valeur de "New_". Chaque ligne on lit le contenu des 4 cellules pour les jours d'étude 1 fois dans la matrice aEtudes. Et puis on fait les comparaisons et le résultat on le sauvegarde dans le variable "New_". Au bout du boucle, si "New_" a reçu une autre valeur qui est différente de "Old_", on écrase la cellule. Résultat, on ne lit qu'une fois le contenu de chaque cellules au lieu de plusieurs fois (compte le nombre de ".Cells(li, co)" dans l'ancienne macro et comparez-le avec le nombre dans la nouvelle macro) et dans une minorité de fois, on écrase cette cellule avec une nouvelle valeur. Résultat : gagne de temps énorme. Pour le moment, ce temps, c'est environ 0.35-0.40 sec avec mon ordinateur (0.35 si rien ne change, 0.40 sec avec de changements), donc 30 fois plus vite,

Bon, mon premier fichier, il est encore 10 fois plus vite que ce dernier fichier, je vous propose que vous mettez un nouveau chiffre quelque part dans la plage pour voir le resultat

il y a une ligne avec "If (New_ <> Chr(1) And New_ <> Old_) Or 1 Then .Cells(li, co).Value2 = New_, modifiez ce 1 en 0 pour voir le résultat = la différence entre écraser chaque cellule ou seulement si sa valeur est modifiée.

EDIT : un autre fichier en PJ

Rechercher des sujets similaires à "planning travaux etude"