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 :

afficher une valeur dans une textbox en fonction d'une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut afficher une valeur dans une textbox en fonction d'une listbox
    Bonjour à tous,

    je vous présente mon classeur puis mon problème.

    Je possède 3 classes qui sont répartit en 4 groupes.
    listbox1 est la selection de la classe : A, B ou C
    listbox2 est la section en fonction de listbox 1 du groupe : Aa, Ba,Ca,Da,Ab,Bb....Dc
    Listbox3 est la selection de l'élève en fonction de la classe et du groupe : Classe A, Gr Aa : élève Aa1..........

    Dans mon Excel, les élèves sont repartit dans les colonnes A,C,E,G et leur emplacement respectif dans les colonnes B,D,F,H

    Mon problème : lors de la selection de l'élève je veux faire apparaitre une textbox avec l'emplacement de l'élève.

    Exemple : si on selectionne l'élève Cb3 (feuille excel 2, cellule E6) alors la textbox affiche la cellule F6 de cette même feuille.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Value = Range(ListBox3.RowSource).Cells(ListBox3.ListIndex + 1, 1).Offset(, 1).Value

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Super ça fonctionne parfaitement sur ce programme. Vraiment merci.

    (Par contre sur mon vrai programme, qui est une bibliothèque qui référence les outils de métrologie ça me met une erreur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ListBox1a_Click()
     
    LabelNom.Visible = True
    LabelNom.Caption = "emplacement"
    TextBoxNom.Visible = True
    CommandButton6.Visible = False
     
    TextBoxNom.Value = Range(ListBox1a.RowSource).Cells(ListBox1a.ListIndex + 1, 1).Offset(, 1).Value
    est-ce possible que l'erreur vienne du fait que j'alimente la listbox1a de cette manière ?
    Seulement avec cette méthode je pouvais en fonction d'une liste dans Excel changer les éléments de listbox1a à listbox1b en fonction de leurs disponibilités.

    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
    Private Sub ListBoxC_Click()
    ListBox1a.Clear
    ListBox1b.Clear
    MultiPage1.Visible = True
     
    CommandButton6.Visible = False
     
    Dim rngA As Range, rngB As Range, rngC As Range
     
      Select Case Me.ListBoxC.ListIndex
        Case 0
          Set rngA = Range("Feuil8!A757:A769")
        Case 1
          Set rngA = Range("Feuil8!C757:C769")
        Case 2
          Set rngA = Range("Feuil8!E757:E769")
        Case 3
          Set rngA = Range("Feuil8!G757:G769")
        Case 4
          Set rngA = Range("Feuil8!I757:I769")
        Case 5
          Set rngA = Range("Feuil8!K757:K769")
        Case 6
          Set rngA = Range("Feuil8!M757:M769")
        Case 7
          Set rngA = Range("Feuil8!O757:O769")
        Case 8
          Set rngA = Range("Feuil8!Q757:Q769")
        Case 9
          Set rngA = Range("Feuil8!S757:S769")
        Case 10
          Set rngA = Range("Feuil8!U757:U769")
      End Select
     
      For Each rngB In rngA.Cells
        Set rngC = Range("FEUIL3!H2:H66999").Find(rngB, , , xlWhole)
          If rngC Is Nothing Then
            Me.ListBox1a.AddItem rngB
          Else
            Me.ListBox1b.AddItem rngB
          End If
      Next rngB
     
    End Sub

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour

    Ici tu utilises la méthode AddItem et non pas RowSource. C'est sûr que si on n'utilise pas la propriété RowSource pour remplir le contrôle Listbox, on ne peut pas utiliser la propriété RowSource pour savoir d'où proviennent les données.

    Une solution serait de créer une ListBox multicolonnes. ( Voir comment dans ce tutoriel :http://silkyroad.developpez.com/VBA/ControlesUserForm/)

    Ce qui te permettrait d'inclure immédiatement dans la seconde colonne du Listbox, les infos supplémentaires concernant chacun des items du Listbox.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    D'accord, donc une fois ma listbox à deux colonne crée, comment dois-je tourner mon code en rowsource ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      For Each rngB In rngA.Cells
        Set rngC = Range("FEUIL3!H2:H66999").Find(rngB, , , xlWhole)
          If rngC Is Nothing Then
            Me.ListBox1.AddItem rngB
          Else
            Me.ListBox1.list(ListBox1.ListCount - 1, 1).AddItem rngB
          End If
      Next rngB
     
    End Sub

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Ce serait mieux comme ceci pour que les ListBox contiennent toutes les infos:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For Each rngB In rngA.Cells
        Set rngC = Worksheets("Feuil3").Range("E2:E6000").Find(rngB, , , xlWhole)
          If rngC Is Nothing Then
            Me.ListBox1.AddItem rngB
            Me.ListBox1.List(ListBox1.ListCount - 1, 1) = rngB.Offset(, 1)
          Else
            Me.ListBox2.AddItem rngB
            Me.ListBox2.List(ListBox2.ListCount - 1, 1) = rngB.Offset(, 1)
          End If
      Next rngB

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Si je comprends bien, mes deux listboxs contiennent 2 colonnes ? pourquoi ?

    Et je n'arrive pas à faire fonctionner le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Value = Range(ListBox1.RowSource).Cells(ListBox1.ListIndex + 1, 1).Offset(, 1).Value
    avec ton nouveau code

    encore merci pour ton aide

    Cordialement

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par MatthieuT42 Voir le message
    Si je comprends bien, mes deux listboxs contiennent 2 colonnes ? pourquoi ?
    On met dans la deuxième colonne une information utile qu'on peut retrouver simplement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_Click()
      TextBox1 = ListBox1.List(ListBox1.ListIndex, 1)
    End Sub
    Citation Envoyé par MatthieuT42 Voir le message
    Et je n'arrive pas à faire fonctionner le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Value = Range(ListBox1.RowSource).Cells(ListBox1.ListIndex + 1, 1).Offset(, 1).Value
    Question intéressante!

    Si on utilise AddItem, on ne peut pas utiliser la propriété RowSource. C'est soit l'un, soit l'autre.
    Mais ca ne cause pas de problème : on peut utiliser une colonne du ListBox pour y placer le Rowsource respectif de chaque élément du ListBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me.ListBox1.AddItem rngB
    Me.ListBox1.List(ListBox1.ListCount - 1, 1) = rngB.Parent.Name & "!" & rngB.Address
    Ensuite on récupère facilement n'importe quel élément de la ligne d'origine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub ListBox1_Click()
     TextBox1.Value = Range(ListBox1.List(ListBox1.ListIndex, 1)).Offset(, 1)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Je pense qu'on se rapproche du but

    Après avoir intégré tes codes il subsiste une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Me.ListBoxA1a.List(ListBoxA1a.ListCount - 1, 1) = rngB.Parent.Name & "!" & rngB.Address
    m'affiche dans la deuxième colonne de ma listbox : Feuil5!$A$8, Feuil5!$A$9 .......

    du coup j'ai essayé de laisser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Me.ListBoxA1a.List(ListBoxA1a.ListCount - 1, 1) = rngB.Offset(, 1)
    Mais dans la deuxième colonne il n'affiche plus rien !

    Dans les deux cas il ne s'affiche rien dans ma textbox, je pense que si on arrive à faire apparaitre ce que l'on veut dans la colonne 2 de la listbox, ma textbox affichera la bonne valeur

    Sinon j'avais pensé à un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListBoxA1a.List(ListBoxA1a.ListCount - 1, 1).RowSource = rngB
    pour intégrer rowsource mais il ne fonctionne pas

    encore merci pour ta patience

    cordialement

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    As-tu bien lu la dernière intervention de Docmarti ?
    Si on utilise AddItem, on ne peut pas utiliser la propriété RowSource. C'est soit l'un, soit l'autre.
    C'est la même chose avec List

    Voici un petit exemple de la procédure événementielle Initialize qui permet de visualiser les deux méthodes
    Méthode 1 : Utilisation de la méthode AddItem et de la propriété List
    Méthode 2 : Utilisation de la propriété RowSource

    La plage utilisée est sur une feuille nommée [Pays] de $A$2:$B$7 plage, les étiquettes de colonnes étant en $A$1:$B$1
    Les données Colonne A, les capitales, en colonne B les pays
    Le UserForm a un contrôle ListBox nommé lstCity
    L'utilisation de la propriété RowSource permet d'afficher les étiquettes de colonnes (propriété ColumnHeads à TRUE)
    La procédure
    Pour tester, modifier la valeur de la variable Method (1 ou 2).
    Pour la méthode 1, modifier la variable Visible pour afficher ou pas l'adresse complète de l'enregistrement ([Classeur]Feuille!AdresseAbsolueCellule) affiché dans la liste
    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
    Private Sub UserForm_Initialize()
     Dim rng As Range, row As Long, Visible As Boolean, Method As Byte
     Set rng = ThisWorkbook.Worksheets("Pays").Range("A2:B7")
     ' Paramètres
     Method = 1
     Visible = False ' pour méthode 1, affichera ou pas la colonne 1 du ListBox
     ' Utilisation de RowSource ou AddItem & List
     Select Case Method
      Case 1 ' AddItem & List
       With lstCity
        .ColumnCount = 3: .ColumnWidths = IIf(Visible, "120;50;50", "0;50;50")
        For row = 1 To rng.Rows.Count
        .AddItem rng.Cells(row, 1).Address(external:=True) ' Adresse
        .List(row - 1, 1) = rng.Cells(row, 1) ' Capitale
        .List(row - 1, 2) = rng.Cells(row, 2) ' Ville
        Next
       End With
      Case 2
       With lstCity
       .RowSource = rng.Address(external:=True) ' Equiv "[Classeur]Pays!$A$2:$B$7"
       .ColumnHeads = True
       .ColumnCount = 2
       End With
     End Select
    End Sub

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    bonjour Philippe

    As-tu bien lu la dernière intervention de Docmarti ?
    J'avais compris qu'on ne pouvait pas les utiliser ensemble, mais en créant un listbox à deux colonne on alimentait la première avec additem et la deuxième avec rowsource ce qui permettait d'utiliser la première pour réaliser ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      For Each rngB In rngA.Cells
        Set rngC = Range("FEUIL3!H2:H66999").Find(rngB, , , xlWhole)
          If rngC Is Nothing Then
            Me.ListBox1.AddItem rngB
          Else
            Me.ListBox1.list(ListBox1.ListCount - 1, 1).AddItem rngB
          End If
      Next rngB
     
    End Sub
    et la deuxième colonne pour réaliser celui la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Value = Range(ListBox1.RowSource).Cells(ListBox1.ListIndex + 1, 1).Offset(, 1).Value
    avais-je mal compris ?

    Pourrais tu joindre un fichier exemple pour ton exemple, je ne comprend pas entièrement comment je peux le retranscrire pour mon programme.

    Merci pour ta réponse et bonne journée.

    Cordialement

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'avais compris qu'on ne pouvait pas les utiliser ensemble, mais en créant un listbox à deux colonne on alimentait la première avec additem et la deuxième avec rowsource ce qui permettait d'utiliser la première pour réaliser ce code
    Non, on gère une ou plusieurs colonnes avec la propriété RowSource
    Si on utilise la méthode AddItem, c'est la propriété List qui permet d'ajouter les autres colonnes.
    Pour les deux cas, l'affichage de plusieurs colonnes est définie par la propriété ColomnCount et ColumnWidths pour la largeur des colonnes.
    Voir ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ColumnCount = 3: .ColumnWidths = IIf(Visible, "120;50;50", "0;50;50")
    Pourrais tu joindre un fichier exemple pour ton exemple, je ne comprend pas entièrement comment je peux le retranscrire pour mon programme.
    Mon fichier exemple se résume à un classeur d'une feuille nommée [Pays] avec une plage de données A1:B7 soit une ligne de titre (Capitale, Pays) et six lignes de données (colonne A les capitales, colonne B les pays)
    Un UserForm avec un contrôle ListBox nommé lstCity.
    Dès que tu a créé ce formulaire et entré les données (moins de 10 minutes), tu copies/colles la procédure que j'ai publiée et le tour est joué.
    Pour les tests modifier la variable Method et Visible (pour la méthode 1)

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Je viens de creer ton classeur mais il doit y avoir une erreur car il ne fonctionne pas

    Encore merci

    cordialement

    Sinon n'y aurait il pas un moyen de transformer ce code pour qu'il fonctionne avec additem :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Value = Range(ListBox1.RowSource).Cells(ListBox1.ListIndex + 1, 1).Offset(, 1).Value
    il faut que lorsque l'on click sur l'élément de la listbox1 qui imaginon est est positionné "Feuil1!A1" alors une textbox affiche l'élément positionné dans la colonne de droite (feuil1!A2)

  14. #14
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je viens de creer ton classeur mais il doit y avoir une erreur car il ne fonctionne pas
    C'est que tu n'as pas respecté les consignes (Nom de la feuille, plage de données) ou sur le formulaire oublié de renommé le contrôle ListBox
    "ne fonctionne pas" cela n'aide vraiment pas. Un peu plus de précision te permettra d'avancer.

    Sinon n'y aurait il pas un moyen de transformer ce code pour qu'il fonctionne avec additem :
    As-tu examiné le code que j'ai publié (ligne 10 à 17) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With lstCity
    .ColumnCount = 3: .ColumnWidths = IIf(Visible, "120;50;50", "0;50;50")
     For row = 1 To rng.Rows.Count
     .AddItem rng.Cells(row, 1).Address(external:=True) ' Adresse
     .List(row - 1, 1) = rng.Cells(row, 1) ' Capitale
     .List(row - 1, 2) = rng.Cells(row, 2) ' Ville
     Next
    End With
    lstCity est le nom du contrôle ListBox, rng est une variable objet qui est la plage de données (dans mon exemple A2:B7)
    La boucle For row = 1 To rng.Rows.Count parcourt toutes les lignes des données et ajoute (AddItem) l'adresse de la cellule de la colonne 1 de la ligne (Row) et ensuite ajoute les autres colonnes de la même ligne avec la propriété List

    Si mes explications ne sont pas claires, je te conseille la lecture de Utiliser les contrôles dans un UserForm, en VBA Excel

    Voici un autre exemple

    Un UserForm avec les contrôles
    ListBox nommé lstCity et 3 TextBox, nommés respectivement lstAddress, lstCountry, lstCapital
    Deux feuilles dans le classeur nommées [Europe] et [Afrique] avec chacune leur liste de données avec deux colonnes (Colonne A Pays, Colonne B les capitales)
    Le programme parcourt toutes les feuilles du classeur et si le nom des feuilles parcourues sont égales à europe ou afrique alors lecture les enregistrements de la liste à partir de la ligne 2
    Dès que l'on sélectionne un élément de la liste, les TextBox sont alimentés par les données de l'enregistrement

    Procédures à copier/coller dans la partie code du 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
    Option Explicit
    Private Sub lstCity_Click()
     With Me
     .txtAddress = .lstCity.List(.lstCity.ListIndex, 0)
     .txtCountry = .lstCity.List(.lstCity.ListIndex, 1)
     .txtCapital = .lstCity.List(.lstCity.ListIndex, 2)
     End With
    End Sub
    Private Sub UserForm_Initialize()
     Dim rng As Range, sht As Worksheet
     Dim Elem, row As Long, Visible As Boolean
     Set rng = ThisWorkbook.Worksheets("Pays").Range("A2:B7")
     For Each sht In ThisWorkbook.Worksheets
      Select Case LCase(sht.Name)
       Case "europe", "afrique"
        Set rng = sht.Range("A1").CurrentRegion
        ' Paramètres
        Visible = False ' Affichera ou pas la colonne 1 du ListBox
        With lstCity
         .ColumnCount = 3: .ColumnWidths = IIf(Visible, "120;50;50", "0;50;50")
         For row = 2 To rng.Rows.Count
         .AddItem rng.Cells(row, 1).Address(external:=True) ' Adresse
         .List(Elem, 1) = rng.Cells(row, 1) ' Ville
         .List(Elem, 2) = rng.Cells(row, 2) ' Capitale
          Elem = Elem + 1
         Next row
        End With
      End Select
     Next sht
    End Sub

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 46
    Points : 36
    Points
    36
    Par défaut
    Oui désolé j'avais oublié de renommer la feuille.

    Je ne l'avais pas compris comme ça, mais la tes explications ont été très claires.
    Merci je vais essayer de le rentrer dans mon programme.

    Je reviendrai si j'ai d'autres questions.

    Bonne journée philippe.

    pour le deuxième programme avec europe et afrique, qui je pense va m'ettre très utile.

    3 TextBox, nommés respectivement lstAddress, lstCountry, lstCapital
    dans ton programme c'est txtAddress , txtCountry et txtCapital

    ligne 12 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rng = ThisWorkbook.Worksheets("Pays").Range("A2:B7")
    tu as dis que les deux feuilles s'appelait "Europe" et "afrique", le programme ne reconnait donc pas la feuille Pays, il faut que je change quoi dans le code ci-dessus ?

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    tu as dis que les deux feuilles s'appelait "Europe" et "afrique", le programme ne reconnait donc pas la feuille Pays, il faut que je change quoi dans le code ci-dessus ?
    Il s'agit d'autres procédures dont j'ai publié l'ensemble et expliqué en long et en large l'organisation des feuilles et la liste des contrôles du formulaire ainsi que leur nom.
    Plus que cela c'est difficile. Il faut lire les réponses dans leur entièreté.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/01/2015, 15h28
  2. Réponses: 3
    Dernier message: 31/01/2014, 08h19
  3. Réponses: 2
    Dernier message: 05/03/2008, 22h01
  4. Placer une valeur dans un textbox
    Par ThunderBib dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/05/2006, 22h34

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