Balayage de lignes en VBA [Résolu]

Messages postés
49
Date d'inscription
jeudi 22 novembre 2012
Dernière intervention
20 juin 2014
- 25 juil. 2011 à 11:38 - Dernière réponse :
Messages postés
49
Date d'inscription
jeudi 22 novembre 2012
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 25 juil. 2011 à 12:29
3
Merci
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

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 25 juil. 2011 à 12:31
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
49
Date d'inscription
jeudi 22 novembre 2012
Dernière intervention
20 juin 2014
- 25 juil. 2011 à 13:20
0
Merci
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 !
Commenter la réponse de Axeu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.