Balayage de lignes en VBA [Résolu]

Axeu 49 Messages postés jeudi 22 novembre 2012Date d'inscription 20 juin 2014 Dernière intervention - 25 juil. 2011 à 11:38 - Dernière réponse : Axeu 49 Messages postés jeudi 22 novembre 2012Date d'inscription 20 juin 2014 Dernière intervention
- 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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 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é 93 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 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
Axeu 49 Messages postés jeudi 22 novembre 2012Date d'inscription 20 juin 2014 Dernière intervention - 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.