VBA Macro : boucle & instruction "offset&
Résolu
pythagore3_14
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 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 ?
A voir également:
- VBA Macro : boucle & instruction "offset&
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Excel compter cellule couleur sans vba - Guide
4 réponses
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=""
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
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 ?
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
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