Balayage de lignes en VBA

Résolu
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014 - 25 juil. 2011 à 11:38
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014 - 25 juil. 2011 à 13:20
Bonjour à tous,

Je developpe un petit logiciel pour mon stage et je ne connais pas encore trop bien la programmation, actuellement j'ai un problème sur un petit programme simple :

En ce moment, il y a une liste de machines de A11 à A26 et TOTAL_GENERAL en A27
En B11 à B27, des valeurs numériques

Si j'ajoute 1 ligne machine, le programme va utiliser les valeurs jusqu'à B27 et la B28 ne sera pas utilisée.
J'ai besoin d'ajouter à mon programme la prise en compte de toutes les valeurs, si je rajoute une ligne de machine, j'ai donc ecris ceci:


For i = 11 To 150

If Cells(i, 1).Value "Total_général" Then n i Else: i = i + 1
Next

MsgBox ("n=" & n) // TEST: Pour vérifier qu'il compte bien


Le soucis c'est que si TOTAL_GENERAL se trouve sur une ligne pair, ca bug et affiche n=0, si c'est une ligne impaire tout se déroule parfaitement.

Si je met i=10 to 150 : ce sont les lignes impair qui bug et les pair qui fonctionnent parfaitement...

Je ne comprends pas du tout pourquoi, est-ce-que quelqu'un pourrait m'aider à avancer ?

PS: comment lui dire de balayer toute la colonne plutot que de mettre 150 au hasard ?


Merci bcp pour votre aide !
Axel

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 juil. 2011 à 12:29
Bonjour,
1) interroge-toi sur ce que je souligne ici (sans balises code pour pouyvoir souligner) :

For i = 11 To 150

If Cells(i, 1).Value "Total_général" Then n i Else: i = i + 1
Next


Dans une boucle for x to ...
x est incrémenté d'une unité à chaque tour de boucle (c'est la vocation d'une boucle For ... to ...) !
en "forçant" ton i à "avancer" d'une unité supplémentaire, tu "sautes" bien évidemment une valeur de i

2) intéresse-toi à ce que ferait un Exit For (bien qu'avec ce nom-là ... ce serait "très parlant")

_________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 juil. 2011 à 12:31
Intéresse-toi également à la fonction Find (à voir dans toin aide VBA).


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Axeu Messages postés 49 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 20 juin 2014
25 juil. 2011 à 13:20
J'ai supprimé la condition Else et ça fonctionne

Je n'avais pas du tout tilté que la boucle For effectuait l'incrémentation ...

Pour la fonction find, je ne vois pas ce que représente OBJECT.find...

en tout cas merci pour ton aide Ucfoutu !
0
Rejoignez-nous