IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ajout via Userform [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    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.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Erratum; mercatog vient de me le faire remarquer; il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut
    Merci.

    En fait, à la base, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je ne suis pas sûr de bien comprendre... Tu veux la même chose que ton code, mais pour toutes tes listboxes ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    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 ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut
    Avec l'aide d'un collègue, nous avons trouvé une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Modification ou ajouter via userform
    Par toctoc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2013, 12h01
  2. ouvrir et visualiser onglet via userform
    Par cimbra55 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/03/2009, 17h34
  3. Onkey : comment limiter accès au VBA via userform et password
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/02/2009, 13h02
  4. Insertion d'une formule via userform
    Par kedas dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2007, 18h18
  5. Réponses: 2
    Dernier message: 22/03/2007, 22h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo