rimbaut
Messages postés61Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 1 juin 2014
-
12 juil. 2008 à 19:11
rimbaut
Messages postés61Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 1 juin 2014
-
13 juil. 2008 à 15:22
Bonsoir à tous,
Je rencontre un probléme avec la boucle While. En effet, je voudrais parcourir une liste de compte d'une colonne sachant que je ne connais pas au départ le nombre de compte que peut contenir cette colonne. Aussi j'ai opté pour la boucle while wend pour solutionner mon probléme.
Ainsi, je voudrais parcourir sur la feuille "Balance" la colonne a1 de façon à chercher les comptes qui commencent par 61 et les copier sur une autre feuille.
J'ai reproduit ci après un extrait de mon code et la boucle while achoppe. Quelqu'un peut il venir à mon aide, je ne suis qu'un débutant.
Merci d'avance
Sub test2()
Worksheets("My B400").Activate
Dim x As Integer
Dim y As Integer
Dim y2 As Integer
Dim Compteur As Byte
Dim total_annee_1 As Long
Dim total_annee_2 As Long
total_annee_1 = 0
total_annee_2 = 0
y2 = 12
while left(sheets("Balance").Cells(y,1).value = "61"
Whith Sheets("My B400")
.Range("a12").Value = Celles(y2, 1).Value
End With
Compteur = Compteur + 1
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 12 juil. 2008 à 19:36
salut,
while left(sheets("Balance").Cells(y,1).value = "61"
ouai... mais y ne change jamais ^^
sinon il manque un argument et une parenthèse pour ton left...
left$(..., 2)
with, pas whith
compteur ne te sert ici à rien puique tu ne l'utilises pas
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 juil. 2008 à 19:46
Salut
Le principal est que tu comprennes ce que tu as écrit et que tu corriges toi même.
Voici quelques indices :
- Dans le While, tu testes la cellule pointée par "y"
Au démarrage, "y" vaut 0 --> Surement une erreur
- Dans le While, tu utilises "y" pour désigner la ligne
Ensuite tu fais une recopie vers la cellule "A12" (*) de la cellule pointée par "y2"
"y2" va rester à 12 ... on ne la voit évoluer nulle part ...
Ce serait plutôt "y", non ?
(*) Au fur et à mesure que la boucle avancera, tu écraseras le contenu de "A12"
Il faudrait utiliser Compteur, non ?
Il faudra penser à l'initialiser à la valeur 12 (la colonne A ne doit pas bouger, je pense) avant de commencer
- Ensuite tu incrémente "Compteur"
C'est bien, mais cette variabnle ne sert nulle part !
Il vaudrait mieux incrémenter la ligne, donc "y", non ?
- Quand tu débugue un programme qui contient une boucle, il faut toujours insérer un DoEvents dedans.
Cela permet de redonner la main au système et cela te permettra d'arrêter le programme sans trop de casse si il boucle sans fin, ce qui doit se produire actuellement.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
rimbaut
Messages postés61Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 1 juin 2014 12 juil. 2008 à 19:57
Merci de m'avoir répondu PCPT. Ma boucle ne marche pas.
Ce que je souhaite faire est ceci :
Variable y est la colonne 1 de la feuille "Balance" que je veux parcourir pour copier vers des feuilles appropriées les lignes correspondant aux numéros de compte commençant par exemple par 61, 62, 63, 64, 65 ect...
J'ai une procédure qui fonctionne, c'est celle ci :
Sub Test()
Worksheets("My B500").Activate
Dim x As Integer
Dim y As Integer 'ligne dans la balance
Dim y2 As Integer ' ligne dans l'autre feuille
Dim total_annee_1 As Long
Dim total_annee_2 As Long
total_annee_1 = 0
total_annee_2 = 0
y2 = 12
For y = 11 To 445
' Si le compte commence par 63, copier les valeurs de la balance
' vers la feuille My B500
If Left(Sheets("Balance").Cells(y, 1).Value, 2) = "63" Then
Sheets("Balance").Cells(y, 1).Copy
Sheets("My B500").Cells(y2, 1).PasteSpecial xlPasteValues
mais elle n'est pas adaptée car j'ai rentré dans ce cas précis la dimension de la colonne alors qu'en principe je ne la connais pas.
C'est pour celà que je souhaite utiliser une boucle. Le problème est que je comprends l'algo mais j'ai du mal à le traduire en vba.
Merci encore pour votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
rimbaut
Messages postés61Date d'inscriptionjeudi 19 mai 2005StatutMembreDernière intervention 1 juin 2014 13 juil. 2008 à 15:22
Bonjour,
Toujours le problème avec la boucle. L'écriture semble correcte car elle ne bugue pas mais rien ne s'exécute.
Nota :
y2 reste à 12 car c'est la 1er position de la cellule dans la feuille My B400 qui va recevoir la valeur de la cellule trouvée dans la feuille "Balance".
Quelle est mon erreur qui fait que le code s'exécute mais rien ne se passe ?
Sub test2()
Worksheets("My B400").Activate
Dim x As Integer
Dim y As Integer
Dim y2 As Integer
Dim Compteur As Byte
Dim total_annee_1 As Long
Dim total_annee_2 As Long