Multisection de listbox evolutive vers userform

Bonjour le forum

Dans un userform appelé "usfEtude" j'ai mis un controle "multipage" avec lequel j'ai créé 3 pages dont l'une s'appelle "resultat"dans laquelle j'ai insérer une listbox appelée"listbox1".

Dans une feuille "Feuil1"du classeur j'ai inserer un controle listbox appelé "listbox2" .

1)Je voudrais que les "items" selectionnés (multiselections) dans cette listbox2 soient copiés et collés comme "item" dans la listbox1 du userform "usfEtude".

2)ensuite il faut savoir que ma liste "listbox2" evolue et change avec l'evenementiel "worksheet selection_change". Je voudrais donc pouvoir ajouter mes differentes selections toujours de ma listbox2 à la liste préexistante dans la listbox1 du "usfEtude" en cliquant sur un commandbutton "enregistrer"

Savez vous comment faire??parce que les listbox de mon coté c'est pas ça du tout du tout!!

Voial pour le moment ce que jai fait...meme si ça marche pas, ça peut peut etre vous aider...

Dim saveline

'valeur indépendante des modules qui devrait me servir à recuperer une valeur de ligne obtenue dans le module "worsheet change"

'sur la feuille "cible1" je dispose de:
'3 options buttons: nommés "optniveauperf1", "optniveauperf2", "optniveauperf3"
'1 commandbutton : "commandbutton1"
'1 listbox : "listbox2"

'je suis dans la feuille "cible1"
Private Sub CommandButton1_Click()

'lorsqu'un checkbox ou un optionbutton est sélectionné, il prend pour value true, sinon false.
'Excel interprete true = -1 et false = 0. Donc si 1 choix a été fait toq = -1
Dim i
Dim j
Dim k As String
Dim a
Dim solution

Set sh1 = Worksheets("Cachecible1")
Set sh2 = Worksheets("Cible1")

If Optniveauperf1 = False And Optniveauperf2 = False And Optniveauperf3 = False Then
MsgBox ("Merci d'indiquer le niveau de performance de ce scenario")
Exit Sub
End If

'récupération des occasions sélectionnées

  With Me.ListBox2
    For a = 0 To .ListCount - 1
        If .Selected(a) Then 'selected(a) renvoie vrai ou faux
            'test pour savoir si c'est le premier item sélectionné
            If solution = "" Then
                solution = .List(a) 'list(a) renvoie la valeur de l'élément
                Else
                'on assemble les différents items ensemble
                solution = solution & vbLf & .List(a)
            End If
         End If
    Next a
    If solution = "" Then
    MsgBox ("Indiquez la ou les solutions techniques retenues ")
    Exit Sub
    End If
  End With

 'pour enregistrer dans cachecible en fonction du niveau de performance du scenario et de  la préoccupation active
Dim decalagecolonne As Integer
Dim valeurA As Integer

decalagecolonne = 0

sh1.Visible = True
valeurA = sh1.Cells(6, 4).Column
'j'initalise la cellule à laquelle je fais reference par la suite, en F4

If sh2.Optniveauperf1 = True Then
decalagecolonne = valeurA + 1
End If

If sh2.Optniveauperf2 = True Then
decalagecolonne = valeurA + 2
End If

If sh2.Optniveauperf3 = True Then
decalagecolonne = valeurA + 3
End If

sh1.Cells(saveline, decalagecolonne).Value = solution
'mes données solution s'joute aux précédentes dans cette cellule de la feuille "cache cible1"
sh1.Visible = False

'faire disparaitre les buttons une fois que l'enregistrement avec ce bouton a été selectionné
'pour n'avoir à effectuer ce choix qu'une seule fois.

End Sub

'toujours dans la feuille "Cible1"
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 cel1 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

       Set sh1 = Worksheets("Cachecible1")
    ListBox2.Clear 'liste solutions techniques
    ListBox2.MultiSelect = fmMultiSelectExtended

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

                If sh1.Cells(line, 6).Value <> "" Then
                ListBox2.List = Split(sh1.Cells(line, 6).Value, vbLf)
                ListBox2.AddItem sh1.Cells(line, 6).Value
                End If

       saveline = sh1.Cells(line, 5).Row 
' ces valeurs seront rappelés dans la macro "commandbutton1_click()"
          End If
    Next line
   End Sub

cordialement

ps: j'ai déjà posé cette question sur un autre forum(code-source) , pour le moment sans réponse, et vu que c'est urgent...

Bonjour

Après une étude rapide de la macro, j'ai trouvé quelques anomalies, mais je ne suis pas sûr que ce soit la source de ton problème. Difficile à dire sans avoir un fichier exemple.

Dans le code tu as écrit :

sh1.Visible = True 
valeurA = sh1.Cells(6, 4).Column 
'j'initalise la cellule à laquelle je fais reference par la suite, en F4 

Hors, la fonction Cells commence par la ligne suivi de la colonne. si tu veux vraiment accéder la cellule F4 comme dans le commentaire, tu devras écrire :

valeurA = sh1.Cells(4, 6).Column 

Plus bas, tu utilise la fonction Cells correctement semble-t-il. A vérifier !

Si tu as toujours des problèmes avec, joints un fichier exemple à ta réponse.

Salutations

Dan_de_pic

Merci beaucoup Dan_de_pic

c'etait apparement mon probleme...vive les étourderies...on y perd un temps fou, pour pas grand chose

Probleme résolu!!!:D

Rechercher des sujets similaires à "multisection listbox evolutive userform"