Erreur de compilation
Bonsoir,
J'ai un problème avec un code qui m'aide à colorer des cellules des mêmes couleurs des cellules d'un tableau si les valeurs correspondent.
J'ai un message d'erreur qui s'affiche à chaque fois que j'exécute mon code : Erreur de compilation: Variable non définie.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H8:H100")) Is Nothing Then
Application.EnableEvents = True
Call Code1
Lig = Target.Row
Select Case Lig
Case 10, 24, 36, 48, 58
Rg = Sheets("BOTTLE_STRUCTURE").Range("A3:A100").Find(Target, , , xlWhole, xlByRows).Row
Target.Interior.Color = Sheets("BOTTLE_STRUCTURE").Range("A" & Rg).Interior.Color
Case 12, 26, 38, 50, 60
Rg = Sheets("BOTTLE_STRUCTURE").Range("B3:B100").Find(Target, , , xlWhole, xlByRows).Row
Target.Interior.Color = Sheets("BOTTLE_STRUCTURE").Range("B" & Rg).Interior.Color
Case 14, 28, 40, 52, 62
Rg = Sheets("BOTTLE_STRUCTURE").Range("C3:C100").Find(Target, , , xlWhole, xlByRows).Row
Target.Interior.Color = Sheets("BOTTLE_STRUCTURE").Range("C" & Rg).Interior.Color
Case 16, 30, 42, 54
Rg = Sheets("BOTTLE_STRUCTURE").Range("D3:D100").Find(Target, , , xlWhole, xlByRows).Row
Target.Interior.Color = Sheets("BOTTLE_STRUCTURE").Range("D" & Rg).Interior.Color
Case 18, 32, 44
Rg = Sheets("BOTTLE_STRUCTURE").Range("E3:E100").Find(Target, , , xlWhole, xlByRows).Row
Target.Interior.Color = Sheets("BOTTLE_STRUCTURE").Range("E" & Rg).Interior.Color
End Select
End If
End SubQuelqu'un sait comment je peux rectifier ça s'il-vous-plaît ?
Merci.
Bonjour,
Et bien apparemment, comme indiqué sur le message, il ne s'agirait que de définir une variable, la variable Rg.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig%, Rg%
If Intersect(Target, Range("H8:H100")) Is Nothing Then Exit sub
Application.EnableEvents = False
Call Code1
Lig = Target.Row
With Sheets("BOTTLE_STRUCTURE")
Select Case Lig
Case 10, 24, 36, 48, 58
Rg = .Range("A3:A100").Find(Target.value, , , xlWhole, xlByRows).Row
Target.Interior.Color = .Range("A" & Rg).Interior.Color
Case 12, 26, 38, 50, 60
Rg = .Range("B3:B100").Find(Target.value, , , xlWhole, xlByRows).Row
Target.Interior.Color = .Range("B" & Rg).Interior.Color
Case 14, 28, 40, 52, 62
Rg = .Range("C3:C100").Find(Target.value, , , xlWhole, xlByRows).Row
Target.Interior.Color = .Range("C" & Rg).Interior.Color
Case 16, 30, 42, 54
Rg = .Range("D3:D100").Find(Target.value, , , xlWhole, xlByRows).Row
Target.Interior.Color = .Range("D" & Rg).Interior.Color
Case 18, 32, 44
Rg = .Range("E3:E100").Find(Target.value, , , xlWhole, xlByRows).Row
Target.Interior.Color = .Range("E" & Rg).Interior.Color
End Select
End with
Application.EnableEvents = True
End SubIl vaut mieux que la recherche soit toujours concluante, sinon ça ne renverra pas de cellule et donc pas de ligne...
Cdlt,
Bonjour, je te remercie beaucoup pour ta réponse. Le code s'exécute maintenant sauf que dès qu'une cellule se colore celle qui a été colorée juste avant reprend sa couleur d'origine. Comment faire pour maintenir les couleurs svp ?
Merciii beaucoup.
Bonjour,
Pour l'instant, je n'ai pas d'idée. Je n'ai pas tous les éléments. Par exemple, je vois une macro Code1 qui s'exécute avant de colorier la target. C'est peut-être ça.
Ça pourrait aussi être une procédure worksheet_selectionchange ou une mise en forme conditionnelle. Mais compte tenu des informations dont je dispose, je ne peux pas m'avancer, je ne suis pas voyant
Cdlt,
Je comprends j'ai pu résoudre le problème en supprimant l'appel de procédure je te remercie pour ton aide.