Gérer une collection sous VBA Excel
Résolu/Fermé
A voir également:
- Gérer une collection sous VBA Excel
- Gérer une collection sous VBA Excel ✓ - Forum - VB / VBA
- Vba excel collection - Conseils pratiques - Excel
- Gerer un historique de classeur excel en vba ✓ - Forum - VB / VBA
- [vba excel] afficher collection dans label ✓ - Forum - VB / VBA
- [VBA EXCEL 2007]Gérer 2 UserForm indépandante ✓ - Forum - VB / VBA
2 réponses
pijaku
11 janv. 2012 à 11:09
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
11 janv. 2012 à 11:09
Bonjour,
Tout simplement comme ceci :
Tout simplement comme ceci :
Dim tableau_B As New Collection Dim i As Integer, colonne1 As Integer, colonne2 As Integer colonne1 = 1 colonne2 = 3 'remplissage de la collection For i = 1 To 20 If UCase(Left(Worksheets("current month").Cells(i, colonne1), 1)) = "B" Then tableau_B.Add (Worksheets("current month").Cells(i, colonne2).Value) End If Next i
merci, j'avais oublié de préciser que des valeurs étaient déja attribué pour colonne1 et colonne2 (mais pour i, vu que c'est dans une boucle, dois-je obligatoirement le declarer en Integer ?)
Ceci dit, j'ai bien supprimé la ligne Set tableau_B = New Collection mais j'ai toujours une erreur "Susbcript out of range"
Ceci dit, j'ai bien supprimé la ligne Set tableau_B = New Collection mais j'ai toujours une erreur "Susbcript out of range"
pijaku
11 janv. 2012 à 11:17
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
11 janv. 2012 à 11:17
mais pour i, vu que c'est dans une boucle, dois-je obligatoirement le declarer en Integer ?) Non. Tu peux le déclarer autrement si tu veux (Byte, Integer ou Long sembleraient convenir.) Mais tu DOIS déclarer TOUTES tes variables.
j'ai toujours une erreur "Susbcript out of range" Lorsque tu as cette erreur et que tu cliques sur Débogage, qu'elle ligne apparait surlignée de jaune?
j'ai toujours une erreur "Susbcript out of range" Lorsque tu as cette erreur et que tu cliques sur Débogage, qu'elle ligne apparait surlignée de jaune?
Merci pour l'info.
Je n'ai pas la possibilité de cliquer sur debugger (j'ai excel 2003).
Cependant, j'ai écrit Dim tableau_B As New Collection
dim i as integer
For i = 1 To 20
If UCase(Left(Worksheets("current month").Cells(i, colonne1), 1)) = "B" Then
tableau_B.Add (Worksheets("current month").Cells(i, colonne2).Value)
End If
Next i
MsgBox (tableau_B(0))
Et a priori c'est MsgBox (tableau_B(0)) qu'il n'apprécie pas (cette ligne est juste pour vérifier que la collection s'est bien remplie).
Je n'ai pas la possibilité de cliquer sur debugger (j'ai excel 2003).
Cependant, j'ai écrit Dim tableau_B As New Collection
dim i as integer
For i = 1 To 20
If UCase(Left(Worksheets("current month").Cells(i, colonne1), 1)) = "B" Then
tableau_B.Add (Worksheets("current month").Cells(i, colonne2).Value)
End If
Next i
MsgBox (tableau_B(0))
Et a priori c'est MsgBox (tableau_B(0)) qu'il n'apprécie pas (cette ligne est juste pour vérifier que la collection s'est bien remplie).
pijaku
11 janv. 2012 à 11:29
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
11 janv. 2012 à 11:29
Hum hum!!! Il s'agit d'une Collection, pas d'une variable tableau.... Donc 1er élément = 1 pas 0...
Essaye ceci :
Essaye ceci :
Dim tableau_B As New Collection Dim i as integer Dim message As String For i = 1 To 20 If UCase(Left(Worksheets("current month").Cells(i, colonne1), 1)) = "B" Then tableau_B.Add (Worksheets("current month").Cells(i, colonne2).Value) End If Next i For i = 1 To tableau_B.Count message = message & Chr(10) & tableau_B(i) Next MsgBox message