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 :

Userform Listbox VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Généraliste RH
    Inscrit en
    Mai 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Généraliste RH
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2022
    Messages : 3
    Par défaut Userform Listbox VBA
    Bonjour,

    Je voudrais créer un UserForm à partir duquel je peux ajouter de nouvelles personnes à la base de données et en même temps voir toutes les personnes dans une ListBox.

    1) Je ne vois pas ma base de données dans la ListBox, que les en-têtes.
    2) Je ne sais pas comment empêcher la base de données de s'ouvrir lorsque j'ouvre le UserForm.

    Merci d'avance à ceux d'entre vous qui s'intéressent à ces problèmes.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    '*************************************************************************
    'Procédure permettant d'initialiser la ListView au démarrage du formulaire
    '*************************************************************************
    Private Sub UserForm_Initialize()
     
        With ListView1
     
            .Gridlines = True       'Affiche ou pas les lignes
            .View = lvwReport       'Style de rapport
            .FullRowSelect = True   'Permet de sélectionner une ligne dans la liste
            'Création des en-têtes personnalisées avec leur largeur
            .ColumnHeaders.Add Text:="Civilité"
            .ColumnHeaders.Add Text:="Nom"
            .ColumnHeaders.Add Text:="Prénom"
            .ColumnHeaders.Add Text:="Email"
            .ColumnHeaders.Add Text:="Adresse"
            .ColumnHeaders.Add Text:="Ville"
            .ColumnHeaders.Add Text:="Cod postal"
            .ColumnHeaders.Add Text:="Pays"
            .ColumnHeaders.Add Text:="Téléphone"
     
       End With
     
        Call Actualisation 'On appelle la procédure qui actualise la ListView
     
    End Sub
    '*************************************************************************
    'Procédure permettant d'actualiser (ou de rafraichir)
    '*************************************************************************
    Private Sub Actualisation()
        Dim Item As ListItem
        Dim DerniereLigne As Integer
        Dim i As Integer
     
        ListView1.ListItems.Clear 'On vide le contenu de la liste à chaque chargement
        DerniereLigne = Sheets("Annuaire").Cells(Rows.Count, 1).End(xlUp).Row 'On cherche la dernière ligne du tableau
     
        'On boucle toutes les lignes et on charge les information dans la ListeView
        For i = 2 To DernierLigne
     
        'On affiche dans la ListeView le contenu de la base de données.
        Set Item = ListView1.ListItems.Add(Text:=Sheets("Annuaire").Cells(i, 1))
        Item.SubItems(1) = Sheets("Annuaire").Cells(i, 1)
        Item.SubItems(2) = Sheets("Annuaire").Cells(i, 2)
        Item.SubItems(3) = Sheets("Annuaire").Cells(i, 3)
        Item.SubItems(4) = Sheets("Annuaire").Cells(i, 4)
        Item.SubItems(5) = Sheets("Annuaire").Cells(i, 5)
        Item.SubItems(6) = Sheets("Annuaire").Cells(i, 6)
        Item.SubItems(7) = Sheets("Annuaire").Cells(i, 7)
        Item.SubItems(8) = Sheets("Annuaire").Cells(i, 8)
        Item.SubItems(9) = Sheets("Annuaire").Cells(i, 9)
     
        Next i
     
    End Sub
    Private Sub btnEfface_Click()
        txtCivilité = ""
        txtNom = ""
        txtPrénom = ""
        txtPrénom = ""
        txtEmail = ""
        txtAdresse = ""
        txtVille = ""
        txtCodePostal = ""
        txtPays = ""
        txtTéléphone = ""
    End Sub
     
    Private Sub btnFermer_Click()
        Unload Me
    End Sub
     
     
    ' *********************************
    ' Procédure permettant d'ajouter un nouvel enregistrement
    ' dans la base des dons
    ' *********************************
    Private Sub btnAjout_Click()
        Sheets("Annuaire").Activate
        Range("B2").Select
        Selection.End(xlDown).Select 'On se positionne sur la dernier ligne non vide
        Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas
        ActiveCell.Offset(0, -1).Value = txtCivilité
        ActiveCell.Offset(0, 0).Value = txtNom
        ActiveCell.Offset(0, 1).Value = txtPrénom
        ActiveCell.Offset(0, 2).Value = txtEmail
        ActiveCell.Offset(0, 3).Value = txtAdresse
        ActiveCell.Offset(0, 4).Value = txtVille
        ActiveCell.Offset(0, 5).Value = txtCodePostal
        ActiveCell.Offset(0, 6).Value = txtPays
        ActiveCell.Offset(0, 7).Value = txtTéléphone
     
        MsgBox "Le donateur a bien été ajouter dans l'annuaire", vbOKOnly + vbInformation, "Confirmation"
     
    End Sub

  2. #2
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Tu n'utilises pas "Option Explicit" en début de code. Tu utilises donc des variables à la volée au fur et à mesure et sans contrôle de déclaration en amont.

    Résultat:

    Citation Envoyé par CHILLSHOT95 Voir le message
    1) Je ne vois pas ma base de données dans la ListBox, que les en-têtes.
    Normal. Regarde dans quelle variable tu enregistres le numéro de la dernière ligne
    Citation Envoyé par CHILLSHOT95 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Sheets("Annuaire").Cells(Rows.Count, 1).End(xlUp).Row 'On cherche la dernière ligne du tableau
    Puis quelle variable tu utilises dans ton for
    Citation Envoyé par CHILLSHOT95 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 2 To DernierLigne

  3. #3
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Bonjour,

    Une autre façon de faire, à adapter/compléter:
    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
    35
    36
    37
    38
    Option Explicit
     
    Private Sub btnAjouter_Click()
        Dim rAnn As Range
        Set rAnn = Range("TAnn")
        DataLigne rAnn.Rows(rAnn.Rows.Count).Offset(1, 0)   '--- remplir nouvelle ligne sous le tableau
        Me.lbAnnuaire.ListIndex = Range("TAnn").Rows.Count  '--- repositionnement
    End Sub
     
    Private Sub btnCorriger_Click()
        Dim k As Long
        k = Me.lbAnnuaire.ListIndex
        DataLigne Range("TAnn").Rows(k)                     '--- corrige ligne k du tableau
        Me.lbAnnuaire.ListIndex = k                         '--- repositionnement
    End Sub
     
    Private Sub DataLigne(rLigne As Range)
        With rLigne
            .Cells(1) = Me.txtCivilité
            .Cells(2) = Me.txtNom
            .Cells(3) = txtPrénom
            '--- et ainsi de suite
        End With
        Me.lbAnnuaire.List = Range("TAnn[#All]").Value      '--- mise à jour listbox
    End Sub
     
    Private Sub lbAnnuaire_Click()
        Dim k As Long
        k = Me.lbAnnuaire.ListIndex
        Me.txtCivilité = Me.lbAnnuaire.List(k, 0)
        Me.txtNom = Me.lbAnnuaire.List(k, 1)
        Me.txtPrénom = Me.lbAnnuaire.List(k, 2)
        '--- et ainsi de suite
    End Sub
     
    Private Sub UserForm_Initialize()
        Me.lbAnnuaire.List = Range("TAnn[#All]").Value      '--- TAnn = nom tableau structuré annuaire
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2003] Userform ListBox Donnée
    Par PUARAI dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2009, 21h46
  2. Problème listbox vba
    Par fabrice2205 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2008, 19h39
  3. affichage userform sous VBA
    Par jpenja dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/10/2007, 15h38
  4. execution simultannée de deux userforms en vba
    Par adilissimo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2007, 23h11
  5. [VBA]Userform Excel VBA
    Par ducater6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/03/2007, 23h42

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