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 17267 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 23 mars 2025 - 10 août 2008 à 22:02
f894009 Messages postés 17267 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 23 mars 2025 - 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 ?
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
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
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
31 juil. 2008 à 11:36
il faut mettre cel = cel.offset(ligne,colonne)
il y a deux arguments a la methodes offset.
voilou!
il y a deux arguments a la methodes offset.
voilou!
f894009
Messages postés
17267
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
23 mars 2025
1 713
31 juil. 2008 à 11:50
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=""
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=""
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
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
il faudrait nous préciser ta demande et nous dire si la réponse a été suffisante ou non
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
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 ?
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 ?
f894009
Messages postés
17267
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
23 mars 2025
1 713
>
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
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
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
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
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!
mai sravi que tu aies trouvé une solution qui marche!