VBA Macro : boucle & instruction "offset&
Résolu
pythagore3_14
Messages postés
3
Statut
Membre
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Une de mes macros beug sur la boucle suivante :
Set cel = Range("Feuil1!H2")
Do While cel <> "blabla"
cel = cel.Offset(1)
Loop
Le debogage indique que c'est la ligne soulignée qui est incorrecte. Pourquoi ?
Une de mes macros beug sur la boucle suivante :
Set cel = Range("Feuil1!H2")
Do While cel <> "blabla"
cel = cel.Offset(1)
Loop
Le debogage indique que c'est la ligne soulignée qui est incorrecte. Pourquoi ?
Configuration: Windows 2000 Internet Explorer 6.0
4 réponses
-
il faut mettre cel = cel.offset(ligne,colonne)
il y a deux arguments a la methodes offset.
voilou! -
Bonjour,
Pour l'aide excel Offset, double clic sur le mot Offset et vous verrez ce qu'il manque. Par contre si c'est une boucle
d'attente dont vous avez besoin, ecrivez : cel="" -
je pense que le but recherché est un décalage.
il faudrait nous préciser ta demande et nous dire si la réponse a été suffisante ou non-
Ce que je veux c'est examiner les valeurs d'une colonne (en l'occurence la colonne H de la feuille 2, à partir de la ligne 2 jusqu'à la fin de mon tableau) jusqu'à trouver celle où est rentré le texte "blabla"
Je croyais que quand on tapait offset avec un seul argument l'ordi partait du principe que c'était le nb de lignes et que nb de colonnes=0. Je l'ai déjà utilisé avec un seul argument ça marche très bien... J'ai quand même suivi votre conseil : j'ai remplacé cel.Offset(1) par cel.Offset(1,0). Maintenant le débogage indique que l'erreur se trouve à la ligne "Loop"... je ne comprend pas plus...
J'ai changé cette boucle contre une 2e qui est sencé faire la même chose :
Set cel = Range("Feuil1!H2")
j = 2
Do While cel <> ""
If cel = "blabla" Then Exit Do
j = j + 1
Set cel = Range("Feuil1!H" & j)
Loop
Celle-ci marche très bien, ça fait plaisir. Cela dit j'aimerais quand même comprendre où est le problème dans la 1ère.
f894009 a parlé d'une boucle d'attente. Qu'est-ce-que c'est ?- Bonjour,
Pour votre 1ere programmation marche: il faut réaffecter l'objet cel
Set cel = Range("feuil1!H2")
Do While cel <> "blabla"
Set cel = cel.Offset(1, 0) au lieu de : cel = cel.Offset(1, 0)
Loop
Autre méthode:
Essayez ces lignes qui sont tirées de l'aide EXCEL pour la méthode FIND
With Worksheets(1).Range("H2:H500") 'H500->limite haute du tableau
Set c = .Find("blabla", LookIn:=xlValues)
If Not c Is Nothing Then 'Trouvé
firstAddress = c.Address
Else ' Pas trouvé
End If
End With
Bon courage
-
-
ba avrai dire, je m'y connais pas assez pour te renseigner sans dire de betises désolé!
mai sravi que tu aies trouvé une solution qui marche!