Dans un fichier, j'ai 2 feuilles (Pour faire simple, je vais prendre
l'exemple d'élèves) :
Dans la première (BdeD), j'ai une liste de noms en colonne A (longueur
indéfinie) et un numéro de bureau en colonne B.
Dans la seconde (Plan), j'ai une sorte de plan avec les N° de bureaux.
Comme il y en a un peu partout, j'ai défini un Nom avec une plage
discontinue (ListeTables ='Plan de la salle'!$B$2:$AA$2;'Plan de la
salle'!$B$4:$AA$4...
Ce que je souhaite faire en VBA :
Parcourir toutes les cellules de la "ListeTables", chaque fois que la
macro trouve le même numéro dans la "BdeD", mettre sur le plan le nom
d'élève correspondant(le mettre dans la cellule en dessous du numéro de
bureau).
Toutes les cellules de mon plan, n'ont pas forcément un nombre
correspondant dans la BdeD.
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir Dis moi !!!!!
Salut Julie
Espérant avoir bien compris ton attente
soit feuil1 colonne A les noms colonne B les numéros
soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4")
Sheets("Feuil1").Activate
Range("B1").Activate
On Error Resume Next
Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c,
After:=Range("B1"), LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
If ActiveCell.Address <> Range("B1").Address Then
c.Offset(1, 0) = Range("A" & ActiveCell.Row)
End If
Next
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir Dis moi !!!!!
JulieH
Bonjour et merci pour ta réponse,
Je ne suis pas sùre de m'être bien expliquée. En tous les cas, je ne m'en sors pas avec ton code. J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir Dis moi !!!!!
Bonjour et merci pour ta réponse,
Je ne suis pas sùre de m'être bien expliquée. En tous les cas, je ne
m'en sors pas avec ton code.
J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie
Espérant avoir bien compris ton attente
soit feuil1 colonne A les noms colonne B les numéros
soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4")
Sheets("Feuil1").Activate
Range("B1").Activate
On Error Resume Next
Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c,
After:=Range("B1"), LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate
If ActiveCell.Address <> Range("B1").Address Then
c.Offset(1, 0) = Range("A" & ActiveCell.Row)
End If
Next
Je ne suis pas sùre de m'être bien expliquée. En tous les cas, je ne m'en sors pas avec ton code. J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir Dis moi !!!!!
francois.forcet
Rebonjours Julie
Tes explications étaient parfaites Je les avais bien cernées Il fallait seulement bien adapter mon code en fonction de ton document (Nom onglet, colonnes concernées) Et tout baigne je pense Ci-joint ton document corrigé avec ma Macro "Traitement"
Tes explications étaient parfaites
Je les avais bien cernées
Il fallait seulement bien adapter mon code en fonction de ton document
(Nom onglet, colonnes concernées)
Et tout baigne je pense
Ci-joint ton document corrigé avec ma Macro "Traitement"
Tes explications étaient parfaites Je les avais bien cernées Il fallait seulement bien adapter mon code en fonction de ton document (Nom onglet, colonnes concernées) Et tout baigne je pense Ci-joint ton document corrigé avec ma Macro "Traitement"
Je ne suis pas sùre de m'être bien expliquée. En tou s les cas, je ne m'en sors pas avec ton code. J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activ ate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir Dis moi !!!!!- Masquer le texte des messages précédents -
On 31 mar, 14:13, JulieH <jul...@discussions.microsoft.com> wrote:
Bonjour et merci pour ta réponse,
Je ne suis pas sùre de m'être bien expliquée. En tou s les cas, je ne
m'en sors pas avec ton code.
J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie
Espérant avoir bien compris ton attente
soit feuil1 colonne A les noms colonne B les numéros
soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4")
Sheets("Feuil1").Activate
Range("B1").Activate
On Error Resume Next
Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c,
After:=Range("B1"), LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activ ate
If ActiveCell.Address <> Range("B1").Address Then
c.Offset(1, 0) = Range("A" & ActiveCell.Row)
End If
Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir
Dis moi !!!!!- Masquer le texte des messages précédents -
Je ne suis pas sùre de m'être bien expliquée. En tou s les cas, je ne m'en sors pas avec ton code. J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activ ate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir Dis moi !!!!!- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
JulieH
Effectivement, c'était parfait et surtout beaucoup plus rapide que ce que j'avais imaginé (2 for each consécutifs).
Si je peux te déranger encore un peu, je souhaiterais mettre une option supplémentaire : Dans la colonne suivante, en face chaque nom, j'ai un code : A, B, C, D. J'aimerais que dans le plan, le fond de la cellule soit en couleur (rouge si A, bleu si B...).
Encore merci pour l'aide.
Julie
Rebonjours Julie
Tes explications étaient parfaites Je les avais bien cernées Il fallait seulement bien adapter mon code en fonction de ton document (Nom onglet, colonnes concernées) Et tout baigne je pense Ci-joint ton document corrigé avec ma Macro "Traitement"
Effectivement, c'était parfait et surtout beaucoup plus rapide que ce
que j'avais imaginé (2 for each consécutifs).
Si je peux te déranger encore un peu, je souhaiterais mettre une option
supplémentaire :
Dans la colonne suivante, en face chaque nom, j'ai un code : A, B, C, D.
J'aimerais que dans le plan, le fond de la cellule soit en couleur
(rouge si A, bleu si B...).
Encore merci pour l'aide.
Julie
Rebonjours Julie
Tes explications étaient parfaites
Je les avais bien cernées
Il fallait seulement bien adapter mon code en fonction de ton document
(Nom onglet, colonnes concernées)
Et tout baigne je pense
Ci-joint ton document corrigé avec ma Macro "Traitement"
Effectivement, c'était parfait et surtout beaucoup plus rapide que ce que j'avais imaginé (2 for each consécutifs).
Si je peux te déranger encore un peu, je souhaiterais mettre une option supplémentaire : Dans la colonne suivante, en face chaque nom, j'ai un code : A, B, C, D. J'aimerais que dans le plan, le fond de la cellule soit en couleur (rouge si A, bleu si B...).
Encore merci pour l'aide.
Julie
Rebonjours Julie
Tes explications étaient parfaites Je les avais bien cernées Il fallait seulement bien adapter mon code en fonction de ton document (Nom onglet, colonnes concernées) Et tout baigne je pense Ci-joint ton document corrigé avec ma Macro "Traitement"
Evidemment c'est plus simple. Mais je dois également faire des mises en forme (plus de 3). Voir mon dernier message. Alors, j'avais pensé tout faire en VBA.
Je ne suis pas sùre de m'être bien expliquée. En tous les cas, je ne m'en sors pas avec ton code. J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros je te propose ce code : For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next le nom en feuil2 en dessous du numéro Celà devrait te convenir Dis moi !!!!!- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
Bonjour et merci pour ta réponse,
Evidemment c'est plus simple. Mais je dois également faire des mises en
forme (plus de 3). Voir mon dernier message.
Alors, j'avais pensé tout faire en VBA.
On 31 mar, 14:13, JulieH <jul...@discussions.microsoft.com> wrote:
Bonjour et merci pour ta réponse,
Je ne suis pas sùre de m'être bien expliquée. En tous les cas, je ne
m'en sors pas avec ton code.
J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie
Espérant avoir bien compris ton attente
soit feuil1 colonne A les noms colonne B les numéros
soit feuil2 de B2 à AA4 les numéros
je te propose ce code :
For Each c In Worksheets("Feuil2").Range("B2", "AA4")
Sheets("Feuil1").Activate
Range("B1").Activate
On Error Resume Next
Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c,
After:=Range("B1"), LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate
If ActiveCell.Address <> Range("B1").Address Then
c.Offset(1, 0) = Range("A" & ActiveCell.Row)
End If
Next
le nom en feuil2 en dessous du numéro
Celà devrait te convenir
Dis moi !!!!!- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Evidemment c'est plus simple. Mais je dois également faire des mises en forme (plus de 3). Voir mon dernier message. Alors, j'avais pensé tout faire en VBA.
Je ne suis pas sùre de m'être bien expliquée. En tous les cas, je ne m'en sors pas avec ton code. J'ai mis un exemple simplifié sur Cjoint.
Julie
http://cjoint.com/?dFolwM6nt5
Salut Julie Espérant avoir bien compris ton attente soit feuil1 colonne A les noms colonne B les numéros soit feuil2 de B2 à AA4 les numéros je te propose ce code : For Each c In Worksheets("Feuil2").Range("B2", "AA4") Sheets("Feuil1").Activate Range("B1").Activate On Error Resume Next Range("B1", "B" & Range("B65535").End(xlUp).Row).Find(What:=c, After:=Range("B1"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("B1").Address Then c.Offset(1, 0) = Range("A" & ActiveCell.Row) End If Next le nom en feuil2 en dessous du numéro Celà devrait te convenir Dis moi !!!!!- Masquer le texte des messages précédents - - Afficher le texte des messages précédents -
francois.forcet
Rebonjours à toi Heureux que celà te convienne
Pour ta demande supplémentaire correspondant à la couleur de fond des cellules de chaque Nom ramené Onglet "Plan de la salle" je te propose le code modifié ainsi :
For Each c In Worksheets("Plan de la salle").Range("B2", "AA4") Sheets("Liste").Activate Range("F4").Activate On Error Resume Next Range("F4", "F" & Range("F65535").End(xlUp).Row).Find(What:=c, After:=Range("F4"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("F4").Address Then c.Offset(1, 0) = Range("G" & ActiveCell.Row) If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If End If Next
J'ai rajouté les lignes :
If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If
pour les codes A et B
Tu peux continuer à l'identique pour les codes suivants Pour connaître le code de la couleur souhaitée utilise cette ligne dans une macro aprés avoir coloré une cellule avec cette couleur en la maintenant active :
Pour ta demande supplémentaire correspondant à la couleur de fond des
cellules de chaque Nom ramené Onglet "Plan de la salle" je te propose
le code modifié ainsi :
For Each c In Worksheets("Plan de la salle").Range("B2", "AA4")
Sheets("Liste").Activate
Range("F4").Activate
On Error Resume Next
Range("F4", "F" & Range("F65535").End(xlUp).Row).Find(What:=c,
After:=Range("F4"), LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
If ActiveCell.Address <> Range("F4").Address Then
c.Offset(1, 0) = Range("G" & ActiveCell.Row)
If Range("H" & ActiveCell.Row) = "A" Then
c.Offset(1, 0).Interior.ColorIndex = 3
End If
If Range("H" & ActiveCell.Row) = "B" Then
c.Offset(1, 0).Interior.ColorIndex = 5
End If
End If
Next
J'ai rajouté les lignes :
If Range("H" & ActiveCell.Row) = "A" Then
c.Offset(1, 0).Interior.ColorIndex = 3
End If
If Range("H" & ActiveCell.Row) = "B" Then
c.Offset(1, 0).Interior.ColorIndex = 5
End If
pour les codes A et B
Tu peux continuer à l'identique pour les codes suivants
Pour connaître le code de la couleur souhaitée utilise cette ligne
dans une macro aprés avoir coloré une cellule avec cette couleur en la
maintenant active :
Pour ta demande supplémentaire correspondant à la couleur de fond des cellules de chaque Nom ramené Onglet "Plan de la salle" je te propose le code modifié ainsi :
For Each c In Worksheets("Plan de la salle").Range("B2", "AA4") Sheets("Liste").Activate Range("F4").Activate On Error Resume Next Range("F4", "F" & Range("F65535").End(xlUp).Row).Find(What:=c, After:=Range("F4"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("F4").Address Then c.Offset(1, 0) = Range("G" & ActiveCell.Row) If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If End If Next
J'ai rajouté les lignes :
If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If
pour les codes A et B
Tu peux continuer à l'identique pour les codes suivants Pour connaître le code de la couleur souhaitée utilise cette ligne dans une macro aprés avoir coloré une cellule avec cette couleur en la maintenant active :
Pour ta demande supplémentaire correspondant à la couleur de fond des cellules de chaque Nom ramené Onglet "Plan de la salle" je te propose le code modifié ainsi :
For Each c In Worksheets("Plan de la salle").Range("B2", "AA4") Sheets("Liste").Activate Range("F4").Activate On Error Resume Next Range("F4", "F" & Range("F65535").End(xlUp).Row).Find(What:=c, After:=Range("F4"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("F4").Address Then c.Offset(1, 0) = Range("G" & ActiveCell.Row) If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If End If Next
J'ai rajouté les lignes :
If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If
pour les codes A et B
Tu peux continuer à l'identique pour les codes suivants Pour connaître le code de la couleur souhaitée utilise cette ligne dans une macro aprés avoir coloré une cellule avec cette couleur en la maintenant active :
Pour ta demande supplémentaire correspondant à la couleur de fond des
cellules de chaque Nom ramené Onglet "Plan de la salle" je te propose
le code modifié ainsi :
For Each c In Worksheets("Plan de la salle").Range("B2", "AA4")
Sheets("Liste").Activate
Range("F4").Activate
On Error Resume Next
Range("F4", "F" & Range("F65535").End(xlUp).Row).Find(What:=c,
After:=Range("F4"), LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:= _
xlNext, MatchCase:úlse, SearchFormat:úlse).Activate
If ActiveCell.Address <> Range("F4").Address Then
c.Offset(1, 0) = Range("G" & ActiveCell.Row)
If Range("H" & ActiveCell.Row) = "A" Then
c.Offset(1, 0).Interior.ColorIndex = 3
End If
If Range("H" & ActiveCell.Row) = "B" Then
c.Offset(1, 0).Interior.ColorIndex = 5
End If
End If
Next
J'ai rajouté les lignes :
If Range("H" & ActiveCell.Row) = "A" Then
c.Offset(1, 0).Interior.ColorIndex = 3
End If
If Range("H" & ActiveCell.Row) = "B" Then
c.Offset(1, 0).Interior.ColorIndex = 5
End If
pour les codes A et B
Tu peux continuer à l'identique pour les codes suivants
Pour connaître le code de la couleur souhaitée utilise cette ligne
dans une macro aprés avoir coloré une cellule avec cette couleur en la
maintenant active :
Pour ta demande supplémentaire correspondant à la couleur de fond des cellules de chaque Nom ramené Onglet "Plan de la salle" je te propose le code modifié ainsi :
For Each c In Worksheets("Plan de la salle").Range("B2", "AA4") Sheets("Liste").Activate Range("F4").Activate On Error Resume Next Range("F4", "F" & Range("F65535").End(xlUp).Row).Find(What:=c, After:=Range("F4"), LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:úlse, SearchFormat:úlse).Activate If ActiveCell.Address <> Range("F4").Address Then c.Offset(1, 0) = Range("G" & ActiveCell.Row) If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If End If Next
J'ai rajouté les lignes :
If Range("H" & ActiveCell.Row) = "A" Then c.Offset(1, 0).Interior.ColorIndex = 3 End If If Range("H" & ActiveCell.Row) = "B" Then c.Offset(1, 0).Interior.ColorIndex = 5 End If
pour les codes A et B
Tu peux continuer à l'identique pour les codes suivants Pour connaître le code de la couleur souhaitée utilise cette ligne dans une macro aprés avoir coloré une cellule avec cette couleur en la maintenant active :