Afficher les valeur d'une collection par msgbox VBA

Résolu/Fermé
tictac847 Messages postés 26 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 24 décembre 2013 - Modifié par tictac847 le 30/01/2013 à 15:29
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 30 janv. 2013 à 16:10
Bonjour,

Voila, j'ai un problème concernant l'utilisation des collection sur vba.
J'ai déclarer une nouvelle collection qui récupère des valeurs sous certaine conditions.
Je voudrais que les valeurs récuperées soit afficher par msgbox.
Je sais que ma macro repere les cellule à récuperer. Le problème est que mon msgbox est vide.

Voici mon code:
Private Sub CommandButtonPtQte_Click() 
Dim QteCom, qte, TaillePak, Reste As Long 
Dim RefOF, Couleur As String 
Dim a, cel As Range 
Dim TabTaille, TabQte As New Collection 'déclare les tableau 
'TabTaille.clear 
'TabQte.clear 


RefOF = UserFormRapportCoupe.ComboBoxRefOF.Value 
Couleur = UserFormRapportCoupe.ComboboxCouleur.Value 

If MsgBox("Les OF seront regroupés par taille pour la couleur " & Couleur, vbInformation + vbYesNo) = vbNo Then Exit Sub 

With ActiveSheet   'defini la variable p comme colone de ref OF 
    Set a = .Range("B8:B" & .Range("B1000").End(xlUp).Row) 
End With 

'remplir les collection de taille et qté 
On Error Resume Next 
    For Each cel In a 
        If cel.Value = RefOF Then 
            If cel.Offset(0, 1).Value = Couleur Then   
               TabTaille.Add cel.Offset(0, 1).Value 'Je pense que l'erreur se trouve à ce niveau 
            End If 
        End If 
    Next cel 

ligne = "" 
For i = 1 To TabTaille.count 
ligne = ligne & TabTaille(i) & Chr(13) 
Next i 
MsgBox ligne 

End Sub


Merci d'avance

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
30 janv. 2013 à 15:48
Bonjour,

Je ne vois pas du tout, avec ce code, ou vous voulez en venir...
En début de code :
Couleur = UserFormRapportCoupe.ComboboxCouleur.Value

Donc votre variable Couleur a une valeur fixe et déterminée par le choix dans la Combobox. OK.
Et plus loin :
If cel.Offset(0, 1).Value = Couleur Then   
    TabTaille.Add cel.Offset(0, 1).Value

Donc, en gros, si le contenu de cel.Offset(0, 1) est égal à couleur alors on enregistre cette valeur dans notre collection. Donc on veut enregistrer dans notre collection x fois Couleur... Quel intérêt???

De plus, le reste du code malgré quelques erreurs est correct. Donc si MsgBox vide c'est que VBA n'a pas rouvé de valeur correspondante. Ou alors, la présence de On Error Resume Next masque une erreur...
Pour vérifier cela effectuez votre macro en mode pas à pas en enlevant le traitement d'erreur.

petites erreurs :
1- Déclaration des variables :
Toujours renseigner le type :
Dim QteCom, qte, TaillePak, Reste As Long
veut dire : QteCom = Variant, qte = Variant, TaillePak = Variant et Reste = Long
à remplacer donc par :
Dim QteCom As Long, qte As Long, TaillePak As Long, Reste As Long 
Dim RefOF As String, Couleur As String 
Dim a As Range, cel As Range 
Dim TabTaille As New Collection, TabQte As New Collection


2- dernière ligne :
.Range("B1000").End(xlUp).Row
Si jamais le tableau évolue...
A remplacer donc par (par exemple) :
.Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
0
tictac847 Messages postés 26 Date d'inscription mercredi 5 octobre 2011 Statut Membre Dernière intervention 24 décembre 2013
Modifié par tictac847 le 30/01/2013 à 16:08
Merci Franck pour votre réponse rapides.

Vous avez raison c'est :
If cel.Offset(0, 1).Value = Couleur Then    
    TabTaille.Add cel.Offset(0, 2).Value

que je recherchais, c'etait une étourderie.

Mais dans tous les cas ça aurais dut m'afficher les X fois couleur dans mon message box. C'est ce qui arrive maintenant.

Changer la déclaration des variables comme vous me l'avez proposé à régler mon problème. C'est la que devait se trouver l'erreur.
Je pense que TailleTab etait considérée comme Variant, si j'ai bien suivi votre raisonnement.

Merci pour la correction et les tuyaux.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
30 janv. 2013 à 16:10
C'est tout à fait cela.
De rien.
A+
0