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 :

creation d'une listbox [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut creation d'une listbox
    bonjour
    j'ai vu beaucoup de chose sur les listbox, mais ce n'est pas evident a mettre en place.
    je cherche d'apres une feuille excel qui comporte 4 colonnes
    Nº prenom nom date naissance
    je souhaite faire afficher dans la listbox les 3 premieres colonnes.
    quand on clique dans cette listbox sur le prenom, que s'affiche dans une textbox a cote de la listbox la date naissance.
    si quelqu'un connais le code ou un tuto ou je pourrais comprendre comment faire, j'en serais enchante.
    merci
    chris
    Images attachées Images attachées  

  2. #2
    Membre averti
    Homme Profil pro
    Technicien dessinateur industriel
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien dessinateur industriel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut Création d'une ListBox
    Bonjour,
    voilà le code à coller dans la page de code de l'UserForm :

    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
     
    Const LIGNE_DEBUT_LISTE As Integer = 1
    Const LIGNE_FIN_LISTE As Integer = 10
     
    Const COLONNE_NUMERO As Integer = 1
    Const COLONNE_PRENOM As Integer = 2
    Const COLONNE_NOM As Integer = 3
    Const COLONNE_DATE As Integer = 4
     
    Dim iLigne As Integer
     
     
     
    Private Sub UserForm_Initialize()
        With ThisWorkbook.Sheets(1)
            ListBox1.ColumnCount = 3
            ListBox1.ColumnWidths = "20;60;60"
            For iLigne = LIGNE_DEBUT_LISTE To LIGNE_FIN_LISTE
                ListBox1.AddItem
                ListBox1.List(iLigne - 1, 0) = .Cells(iLigne, COLONNE_NUMERO).Value
                ListBox1.List(iLigne - 1, 1) = .Cells(iLigne, COLONNE_PRENOM).Value
                ListBox1.List(iLigne - 1, 2) = .Cells(iLigne, COLONNE_NOM).Value
            Next iLigne
        End With
        ListBox1.Selected(0) = True
    End Sub
     
     
     
    Private Sub ListBox1_Click()
        For iLigne = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(iLigne) = True Then
                TextBox_Date = ThisWorkbook.Sheets(1).Cells(iLigne + 1, COLONNE_DATE).Value
            End If
        Next iLigne
    End Sub
    Si tu as des questions sur ce code ou autres, n'hésite pas.
    Christophe.

  3. #3
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut listbox
    bonsoir christophe
    j'ai copier le code dans mon userform et je l'es adapter pour mon besoin mais il ne marche pas, il se bloque au niveau de ma feuille (BD1).
    tu sais peux etre pourquoi,je suis vraiment novice dans les listbox.

    voici le code

    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
    Option Explicit
     
    Const LIGNE_DEBUT_LISTE As Integer = 1
    Const LIGNE_FIN_LISTE As Integer = 10
     
    Const COLONNE_Nº As Integer = 1
    Const COLONNE_PRENOM As Integer = 2
    Const COLONNE_Nom As Integer = 3
    Const COLONNE_datenaissance As Integer = 4
     
    Dim iLigne As Integer
     
     
     
    Private Sub UserForm_Initialize()
        With ThisWorkbook.Sheets(1)
            ListBox1.ColumnCount = 3
            ListBox1.ColumnWidths = "20;60;60"
            For iLigne = LIGNE_DEBUT_LISTE To LIGNE_FIN_LISTE
                ListBox1.AddItem
                ListBox1.List(iLigne - 1, 0) = .Cells(iLigne, COLONNE_Nº).Value
                ListBox1.List(iLigne - 1, 1) = .Cells(iLigne, COLONNE_PRENOM).Value
                ListBox1.List(iLigne - 1, 2) = .Cells(iLigne, COLONNE_Nom).Value
            Next iLigne
        End With
        ListBox1.Selected(0) = True
    End Sub
     
     
     
    Private Sub ListBox1_Click()
        For iLigne = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(iLigne) = True Then
                TextBox_datenaissance = ThisWorkbook.Sheets(BD1).Cells(iLigne + 1, COLONNE_datenaissance).Value
            End If
        Next iLigne
    End Sub
    je te joint ma feuille excel aussi
    merci

  4. #4
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut listbox
    salut christophe
    mon userform s'ouvre, mais il n'y a rien dans la listbox

  5. #5
    Membre averti
    Homme Profil pro
    Technicien dessinateur industriel
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien dessinateur industriel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Si BD1 est le nom de la feuille contenant la liste alors
    soit il faut écrire le nom entre guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisWorkbook.Sheets("BD1")...
    ou écrire le numéro de la position de la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisWorkbook.Sheets(1)...
    L'avantage d'écrire le numéro au lieu du nom entre guillemets est que l'on peut renommer la feuille sans avoir à se soucier du code.

    J'imagine alors que la feuille BD1 n'est pas la première de ton classeur.

  6. #6
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut listbox
    non c'est la 3, j'ai une page menu, une BD et BD1 et autres derriere

  7. #7
    Membre averti
    Homme Profil pro
    Technicien dessinateur industriel
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien dessinateur industriel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    essaye avec ce code alors :

    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
     
    Const LIGNE_DEBUT_LISTE As Integer = 1
    Const LIGNE_FIN_LISTE As Integer = 10
     
    Const COLONNE_Nº As Integer = 1
    Const COLONNE_PRENOM As Integer = 2
    Const COLONNE_Nom As Integer = 3
    Const COLONNE_datenaissance As Integer = 4
     
    Dim iLigne As Integer
     
     
     
    Private Sub UserForm_Initialize()
        With ThisWorkbook.Sheets(3)
            ListBox1.ColumnCount = 3
            ListBox1.ColumnWidths = "20;60;60"
            For iLigne = LIGNE_DEBUT_LISTE To LIGNE_FIN_LISTE
                ListBox1.AddItem
                ListBox1.List(iLigne - 1, 0) = .Cells(iLigne, COLONNE_Nº).Value
                ListBox1.List(iLigne - 1, 1) = .Cells(iLigne, COLONNE_PRENOM).Value
                ListBox1.List(iLigne - 1, 2) = .Cells(iLigne, COLONNE_Nom).Value
            Next iLigne
        End With
        ListBox1.Selected(0) = True
    End Sub
     
     
     
    Private Sub ListBox1_Click()
        For iLigne = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(iLigne) = True Then
                TextBox_datenaissance = ThisWorkbook.Sheets(3).Cells(iLigne + 1, COLONNE_datenaissance).Value
            End If
        Next iLigne
    End Sub

  8. #8
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut listbox
    non cela ne marche pas avec sheets(1), quand je met BD1 a la place de mon userform s'affiche mais rien a l'interieur de la listbox

  9. #9
    Membre averti
    Homme Profil pro
    Technicien dessinateur industriel
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien dessinateur industriel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Il faut que tu remplace ton code par le dernière que je t'ai proposé,
    j'y ai corrigé les numéro de feuille.

  10. #10
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut
    j'ai recopie le 2 code avec sheets 3, je m'etais tompe lors de mon post precedent cela ne marche pas avec 3 mais bien avec BD1, mais rien dans ma listbox

    Voici mon fichier

  11. #11
    Membre averti
    Homme Profil pro
    Technicien dessinateur industriel
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien dessinateur industriel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Voilà les modifications en commentaires,
    et le fichier modifié joint :

    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
     
    Const LIGNE_DEBUT_LISTE As Integer = 2   'Commence à la ligne 2 car la première ligne est la légende (N°, prenom, nom1, date_naissance)
    Const LIGNE_FIN_LISTE As Integer = 70   'est la limite à modifier en fonction de la longueur de la liste du tableau Excel
     
    Const COLONNE_Nº As Integer = 1
    Const COLONNE_PRENOM As Integer = 2
    Const COLONNE_Nom As Integer = 3
    Const COLONNE_datenaissance As Integer = 4
     
    Dim iLigne As Integer
     
     
     
    Private Sub UserForm_Initialize()   'au lieu de :  Private Sub  Anniv_Initialize()
        With ThisWorkbook.Sheets(3)   'ou :    With ThisWorkbook.Sheets("BD1")   au lieu de :    With ThisWorkbook.Sheets(BD1)
            ListBox1.ColumnCount = 3
            ListBox1.ColumnWidths = "20;60;60"
            For iLigne = LIGNE_DEBUT_LISTE To LIGNE_FIN_LISTE
                ListBox1.AddItem
                ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 0) = .Cells(iLigne, COLONNE_Nº).Value
                ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 1) = .Cells(iLigne, COLONNE_PRENOM).Value
                ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 2) = .Cells(iLigne, COLONNE_Nom).Value
            Next iLigne
        End With
        ListBox1.Selected(0) = True
    End Sub
     
     
     
    Private Sub ListBox1_Click()
        For iLigne = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(iLigne) = True Then
                datenaissance = ThisWorkbook.Sheets(3).Cells(iLigne + LIGNE_DEBUT_LISTE, COLONNE_datenaissance).Value    'datenaissance = ...  au lieu de : TextBox_datenaissance = ... car le TextBox se nomme : datenaissance
            End If
        Next iLigne
    End Sub

  12. #12
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut listbox
    super christophe
    ca fonction tres bien,
    je n'est plus qu'a ajouter une case et faire la difference entre la date afficher et la date d'aujourd'hui, pour avoir l'age.
    et modifie la largeur pour voir entierement la listbox
    merci beaucoup a toi
    cris

  13. #13
    Membre averti
    Homme Profil pro
    Technicien dessinateur industriel
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien dessinateur industriel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Par défaut
    Avec plaisir et bonne continuation.

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

Discussions similaires

  1. creation d'une file listbox
    Par calimero91 dans le forum Access
    Réponses: 5
    Dernier message: 24/05/2006, 15h40
  2. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 10h53
  3. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25
  4. creation d'une raccourcie dans le menu demarre
    Par kenshi dans le forum MFC
    Réponses: 14
    Dernier message: 11/09/2003, 14h59
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

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