listbox combinaison de colonnes

marrek

XLDnaute Nouveau
Bonjour

bon étant toujours débutant, je vous fait part de mon problème:

J’essaie de copier coller des valeurs de certeines colonnes dans une listbox controle activex, et j’arrive pas !! (ça m’affiche pas les bonnes valeurs: j'ai l'impression que ca me copie les cellules de la mauvaises feuille et dune ligne en dessous de ma target...)


En gros j’ai deux feuilles :
« Feuil1 » : ou je vais changer les valeurs d’une des cellules de la colone D
« Interactions » : ou je vais copier les valeurs issues de mon choix sur la feuille Feuil1

En « Feuil1 » je retiens les valeurs des colonnes C et D, pour faire la recherche des valeurs a afficher dans la listbox
En « interactions », je cherche la ligne ou les valeurs C et D se trouvent et je la copie a partir de la colonne 5 et je la colle dans la listbox



Voila le fichier que j’ai fait:

Private Sub Worksheet_Change(ByVal Target As Range)


Dim ligne As Long

Dim a
Dim b
Dim cel As Range
Dim line As Long

a = Target.Offset(0, -1).Value
'j'enregistre la valeur (texte ou numerique) de la cellule à gauche de celle dont je vais changer la valeur

b = Target.Value
' enregistre la valeur de la cellule dont je change la valeur
Sheets("Interactions").Select 'je me place dans la feuille ou j'ai mon tableau de données

For line = 4 To 46 'pour ligne de 4 à 46 de ce tableau
If a = Worksheets("Interactions").Cells(line, 3).Value And b = Worksheets("Interactions").Cells(line, 4).Value Then
'Si on a la meme combinaison de valeur "a" et "b" à une certine ligne de ce tableau

For Each cel In Range(Cells(line, 5), Cells(line, 19))
'Pour chaque cellule de cette ligne je copie les valeurs si non vides dans ma listbox située sur la feuille "Feuil1"

If cel.Value <> "" Then
Sheets("Feuil1").Select
Worksheets("Feuil1").ListBox1.AddItem cel.Value
End If
Next cel

End If
Next line



End Sub

Pouvez vous m'aider?svp
Cordialement
 
G

Guest

Guest
Re : listbox combinaison de colonnes

Bonjour Marek,

Sans exemple (fichier) difficile de voir ce qu'on fait exactement.

Dans l'exemple ci-après, une variable 'sh' référencie la feuille 'Interaction' pour rendre le code plus lisible et savoir sur quelle feuille on travaille (Pas besoin de sélectionner une feuille en vba pour travailler dessus).

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim ligne As Long
    Dim sh As Worksheet
    Dim a
    Dim b
    Dim cel As Range
    Dim line As Long
    a = Target.Offset(0, -1).Value
    'j'enregistre la valeur (texte ou numerique) de la cellule à gauche de celle dont je vais changer la valeur
    b = Target.Value
    ' enregistre la valeur de la cellule dont je change la valeur

    [COLOR=red][B]Set sh = Worksheets("Interactions")
[/B][/COLOR]    
    For line = 4 To 46                                'pour ligne de 4 à 46 de ce tableau
        If a = [COLOR=red][B]sh.[/B][/COLOR]Cells(line, 3).Value And b = [COLOR=red][B]sh[/B][/COLOR].Cells(line, 4).Value Then
            'Si on a la meme combinaison de valeur "a" et "b" à une certine ligne de ce tableau
            For Each cel In [COLOR=red][B]sh.[/B][/COLOR]Range([COLOR=red][B]sh[/B].[/COLOR]Cells(line, 5), [COLOR=red][B]sh[/B][/COLOR].Cells(line, 19))
                'Pour chaque cellule de cette ligne je copie les valeurs si non vides dans ma listbox située sur la feuille "Feuil1"
                If cel.Value <> "" Then
                    ListBox1.AddItem cel.Value
                End If
            Next cel
        End If
    Next line
End Sub

N.B. utilise le bouton # pour insérer les codes dans tes post, c'est plus lisible.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin