A voir également:
- Boucle vb
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
6 réponses
Bonjour,
Lorsque ça ne marche pas, c'est que C3 contient une valeur non numérique, ou qu'elle contient rien du tout ?
Gégé
Lorsque ça ne marche pas, c'est que C3 contient une valeur non numérique, ou qu'elle contient rien du tout ?
Gégé
Bonjour,
En fait c'est quand la cellule est vide, mais le probléme c'est que je vais avoir plein de cellule vide.
Merci
En fait c'est quand la cellule est vide, mais le probléme c'est que je vais avoir plein de cellule vide.
Merci
C'est donc logique que ta boucle s'arrête, puisque ta condition c'est :
Do While Worksheets("Cu").Cells(3, I) <> ""
Avec cette configuration, tu sors de ta boucle dès qu'une cellule vide est rencontrée sur ta ligne 3.
Si tu sais d'avance le nombre de colonnes de ton tableau, et que ce nombre est figé, tu peux remplacer le Do While par une boucle For...Next:
Private Sub CommandButton1_Click()
I = 3
J = 15 '(tu mets ici à la place de 15 le numéro correspondant à la dernière colonne de ton tableau)
If ComboBox1.Value = "SIL9" Then
For It = I to J
If IsNumeric(Worksheets("Cu").Cells(3, It).Value) Then
ListBox1.AddItem Worksheets("Cu").Cells(2, It).Value
End If
Next It
End If
End Sub
Ainsi, ta boucle parcours la ligne 3 de toutes tes colonnes, même si elle rencontre une cellule vide...
Gégé
Do While Worksheets("Cu").Cells(3, I) <> ""
Avec cette configuration, tu sors de ta boucle dès qu'une cellule vide est rencontrée sur ta ligne 3.
Si tu sais d'avance le nombre de colonnes de ton tableau, et que ce nombre est figé, tu peux remplacer le Do While par une boucle For...Next:
Private Sub CommandButton1_Click()
I = 3
J = 15 '(tu mets ici à la place de 15 le numéro correspondant à la dernière colonne de ton tableau)
If ComboBox1.Value = "SIL9" Then
For It = I to J
If IsNumeric(Worksheets("Cu").Cells(3, It).Value) Then
ListBox1.AddItem Worksheets("Cu").Cells(2, It).Value
End If
Next It
End If
End Sub
Ainsi, ta boucle parcours la ligne 3 de toutes tes colonnes, même si elle rencontre une cellule vide...
Gégé
Merci, mais le probléme, c'est que je ne peux pas connaitre le nombre de colonne à l'avance, j'ai justement reflechi pour que se soit fixe mais je ne peux pas.
Est ce que je ne peux pas changer le Isnumeric car en fait je n'ai plus que soit des cellules vides soit du numeric. Sachant que mes cellules vides sont d'une autre couleur que les cellules vides.
Merci beaucoup
Est ce que je ne peux pas changer le Isnumeric car en fait je n'ai plus que soit des cellules vides soit du numeric. Sachant que mes cellules vides sont d'une autre couleur que les cellules vides.
Merci beaucoup
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le problème n'est pas le IsNumeric ou non. Le problème est de délimiter ton tableau pour que la boucle ne traite que le nécessaire.
Y a-t-il dans ton tableau une ligne qui contient systématiquement quelque chose, et sur laquelle on pourrait faire le test pour savoir quand arrêter la boucle ?
Sinon, Excel mettant généreusement à ta disposition 256 colonnes, tu boucles direct sur les 256, sachant que ta ListBox ne se remplira que si la valeur en ligne 3 est numérique.
Bien sûr, ce type de méthode est à proscrire dans des procédures complexes, mais sur des boucles simples, ça ne devrait pas trop se voir au niveau du temps d'exécution.
Gégé
Y a-t-il dans ton tableau une ligne qui contient systématiquement quelque chose, et sur laquelle on pourrait faire le test pour savoir quand arrêter la boucle ?
Sinon, Excel mettant généreusement à ta disposition 256 colonnes, tu boucles direct sur les 256, sachant que ta ListBox ne se remplira que si la valeur en ligne 3 est numérique.
Bien sûr, ce type de méthode est à proscrire dans des procédures complexes, mais sur des boucles simples, ça ne devrait pas trop se voir au niveau du temps d'exécution.
Gégé