Eviter erreur

Bonjour, avec ce code, quand je trouve dans mon tableau un mot commençant par "Balle", il sépare ce tableau en deux or c'est possible qu'il n'y ai pas de mot commençant par "Balle" et dans ce cas, j'ai une erreur. Est-il possible d'éviter ce problème ?

Merci

While Not ActiveCell.Offset(i2).Value Like "Balle*"
    a2= a2 + 1
Wend

svp

Bonjour,

Ton code est quelque peu sybillin ! On ne sait pas qui est qui ?

i2 : pour VBA ce sera une variable, utilisée pour indiquer un décalage ligne. On ne sait si elle est déclarée, comment elle est initialisée... ???

a2 : pour VBA également une variable, qu'on incrémente dans la boucle. Déclaration ? initialisation ?

Aucune vue de ce qui peut se passer... Tant qu'on ne sait pas ce qu'il en est, toutes les erreurs sont possibles !

MFerrand a écrit :

Bonjour,

Ton code est quelque peu sybillin ! On ne sait pas qui est qui ?

i2 : pour VBA ce sera une variable, utilisée pour indiquer un décalage ligne. On ne sait si elle est déclarée, comment elle est initialisée... ???

a2 : pour VBA également une variable, qu'on incrémente dans la boucle. Déclaration ? initialisation ?

Aucune vue de ce qui peut se passer... Tant qu'on ne sait pas ce qu'il en est, toutes les erreurs sont possibles !

Merci pour ton retour.

i2 = 0
Range("A1").Select
While Not ActiveCell.Offset(i2).Value Like "Balle*"
    i2= i2 + 1
Wend

J'ai remplacé le a2 par i2. En fait, je me place en A2 début de mon tableau et j'incrémente de 1 tant qu'il ne trouve pas le mot "Balle" en début de phrase (il y a environ 10 lignes). Le problème c'est que c'est possible qu'il ne trouve pas le mot "Balle" étant donné qu'il ne soit pas présent et dans ce cas, il boucle à l'infinie et ne trouveras jamais le mot. J'aimerais bien trouver une alternative au cas où il n'y ai pas le mot.

Merci

Utilises une boucle Do... Loop, en ajoutant une condition interne de sortie...

Si i2 doit avoir la valeur de la ligne sur laquelle se trouve "Balle", il faut l'initialiser à 1.

Tu cesses d'incrémenter lorsque "Balle" est trouvée.

Si la cellule est vide avant que ce soit trouvée, tu réinitialies i2 à 0 et tu sors.

Ainsi i2 aura numéro ligne "Balle" ou 0 si "Balle" non trouvé.

i2 = 1
With ActiveSheet
    Do Until .Cells(i2, 1).Value Like "Balle*"
        If .Cells(i2, 1) <> "" Then
            i2 = i2 + 1
        Else
            i2 = 0: Exit Do
        End If
    Loop
End With

NB- je ne travaille jamais avec des Select...

Cordialement.

Merci beaucoup, avec la boucle Do Until cela focntionne très bien aussi.

Rechercher des sujets similaires à "eviter erreur"