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 Sub

Quelqu'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 Sub

Il 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.

Rechercher des sujets similaires à "erreur compilation"