Boucle For each sur VBA (excel)

cs_dodii Messages postés 12 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 15 mars 2008 - 31 août 2005 à 10:56
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 4 sept. 2005 à 01:20
Bonjour, je travaille sur sur office 2003 avec un windows 2000 j'ai preparer un tout p'tit programme de gestion de base de donnée sur excel en utilisant VBA et ça marche tres bien sauf que lorsque j'ai essayé de le mettre sur un autre ordi avec le meme office mais avec un windows XP ça Bug a 2 niveau
- le premier a chaque variable non declaré (j'ai pu regler ce probleme en passant quelque minutes en declarant ces variable)
- le second a la boucle for each et c'est ça qui me coince
j'ai vraiment besion d'une solution voici un exemple :

for each c in [a:a] 'boucle sur toute la colone A
if a.value<>empty then ' un simple test logique
a.select
end if
next
merci d'avance

5 réponses

bertholdt Messages postés 22 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 17 mai 2010
31 août 2005 à 11:31
Salut,

Bien que tu aies un problème avec For Each, je pense que tu ne devrais pas faire ta recherche sur toute la colonne car il y a quand même 65536 lignes. Compte tout d'abord le nombre de lignes utilisées et fais une boucle dessus ensuite.


Décris moi mieux ton problème et/ou envoies une partie de ta procédure de recherche.

++
Pierrick
0
nostra78 Messages postés 137 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 6 décembre 2005
31 août 2005 à 12:55
Option explictit
DIm Cellule as range

Sub macro1
For each cellule in [a:a]
If cellule.value <> "" then
cellule.select
end if
next
End Sub
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
1 sept. 2005 à 01:35
Salut,

Tout d'abord toujours déclarer tes variables c'est plus propre et cela évite bien des problèmes. Donc
Dim c as Range
Ensuite tu dis textuellement pour chaque C si A.Value<> .....alors ......
Dis y'a pas un prob là?
cela doit être:
Dim C as Range
for each c in [a:a] 'boucle sur toute la colone A
if c.value<>empty then ' un simple test logique
c.select
end if
next
Attention aussi à l'utilisation de Empty je te renvois sur l'aide
dernière précision tel-quel ton code ne sélectionnera que la dernière cellule non vide (les autres auront été séléctionné mais tu ne le verra pas....)

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_dodii Messages postés 12 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 15 mars 2008
2 sept. 2005 à 13:19
merci la ça fonctionne tres bien mais si declare le "C" comme variant est ce que ça differe avec la declaration en tant que Range ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
4 sept. 2005 à 01:20
Re,
Ne sachant pas ce que C contiendra si tu le déclares en variant il occupera plus de place en mémoire.

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous