Bonjour le Forum
Bonjour LouReed
J'ai testé ta proposition et ayant un message d'erreur sur la Ligne
whith Range("ZonePlanning")
Je l'ai modifié et voici le code qui fonctionne comme je le voulais grâce à toi, en plus avec les commentaires Merci
Une partie que j'ai compris, une autre, je vais rechercher sur le forum, ou Net.
Sub MiseaJour()
Dim R, I As Long, Durée As Integer
' on arrête la mise à jour de l'écran
Application.ScreenUpdating = False
' avec la plage du planning
With Sheets("GMP").Range("ZonePlanning")
' on efface toutes les valeurs
.ClearContents
' on efface toutes les couleurs
.Interior.Color = xlNone
' on aligne les cellules à gauche
.HorizontalAlignment = xlLeft
End With
' ici gestion d'erreur au cas où
On Error Resume Next
' on parcours les lignes d'activité, il faudra mettre les valeurs en variables afin de le rendre adaptable au tableau
For I = 6 To 24
' s'il y a une date de début
If Cells(I, 5) <> "" Then
' on recherche cette date et on récupère sa position dans la plage "calendrier"
R = Application.Match(Cells(I, 5), Range("Calendrier"), 0)
' si on trouve la date
If R > 0 Then
' on récupère la durée de l'activité en faisant une soustraction date de fin, date de début auquel on rajoute 1
Durée = Cells(I, 6) - Cells(I, 5) + 1
' on inscrit la zone d'activité dans la première cellule de la plage
Cells(I, R + 8).Value = Cells(I, 7) & " " & Cells(I, 3)
' on aligne cette valeur sur la longueur de la plage si plus d'une cellule
If Durée > 1 Then Cells(I, R + 8).Resize(, Durée).HorizontalAlignment = xlCenterAcrossSelection
' on la met en couleur en fonction de la couleur en colonne A
Cells(I, R + 8).Resize(, Durée).Interior.Color = Cells(I, 1).DisplayFormat.Interior.Color
End If
End If
Next I
End Sub
Par contre
' on parcours les lignes d'activité, il faudra mettre les valeurs en variables afin de le rendre adaptable au tableau
Je ne comprends pas cette phrase.
Encore Merci
Maintenant il me reste à mettre l'ensemble de ce projet de mon PC perso sur mon Pro.
Je suis confiant
Bonne fin de journée à tous