Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 08h55   #1
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 140
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 140
Points : 35
Points : 35
Par défaut Ajout via Userform

Bonjour,

J'utilise une userform pour de la saisie, cette userform possède des listes en cascades. Lorsque je valides (avec le bouton ok), je récupère bien mes données sélectionnées dans ma feuille excel à un endroit bien défini.

Ce que je souhaite faire, c'est d'avoir un bouton Ajout, qui pourrai me permettre de ne pas sortir de la Userform, et qui m'ajouterai mes sélections les une en dessous de autres.

Par avance merci de votre aide.
meumeu73.1 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 10h29   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Avec deux listboxes dont les données se coopient en colonnes A et B :

Code :
1
2
3
4
5
6
7
8
9
Private Sub cbAjout_Click()
    Dim Ligne As Long
    With Sheets("Feuil1")
        Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(Ligne, 1) = Me.listbox1.Value
        .Cells(Ligne, 2) = Me.listbox2.Value
        'etc.
    End With
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 11h02   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Erratum; mercatog vient de me le faire remarquer; il faut mettre :

Code :
Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
au lieu de :

Code :
Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 12h07   #4
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 140
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 140
Points : 35
Points : 35
Merci.

En fait, à la base, j'ai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
    Dim I As Integer
    With Me.BU
    For I = 0 To .ListCount - 1
    If .Selected(I) = True Then
        If Range("A12") > 0 Then
            Range("A11").End(xlDown).Offset(1, 0).Value = .List(I)
            Else
            Range("A11").Offset(1, 0).Value = .List(I)
 
        End If
    End If
    Next I
    End With
Pour chacune de mes listebox

Je n'arrive pas à adapter le code que vous m'avez indiquer.
meumeu73.1 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 15h35   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Je ne suis pas sûr de bien comprendre... Tu veux la même chose que ton code, mais pour toutes tes listboxes ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 09h41   #6
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 140
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 140
Points : 35
Points : 35
En fait, avec mon code, j'arrive à récupérer la sélection de ma listebox, tandis avec votre code, je n'y arrive pas ?

Code :
1
2
3
4
5
6
7
8
9
10
 
Private Sub cbAjout_Click()
    Dim Ligne As Long
    With Sheets("Feuil1") ' j'ai mis le nom de la feuille sur laquelle je veux mon résultat
        Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Cells(Ligne, 1) = Me.listbox1.Value  ' j'ai remplacé listbox1 par le nom de ma première listbox
        .Cells(Ligne, 2) = Me.listbox2.Value ' idem par le nom de ma deuxième listbox
        'etc.
    End With
End Sub
et le résultat est une feuille vide.
meumeu73.1 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 10h35   #7
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Ne tiens pas compte de mon code, je n'ai pas compris ta question. Ce que je ne comprends pas : est-ce que ton code fonctionne comme tu veux pour une listbox et tu veux généraliser à d'autres (toutes ?) listboxes ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 11h32   #8
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 140
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 140
Points : 35
Points : 35
Avec l'aide d'un collègue, nous avons trouvé une solution :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub Command_Ajout_Click()
 
    Dim ligne As Integer
    ligne = 12
    Dim ligneFree As Integer
    ligneFree = -1
    With Sheets("Feuil1")
    Do Until ligneFree <> -1
        If (.Cells(ligne, 1).Value = "") Then
            ligneFree = ligne
        End If
        ligne = ligne + 1
    Loop
 
    Dim i As Integer
    For i = 0 To Liste1.ListCount - 1
        If (Liste1.Selected(i) = True) Then
            Sheets("Feuil1").Cells(ligneFree, 1).Value = Liste1.List(i)
        End If
    Next
 
    Dim j As Integer
    For j = 0 To Liste2.ListCount - 1
        If (Liste2.Selected(j) = True) Then
            Sheets("Feuil1").Cells(ligneFree, 2).Value = Liste2.List(j)
        End If
    Next
 
    '''etc....
 
    End With
 
 
End Sub
Merci pour votre implication sur ces forums.
meumeu73.1 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h56.


 
 
 
 
Partenaires

Hébergement Web