Intégrer les différents résultats d'une boucle dans une variable texte

ninajams

XLDnaute Junior
Bonjour,

J'ai un formulaire contenant les champs Couleur_1, Couleur_2 ect.. jusqu'à Couleur_20.
J'ai fait ce petit code très basic qui reprend la valeur des différents champs pour les intégrer dans une variable string ce qui donnera :
Les couleurs disponible sont : couleur 1 , couleur 2, ect jusqu'à couleur 20.

VB:
'Ma condition est d'avoir au moins 2 couleurs donc si le champs 2 est vide je ne veux rien faire
If Couleur_2.Value = "" Then
Else
CouleurBatterie = "Les couleurs disponible sont : " & Couleur_1.Value & Couleur_2.Value & Couleur_3.Value & Couleur_4.Value
End If

Mais j'aimerais améliorer le code pour ne prendre en compte que les champs non vide sinon ça donne comme résultat Couleur1, Couleur2,,,,,,,,,,,,,,,,,,,.
Ce qui n'est pas très jolie.

J'ai essayé plusieurs variantes de boucle mais je n'ai pas réussi à obtenir quelque chose d'exploitable notamment pour ma variable texte qui doit lister les couleurs disponible.

Voici un exemple qui ne fonctionne pas

Code:
Dim T(21) As Variant

For c = 1 To 20
T(c) = Couleur_c.Value
Next
CouleurBatterie = "Les couleurs disponible sont : " & T(0) & T(1) & T(2)

Merci pour votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Ninajams,
Un petit essai :
Code:
Sub essai()
Dim T(21) As Variant
CouleurBatterie = "Les couleurs disponible sont : "
For c = 1 To 20
    T(c) = Couleur_c.Value
    If T(c) <> "" Then
        CouleurBatterie = CouleurBatterie & T(c) & ","
    End If
Next
CouleurBatterie = Mid(CouleurBatterie, 1, Len(CouleurBatterie) - 1) ' supprime la virgule finale
End Sub
 

ninajams

XLDnaute Junior
Merci beaucoup. J'ai du le retravailler légèrement parce que les objets aiment pas beaucoup les .value.

Maintenant ça marche.

Et merci encore pour le coup de mettre la variable texte dans la boucle. C'est un truc que je vais réutiliser souvent.

VB:
Dim TableauCouleur(19) As Variant
CouleurBatterie = "Les couleurs disponible sont : "
For c = 0 To 19
    TableauCouleur(c) = UserForm1.Controls("Couleur_" & c + 1).Value
    If TableauCouleur(c) <> "" Then
        CouleurBatterie = CouleurBatterie & TableauCouleur(c) & ","
    End If
          
Next
CouleurBatterie = Mid(CouleurBatterie, 1, Len(CouleurBatterie) - 1) & "." ' supprime la virgule finale
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 252
Membres
102 837
dernier inscrit
CRETE