Afficher les valeur d'une collection par msgbox VBA
Résolu
tictac847
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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:
Merci d'avance
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
A voir également:
- Afficher les valeur d'une collection par msgbox VBA
- Afficher appdata - Guide
- Dans le diaporama à télécharger, les diapositives s’enchaînent automatiquement. combien de temps la diapositive crayon met-elle à s’afficher ? combien de temps reste-t-elle affichée à l’écran ? ✓ - Forum Powerpoint
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
- Afficher les modifications word - Guide
- Afficher taille dossier windows - Guide
2 réponses
Bonjour,
Je ne vois pas du tout, avec ce code, ou vous voulez en venir...
En début de code :
Donc votre variable Couleur a une valeur fixe et déterminée par le choix dans la Combobox. OK.
Et plus loin :
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 :
2- dernière ligne :
A remplacer donc par (par exemple) :
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).RowSi jamais le tableau évolue...
A remplacer donc par (par exemple) :
.Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
Merci Franck pour votre réponse rapides.
Vous avez raison c'est :
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.
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.