Contenu cellules et listbox méthode additem

Bonjour à tous,

J'ai fait quelques recherches sur l'utilisation des listbox et notamment les différentes manières de "remplir" ces listbox.

J'ai quand même des difficultés à faire tourner mon programme.

Situation:

J'ai créé plusieurs userform pour compléter, modifier et faire des recherches dans un tableur excel et après un traitement de filtrage je me retrouve avec un nouveau tableur qui résulte du premier.

Dans le nouveau tableur il y a des informations contenues dans 15 colonnes (A à O).

Ce que je souhaite faire, c'est alimenter ma listbox avec les colonnes A, E, F, G, H, J, K et L.

J'ai cherché comment fonctionne la méthode additem des list, de ce que j'ai compris:

  • pour renseigner la première colonne d'une ligne de la listbox on utilise additem avec un argument
  • pour renseigner les colonnes suivantes, de la même ligne, on utilise listbox.list() = la valeur que l'on veut.

Mon problème st que je n'arrive même pas à renseigner la première colonne.

Je procède comme suit:

Listbox1.additem nomdemafeuille.cells(macellule).value

Listbox1.list(ListBox1.ListCount - 1, 1) = nomdemafeuille.cells(macellule).value (deuxième colonne de la première ligne de ma listbox si je ne dis pas de bêtises)

etc pour les autres colonnes

Le tout inséré dans une boucle suivant le nombre de ligne de mon tableur.

RESULTAT: j'ai une erreur d'incompatibilité de type

Le but final étant de pouvoir sélectionner une ligne de ma listbox, d'en afficher les informations dans un userform et de l'imprimer.

Je continu mes recherches mais je pense que je lis bcp trop de sujets différents, et je n'arrive pas à filtrer les outils qui me permettrait d'arriver à ce que je veux.

Si besoin je peux fournir le fichier en quesiton.

D'avance merci,

Bonsoir,

Bonjour,

Merci pour le message de bienvenue.

Je mets le fichier en pj.

Mon problème se situe dans l'UF 6, CommandButton1_click().

Dans cet UF, je travaille à partir de l'onglet "Extraction" pour compléter ma listbox. Cet onglet sera caché de l'utilisateur.

Merci de l'intérêt que vous portez et de l'aide.

bonjour

Quand tu utilises Cells , tu ne dois pas mettre de lettre, mais un numéro cells(row, column) dans ton cas il faut remplacer toutes tes lettres par le numéro de colonnes correspondantes

ListBox1.AddItem Sheets("Extraction").Cells(1, j) 'col1 de la ligne ajoutée

ce qui donne

Private Sub CommandButton1_Click()
'recherche informations agent

    Dim Ligne, Ligne1, Ligne2 As Long 'nombre de lignes dans les onglets intervenant et extraction
    Dim i As Long
    Dim j As Long

    Set ws = Sheets("Interventions") 'Correspond au nom de l'onglet "Intervenants" dans le fichier Excel
    ws.AutoFilterMode = False
    ListBox1.ColumnCount = 8

    'filtre des données selon les 3 critères de recherches contenus dans les combobox
        With ws
            .AutoFilterMode = False
            Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
            With .Range("A1:O" & Ligne)
                    If Me.ComboBox1.ListIndex > -1 Then .AutoFilter field:=8, Criteria1:=Me.ComboBox1.Value
                    If Me.ComboBox2.ListIndex > -1 Then .AutoFilter field:=5, Criteria1:=Me.ComboBox2.Value
                    If Me.ComboBox3.ListIndex > -1 Then .AutoFilter field:=6, Criteria1:=Me.ComboBox3.Value
            End With
    'copie des données filtrées dans une nouvelles feuille
            Sheets("Extraction").Range("A1:Z1000").Delete
            Ligne1 = ws.Cells(.Rows.Count, 1).End(xlUp).Row
            ws.Range("A1:O" & Ligne1).Copy Sheets("Extraction").Range("A1")
            ListBox1.ColumnHeads = False
            Ligne2 = Sheets("Extraction").Cells(.Rows.Count, 1).End(xlUp).Row
    'remplissage de la listbox avec les données de la nouvelle feuille
    'NB: à termes, la feuille où sont copiées les données ne sera pas accessible, ni même visible à l'utilisateur, d'où la copie
            For j = 1 To Ligne2
            ListBox1.AddItem Sheets("Extraction").Cells(1, j) 'col1 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Extraction").Cells(5, j) 'col2 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Extraction").Cells(6, j) 'col3 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Extraction").Cells(7, j) 'col4 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("Extraction").Cells(8, j) 'col5 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("Extraction").Cells(10, j) 'col6 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Extraction").Cells(11, j) 'col7 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Extraction").Cells(12, j) 'col8 de la ligne ajoutée
            Next j
            Sheets("Extraction").Select
        End With
    ws.AutoFilterMode = False
End Sub

J'ai remarqué que tes identifiants dans ta feuille interventions ne correspondaient pas aux intervenants lister dans la feuille "intervenants" qui alimente ta combobox ce qui risque de te poser probleme

Bonjour,

Merci pour le retour !!

Effectivement c'est mieux quand on utilise les bons arguments dans le bons format ...

Ce qui est bizarre, ou pas d'ailleurs, c'est que la liste box s'affiche en "ligne" et non en "colonne".

Pour ta remarque sur les identifiants, je dois encore faire la mise à jour pour avoir la même chose que dans mon onglet intervenants.

A cause de ça (inversion colonne et ligne dans cells()

Private Sub CommandButton1_Click()
'recherche informations agent

    Dim Ligne, Ligne1, Ligne2 As Long 'nombre de lignes dans les onglets intervenant et extraction
    Dim i As Long
    Dim j As Long

    Set ws = Sheets("Interventions") 'Correspond au nom de l'onglet "Intervenants" dans le fichier Excel
    ws.AutoFilterMode = False
    ListBox1.ColumnCount = 8

    'filtre des données selon les 3 critères de recherches contenus dans les combobox
        With ws
            .AutoFilterMode = False
            Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
            With .Range("A1:O" & Ligne)
                    If Me.ComboBox1.ListIndex > -1 Then .AutoFilter field:=8, Criteria1:=Me.ComboBox1.Value
                    If Me.ComboBox2.ListIndex > -1 Then .AutoFilter field:=5, Criteria1:=Me.ComboBox2.Value
                    If Me.ComboBox3.ListIndex > -1 Then .AutoFilter field:=6, Criteria1:=Me.ComboBox3.Value
            End With
    'copie des données filtrées dans une nouvelles feuille
            Sheets("Extraction").Range("A1:Z1000").Delete
            Ligne1 = ws.Cells(.Rows.Count, 1).End(xlUp).Row
            ws.Range("A1:O" & Ligne1).Copy Sheets("Extraction").Range("A1")
            ListBox1.ColumnHeads = False
            Ligne2 = Sheets("Extraction").Cells(.Rows.Count, 1).End(xlUp).Row
    'remplissage de la listbox avec les données de la nouvelle feuille
    'NB: à termes, la feuille où sont copiées les données ne sera pas accessible, ni même visible à l'utilisateur, d'où la copie
            For j = 1 To Ligne2
            ListBox1.AddItem Sheets("Extraction").Cells(j, 1) 'col1 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Extraction").Cells(j, 5) 'col2 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Extraction").Cells(j, 6) 'col3 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Extraction").Cells(j, 7) 'col4 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 4) = Sheets("Extraction").Cells(j, 8) 'col5 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 5) = Sheets("Extraction").Cells(j, 10) 'col6 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Extraction").Cells(j, 11) 'col7 de la ligne ajoutée
            ListBox1.List(ListBox1.ListCount - 1, 6) = Sheets("Extraction").Cells(j, 12) 'col8 de la ligne ajoutée
            Next j
            Sheets("Extraction").Select
        End With
    ws.AutoFilterMode = False
End Sub

Merci !!!!

Ça fonctionne bien , je peux avancer.

Comment marquer le sujet comme résolu ?

Rechercher des sujets similaires à "contenu listbox methode additem"