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 :

ListBox2 récupère liste de ListBox1 colonne 2 [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut ListBox2 récupère liste de ListBox1 colonne 2
    bonjour à tous et meilleurs voeux !

    j'ai une ListBox1 qui a 3 colonnes :
    col1 = qté
    col2 = code art
    col3 = désignation art
    cette listbox se met à jour en fonction d'une combobox

    je veux dans une ListBox2 (dans un autre onglet du formulaire) récupérer la list des codes art soit la liste de la colonne 2 de la ListBox1

    et je n'arrive pas à trouver la syntaxe pour cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ListArt As Range
     ListArt = ListBox1.ListIndex(1)
      With Me.ListBox2
     .List = ListArt
    comment dire ListBox1.List(col 1) ?
    d'avance merci pour votre aide

  2. #2
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour fidecourt

    je viens ajouter une réponse a une demande que je fait et j'ai joint un fichier qui réponds a mon avis a une partie de tes demandes
    ma est "deploiement dans cellulebis"tu peux le télécharger sans problème

    cordialement et bonne année

    Pascal

  3. #3
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    je te remercie Grisan, mais je ne pense pas que ton exemple soit la réponse à ma demande
    tout d'abord je n'accède pas à ton formulaire formulaire 'liste du matériel' mais seulement aux feuilles du dossier xls avec un seul bouton "executer"
    mais bon ma question reste entière

    depuis ListBox1 position colonne 2 (il y en a 3)
    alimenter la ListBox2
    je remets le code (j'avais oublié de copier la fin!!!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ListArt As Range
     ListArt = ListBox1.ListIndex(1)
      With Me.ListBox2
     .List = ListArt
    End with

  4. #4
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour fidecourd

    pour accéder a mon userform(frmmateriel)il faut cliquer sur excecuter puis sur l'usf qui s'affiche sur le bouton "choix matériel" et frmmateriel s"affiche

    je vais voir ce que je peux faire mais le mieux serai que tu joigne un fichier exemple

    cordialement

    Pascal

  5. #5
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    je te joins le fichier, en sachant que :

    ListBox1 = ListBoxArtDes
    ListBox2 = ListBoxArtAgr

    le code se trouve dans la partie :

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    Private Sub ComboBoxFeux_Click()
     
     
    Application.EnableEvents = False
    Application.ScreenUpdating = False
     
    Sheets("devis").Select
     
    With ComboBoxFeux
        TextBoxFeu.Text = .List(.ListIndex, 1)
     
    End With
    'quand on clique sur une valeur de la comboboxFeux,
    'on affiche le détail qui compose le feu sélectionné
     
     
    Dim ShF As Worksheet
    Set ShF = Worksheets("feux")
    Dim Feu As String
     
     
    Feu = ComboBoxFeux.Value
     
    On Error Resume Next
    With ShF
        'définir la zone de critère
        'choisir l'étiquette de la colonne A1 --> champ où exploiter le filtre
        .Range("I1") = .Range("A1")
        .Range("I2") = Feu 'la valeur du critère du filtre
        ShF.Range("K1").CurrentRegion.Clear
        'définir la plage de cellules pour le filtre...
     
        With .Range("A1:G" & .Range("A65536").End(xlUp).Row)
            'application du filtre
            .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=ShF.Range("I1:I2"), _
                 CopyToRange:=ShF.Range("K1"), Unique:=False
                'copie vers la cellule où débutera la plage résultat
        End With
        .ShowAllData
    End With
     
    Sheets("devis").Select
    Columns("A:K").Select
    Selection.ClearContents
    Range("A1").Select
    Sheets("recupdevis").Select
    Columns("A:K").Select
    Selection.Copy
    Sheets("devis").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("recupdevis").Select
    Range("A1").Select
    Application.CutCopyMode = False
    Sheets("devis").Select
    Range("A1").Select
     
    Dim Rg As Range
    With Worksheets("devis")
       Set Rg = .Range("K1:K" & .Range("K65536").End(xlUp).Row)
    End With
     
    Do Until ActiveCell = ""
        If ActiveCell = 0 Then
            Selection.EntireRow.Delete Shift:=xlDown
        Else
            ActiveCell.Offset(1, 0).Range("A1").Select
        End If
    Loop
     
    Sheets("devis").Select
    Range("A1").Select
     
    Dim DerLig As Long
    'Feuil7 n'est pas le nom de l'onglet mais de la propriété NAME
    'de la feuille visible seulement dans la fenêtre de l'éditeur de code.
    With Feuil7
        'si aucune donnée dans la feuille, sortie de la procédure.
        If IsEmpty(.UsedRange) Then Exit Sub
        'Trouver la dernière ligne où il y a des données
        'dans les colonnes A:C (à adapter)
        DerLig = .Range("A:K").Find(What:="*", _
                        LookIn:=xlValues, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious).Row
     
        'Affectation de la plage de cellules à une variable objet Range
        Set Rg = .Range("C1:C" & DerLig)
     
    End With
     
    Range("L2").Select
        ActiveCell.FormulaR1C1 = "=SUM(RC[-4]:R[198]C[-4])"
    TextBoxTotalDevis = Range("L2").Value
     
    With Me.ListBoxFresque
        ' Nombre des colonnes du tableau ou plage de données
        .ColumnCount = Rg.Columns.Count
        'S'assure que l'on peut sélectionner plus d'une ligne à la fois
        .MultiSelect = fmMultiSelectExtended
        'largeur des colonnes dans le listbox
        .ColumnWidths = "20"
        'Remplir le listbox avec les données du tableau
        .List = Rg.Value
        'S'assure qu'aucune ligne de listbox n'est sélectionnée.
        .ListIndex = -1
    End With
     
    'Feuil7 n'est pas le nom de l'onglet mais de la propriété NAME
    'de la feuille visible seulement dans la fenêtre de l'éditeur de code.
     
    With Feuil7
        'si aucune donnée dans la feuille, sortie de la procédure.
        If IsEmpty(.UsedRange) Then Exit Sub
        'Trouver la dernière ligne où il y a des données
        'dans les colonnes A:C (à adapter)
        DerLig = .Range("A:K").Find(What:="*", _
                        LookIn:=xlValues, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious).Row
     
     
        'Affectation de la plage de cellules à une variable objet Range
        Set Rg = .Range("D1:F" & DerLig)
     
    End With
     
    With Me.ListBoxArtDes
        ' Nombre des colonnes du tableau ou plage de données
        .ColumnCount = Rg.Columns.Count
        'S'assure que l'on peut sélectionner plus d'une ligne à la fois
        .MultiSelect = fmMultiSelectExtended
        'largeur des colonnes dans le listbox
        .ColumnWidths = "70"
        'Remplir le listbox avec les données du tableau
        .List = Rg.Value
        'S'assure qu'aucune ligne de listbox n'est sélectionnée.
        .ListIndex = -1
    End With
     
    'pour remplir la listbox2 (ListBoxArtAgr) de l'onglet Agréments du formulaire, je sélectionne la col.1
    'soit le code article de la ListBoxArtDes (listbox1)
    Dim ListArt As Range
     ListArt = BoxArtDes.ListIndex(1)
      With Me.ListBoxArtAgr
     .List = ListArt
    End With
     
    Application.EnableEvents = True
    Application.ScreenUpdating = True
     
    End Sub
    merci de ton aide !

  6. #6
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    bonjour à tous

    n'arrivant pas à trouver comment coder : ListBox2.List = ListBox1(col1).List

    j'ai changé la façon d'alimenter la ListBox2, c-à-d ListBoxArtAgr comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ListArt As Range
    With Worksheets("devis")
       Set ListArt = .Range("E1:E" & .Range("K65536").End(xlUp).Row)
    End With
     
    ListBoxArtAgr.List = ListArt.Value
    j'ai mis cette syntaxe à la suite du code de chaque CmdBottom qui réactualise la liste (insérer un art, supprimer ou modifier un art) et cela fonctionne parfaitement bien

    par contre si quelqu'un ou quelqu'une peut me renseigner sur ma question initiale, je veux bien apprendre !

    bonne journée à tous

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par fidecourt Voir le message
    comment dire ListBox1.List(col 1) ?
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.List(ListBox1.ListIndex, 0)
    le dernier paramètre correspond à la colonne de la ligne sélectionnée dans la ListBox : 0 = 1ère colonne, 1 = 2ème colonne, etc...

    Si tu veux récupérer les infos de la 2ème colonne et les injecter dans la ListBox2, tu peux faire comme ceci : (dans l'exemple j'exécute le code via un bouton sur le UserForm)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    Dim i As Integer
     
    For i = 0 To Me.ListBox1.ListCount - 1
        Me.ListBox2.AddItem Me.ListBox1.List(i, 1)
    Next
     
    End Sub
    Pour plus d'infos --> http://silkyroad.developpez.com/VBA/ControlesUserForm/

  8. #8
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    Merci Fring pour ta réponse, je garde ce code précieusement dans ma bible VBA Excel !
    j'espère que cela pourra servir à d'autres également
    bonne journée et bonne année 2011 !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/04/2007, 18h11
  2. [C#][debutant] Liste déroulante 2 colonnes cachées
    Par vavou dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/08/2006, 19h42
  3. pb avec liste déroulante à 2 colonnes visibles
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 10h38
  4. Réponses: 4
    Dernier message: 23/09/2005, 13h29
  5. [MFC] Classer une liste a plusieur colonne
    Par Kevgeii dans le forum MFC
    Réponses: 8
    Dernier message: 07/03/2005, 15h09

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