Sub planning()
NbPersonnes = Sheets("Avancement").Range("A" & Rows.Count).End(xlUp).Row - 3 'dans la feuille avancement colonne A, récupère le numéro de la dernière ligne NON vide et -3 (première ligne commence à 3) pour en déduire le nombre de personnes
With Sheets("Planning case").Range("B8").Resize(NbPersonnes, 125) 'dans la feuille Planning, on sélectionne le tablo qui commence en B8 - sur NbPersonnes lignes et 125 colonnes
.ClearContents 'on efface le contenu
With .Interior 'et on remet le remplissage de couleur à vide
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
For i = 1 To NbPersonnes 'pour chaque personne
Employé = Sheets("Avancement").Range("A" & i + 3) 'on récupère le nom de l'employé
With Sheets("Planning case") 'on le cherche dans la colonne A du Planning (utile si les noms ne sont pas triés
Set ici = .Range("A8").Resize(NbPersonnes).Find(Employé, lookat:=xlWhole)
If Not ici Is Nothing Then
Ligne = ici.Row 'on récupère son numéro de ligne
End If
End With
For j = 3 To 9 Step 2 ' on est dans la feuille Avancement: on se déplace de la colonne 3 (C) à 9 (I) par pas de 2: C - E - G - I
Atelier = Sheets("Avancement").Cells(1, j) 'on récupère le numéro de l'atelier sur la ligne 1
couleur = Sheets("Avancement").Cells(1, j).Interior.ColorIndex 'on récupère la couleur
Debut = Sheets("Avancement").Cells(i + 3, j) 'on récupère le début de l'activité
Fin = Sheets("Avancement").Cells(i + 3, j + 1) 'on récupère la fin de l'activité
With Sheets("Planning case") 'dans la feuille Planning
If Debut <> "" Then 'si Debut n'est pas vide
Set Dela = .Rows(7).Find(Debut, LookIn:=xlValues) 'on cherche la date de début sur la ligne 7
If Not Dela Is Nothing Then
ColDebut = Dela.Column 'on récupère la colonne
Else: Exit For
End If
End If
If Fin <> "" Then 'si Fin n'est pas vide
Set ALa = .Rows(7).Find(Fin, LookIn:=xlValues) 'on cherche la date de Fin sur la ligne 7
If Not ALa Is Nothing Then
ColFin = ALa.Column 'on récupère la colonne
Else: Exit For
End If
Else: ColFin = ColDebut 'si on avait une seule date, on met la fin = début
End If
If Debut <> "" Then
.Cells(Ligne, ColDebut) = Atelier 'on place le numéro de l'atelier
.Cells(Ligne, ColDebut).Interior.ColorIndex = couleur 'et sa couleur
End If
If ColDebut <> ColFin Then 'si on a une DUREE d'activité, on recopie sur toute la durée atelier et couleur
.Range(.Cells(Ligne, ColDebut), .Cells(Ligne, ColFin)).FillRight
.Range(.Cells(Ligne, ColDebut), .Cells(Ligne, ColFin)).Interior.ColorIndex = couleur
End If
End With
Next j
Next i
End Sub