Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

  • Initiateur de la discussion Initiateur de la discussion boulou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

boulou

XLDnaute Occasionnel
Merci pour votre éclairage.
Message renvoyé = Erreur de compilation. Variable non définie.

Private Sub CommandButton3_Click()
For Each cel In Range("bc103:bc153,bg103:bg153,bk103:bk153,bo103:bo153,bs103:bs153,bw103:bw153,ca103:ca153,ce103:ce153,ci103:ci153")
If cel.Value = Range("e4") Then
Range("k7") = ""
Range("m4") = Range("m4") + Range("k4")
Range ("c10:k11"), ClearContents
Exit Sub
End If
Next
Range("k7") = "FAUX"

End Sub
 
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Bonjour,

Manque: dim Cel as range

Private Sub CommandButton3_Click()
Dim Cel As Range
For Each cel In Range("bc103:bc153,bg103:bg153,bk103:bk153,bo103:bo153,bs103:bs153,bw103:bw153,ca103:ca153,ce103:ce153,ci103:ci153")
If cel.Value = Range("e4") Then
Range("k7") = ""
Range("m4") = Range("m4") + Range("k4")
Range ("c10:k11"), ClearContents
Exit Sub
End If
Next
Range("k7") = "FAUX"

End Sub

A+
 
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Bonjour Boulou, Ges, DranReb, Papou (oh le monde 🙂)

Essaye peut-être ainsi:

Code:
Sub test()
'GoTo suite
For Each cel In Range("bc103:bc153,bg103:bg153,bk103:bk153,bo103:bo153,bs103:bs153,bw103:bw153,ca103:ca153,ce103:ce153,ci103:ci153")
If cel.Value = Range("e4") Then
Range("k7") = ""
Range("m4") = Range("m4") + Range("k4")
Range("c10:k11").ClearContents
Exit Sub
End If
Next
'suite:
Range("k7") = "FAUX"
End Sub
 
Dernière édition:
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Bonjour boulou,

Tu dois avoir mentionné Option Explicit, tu dois donc déclarer Cel en tant que variable Range.

De plus, tu as des espaces à supprimer dans tes références de cellules.

Je te renvoie donc ton code corrigé, tu n'as plus qu'à le recopier.

Cordialement.

Code:
Private Sub CommandButton1_Click()
Dim Cel As Range
For Each Cel In Range("bc103:bc153,bg103:bg153,bk103:bk153,bo103:bo153,bs103:bs153,bw103:bw153,ca103:ca153,ce103:ce153,ci103:ci153")
If Cel.Value = Range("e4") Then
Range("k7") = ""
Range("m4") = Range("m4") + Range("k4")
Range("c10:k11").ClearContents
Exit Sub
End If
Next
Range("k7") = "FAUX"
End Sub
 
Dernière édition:
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Alors que la cellule "e4" est bien égale à une valeur existante dans mes plages de référence, il m'est toujours affiché FAUX.
Pourquoi ?.

Merci pour votre aide précédente.
 
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Peut être existe t il un piège car la cellule "E4" affiche en fait le résultat d'une concaténation >>>>> =CONCATENER(C10;D10;E10;F10;G10;H10;I10)

N'est ce pas dû à cela ?

Merci.
 
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Possible.
Mettez un point d'arrêt avant le test,
Puis des espions sur les expressions comparées.
Analysez.
Portez une attention particulière aux types de données.
À+

Ah et puis récupérez Range("e4").Value une bonne fois pour toutes dans une variable avant la boucle. Inutile de récupérer ça à chaque passage dedans: ça ralentit inutilment.
 
Dernière édition:
Re : Plantage instruction sur "cel" (For Each) en ligne 2. Explication ?

Re,

VB:
Private Sub CommandButton1_Click()
    Dim Res As Boolean
    Dim Cel As Range
    Res = False
    For Each Cel In Range("bc103:bc153,bg103:bg153,bk103:bk153,bo103:bo153,bs103:bs153,bw103:bw153,ca103:ca153,ce103:ce153,ci103:ci153")
        If Cel.Value = CDbl(Range("e4")) Then
            Res = True
            Range("m4") = Range("m4") + Range("k4")
            Range("c10:k11").ClearContents
            Exit For
        End If
    Next
    If Res Then Range("K7").ClearContents Else Range("K7") = False
End Sub

Si tu n'as que des chiffres dans Range("e4"), cdbl devrait aller.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

P
Réponses
12
Affichages
2 K
P
Retour