Problème pour concaténer une colonne avec code personnalisé

Bonsoir,

Extrêmement (mais vraiment) débutant en VBA je sollicite votre aide.

Dans le cadre d'un fomulaire, je dois concaténer les résultats de la colonne A contenue dans la feuille "Liste" dans une cellule spécifique de la feuille "Datas".

Cette colonne est alimentée par des Userforms renvoyant les réponses à différentes questions posées dans le formulaire. De fait, il y a des cellules de la colonne A qui sont vides et d'autres remplies suivant les réponses.

Problème : le code de concaténation que j'ai crée ne prend pas en compte les cellules se trouvant après des cellules vides, il ne concatène que de la première cellule non vide à la dernière cellule non vide sans interruption par des cellules non vides.

CAD si ma colonne A à la configuration suivante :

A

B

C

D

Ma concaténation va afficher : A;B; sans prendre en compte le C. et le D

Mon code est le suivant :

Private Sub CommandButtonvalidation_Click()
With Worksheets("Liste")
Dim derlist As Long
Dim Texte As String

derlist = .Range("A" & Rows.Count).End(xlUp).Row + 1
    For i = 2 To derlist
        If Cells(i, 1).Value <> "" Then
             Texte = Texte & .Cells(i, 1).Value & "; "

        End If
         Texte = Left(Texte, Len(Texte) - 1)
    Next
End With

With Worksheets("Datas")
Derlign = .Range("A" & Rows.Count).End(xlUp).Row + 1
            .Cells(Derlign, 1).Value = TextBox1
            .Cells(Derlign, 2).Value = ComboBox1
            .Cells(Derlign, 3).Value = ListBox2
            .Cells(Derlign, 4).Value = TextBox2
            .Cells(Derlign, 5).Value = Texte

End With
Me.Hide

End Sub

J'espère être assez clair, le projet sur lequel je travaille est confidentiel, de fait je ne peux pas vous joindre de fichier.

Merci d'avance pour votre aide.

Soledad

Bonjour et bienvenue sur le forum

Tu devrais joindre ton fichier complet...

Bye !

Bonjour,

Testes comme ça :

Private Sub CommandButtonvalidation_Click()

    Dim derlist As Long
    Dim Texte As String
    Dim I As Long

    With Worksheets("Liste")

        derlist = .Range("A" & Rows.Count).End(xlUp).Row '+ 1 '<--- ici, + 1 ne sert à rien !

        For I = 2 To derlist

            If Cells(I, 1).Value <> "" Then Texte = Texte & .Cells(I, 1).Value & "; "

        Next

        Texte = Left(Texte, Len(Texte) - 2) 'retire le point-virgule et l'espace de fin

    End With

    MsgBox Texte

    With Worksheets("Datas")

        Derlign = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Cells(Derlign, 1).Value = TextBox1
        .Cells(Derlign, 2).Value = ComboBox1
        .Cells(Derlign, 3).Value = ListBox2
        .Cells(Derlign, 4).Value = TextBox2
        .Cells(Derlign, 5).Value = Texte

    End With

    Me.Hide

End Sub

Bonjour,

Merci beaucoup pour ta réponse Theze, j'ai tenté le code que tu me proposes et j'ai un message d'erreur qui est apparu

Erreur d'exécution '5' :

Agrument ou appel de procédure incorrect.

Dans le débogage la ligne de code suivante est en jaune :

Texte = Left(Texte, Len(Texte) - 2)

Merci d'avance.

Soledad

Bonjour à tous

Quelques variantes.

23classeur1-v1.xlsm (26.17 Ko)

Ré,

Le message d'erreur est dû au fait que la variable est vide = ""

Si tu as, à partir de A2, un où des mots dans au moins une cellule, tu ne peux pas avoir ce message d'erreur !

Merci infiniment à vous tous pour vos réponses.

gmb : c'est exactement ce qu'il me fallait, merci beaucoup beaucoup beaucoup !

Soledad

Rechercher des sujets similaires à "probleme concatener colonne code personnalise"