VBA Macro : boucle & instruction "offset&

Résolu/Fermé
pythagore3_14 Messages postés 3 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 10:31
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 10 août 2008 à 22:02
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 ?
A voir également:

4 réponses

Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
31 juil. 2008 à 11:36
il faut mettre cel = cel.offset(ligne,colonne)
il y a deux arguments a la methodes offset.
voilou!
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
31 juil. 2008 à 11:50
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=""
0
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
31 juil. 2008 à 13:14
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
0
pythagore3_14 Messages postés 3 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 13:45
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 ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > pythagore3_14 Messages postés 3 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
10 août 2008 à 22:02
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
0
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
31 juil. 2008 à 14:01
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!
0