Ajouter contenu Listbox au classeur

Bonjour,

Dans une Listbox, j'ai une liste de données que j'aimerais intégrer à mon classeur à la validation de mon formulaire. Les données sont ajoutées via une textbox se trouvant sur un formulaire.

J'aimerais que toutes les données soient ajoutées sans que l'utilisateur ait besoin de les sélectionner. De plus, ces données doivent s'ajouter les unes à la suite des autres.

J'ai réussi à créer ce code qui permet d'ajouter toutes les données de ma Listbox dans une seule cellule. Par contre, je n'arrive pas à créer une boucle pour que chaque item soit ajouté l'un à la suite de l'autre ..

Private Sub Submit_Click() 'Validation du formulaire
    Dim L As Integer
    Dim i As Variant

    date_test = Now()

    L = Feuil1.Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
'
                 For i = 0 To Me.ListBox1.ListCount - 1
                     If temp <> "" Then temp = temp & " / " & Me.ListBox1.List(i) Else temp = Me.ListBox1.List(i)
                 Next i

    Range("C" & L).Value = temp
'
    Unload Me
'
End Sub

J'aimerais que la boucle ajoute mes données dans une colonne C comme indiqué via ce code :

Range("C" & L).Value = temp

Merci d'avance pour votre aide

Baptiste.

Bonjour,

N'ayant pas de fichier pour tester, je ne peux que soulever des interrogations ...

  • Feuil1 ... Est-ce bien la feuille sur laquelle tu veux écrire ?
  • Me.ListBox1 ... Est-ce bien le nom de la listbox à lire ?
  • temp ... n'est déclaré en tant que variable ...
  • L = Feuil1.Range("a65536").End(xlUp).Row + 1 ... la colonne A contient-elle bien des données même si tu veux écrire en C ?

ric

Bonjour ric

Mea culpa... j'ai oublié de joindre le fichier...

Pour répondre à tes questions :

  • Feuil1 ... Est-ce bien la feuille sur laquelle tu veux écrire ? oui
  • Me.ListBox1 ... Est-ce bien le nom de la listbox à lire ? oui
  • L = Feuil1.Range("a65536").End(xlUp).Row + 1 ... la colonne A contient-elle bien des données même si tu veux écrire en C ? oui

Dans le fichier que j'ai joint, j'ai réduit au strict minimum le formulaire du coup je ne remplis que les colonnes A, B et C.

Bonjour,

Si j'ai bien compris la demande ...

Un essai ...

Private Sub Submit_Click()    'Validation du formulaire
Dim L As Integer
Dim i As Variant
Dim temp As String

    date_test = Now()
    L = Feuil1.Range("a65536").End(xlUp).Row + 1    'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

    For i = 0 To Me.ListBox1.ListCount - 1
        If temp <> "" Then temp = temp & " / " & Me.ListBox1.List(i) Else temp = Me.ListBox1.List(i)
    Next i

    Range("A" & L).Value = date_test
    Range("B" & L).Value = date_test
    Range("C" & L).Value = "'" & CStr(temp)  ' < j'ajoute un apostrophe devant sinon certains chiffres sont interprétés en tant que date 

    Unload Me
End Sub

ric

Bonjour ric,

C'est pas tout à fait le résultat que je cherche à obtenir. Je vais essayer de réexpliquer :

1) L'utilisateur ajoute des données dans la Listbox via le formulaire

200603121034850978

2) Après validation du formulaire les données s'ajoutent les unes à la suite des autres

200603121134448810

Horusbk

Bonjour,

Dans ce cas ...

Un essai ...

Private Sub Submit_Click()    'Validation du formulaire
Dim L As Integer
Dim i As Variant
Dim temp As String

    date_test = Now()

   L = Feuil1.Range("a65536").End(xlUp).Row + 1    'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

    For i = 0 To Me.ListBox1.ListCount - 1
        Range("A" & L).Value = date_test
        Range("B" & L).Value = date_test
        Range("C" & L).Value = Me.ListBox1.List(i)
        L = L + 1
    Next i

    Unload Me
End Sub

ric

Bonjour,

C'est parfait ! Merci beaucoup

Je passe le sujet en résolu.

Je vois L = L + 1 dans ton code, à quoi cela sert ?

Horusbk

Bonjour,

Avant la boucle, la dernière ligne non vide est stockée dans la variable L.

Or, L doit être incrémenté pour écrire l'item suivant de la liste sur la prochaine ligne vide ...

Sinon, l'écriture des différents items de la liste se ferait toujours sur la même ligne ...

D'où : L = L +1

ric

Rechercher des sujets similaires à "ajouter contenu listbox classeur"