Extraction de donnée selectionner

Résolu/Fermé
SARAH - 11 août 2014 à 15:56
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 13 août 2014 à 07:58
Bonjour à tous,

J'aimerais avoir votre aide pour une chose à laquelle je n'arrive pas à trouver la solution.
j'ai crée une zone de liste à partir du formulaire d'excel 2003, j'y ai mis des valeurs et j'ai choisis selection multiple.
Ma question etant comment extraire automatiquement les valeurs selectionnées?
J'ai parcouru le forum mais n'y ai trouvé que des réponses faisant appelle à VBA que je maitrise trés peu (voir pas du tout).

Merci d'avance pour votre aide,
Sarah

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
12 août 2014 à 08:41
2
Bonjour,

merci de votre réponse.

je n'ai pas réaliser ma liste à partir de VBA est-ce possible dans retirer tout de même les informations?

Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
12 août 2014 à 10:28
Oui, bien sur.

Pouvez vous me donner l'adresse des cellules liées? Style : B1:B15
0
J'ai choisi une selection multiple,
donc j'ai simplement inscrit les données que je voulais voir apparaitre dans ma liste, dans la plage d'entrée.
Je n'ai pas de cellule lié.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
12 août 2014 à 10:45
Question subsidiaire : combien avez vous de zones de listes de prévues pour votre feuille?
0
700 liste.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
12 août 2014 à 14:35
Les zone de liste sont numérotées elles n'ont pas toutes le même nom.
Il n'y a que des zones de liste dans ta feuille?
Pas de forme, ni d'autres contrôles?

Si ok, voici comment procéder :
1- Ouvrir ton classeur,
2- Te placer sur la feuille contenant toutes tes listes,
3- Taper ALT+F11
4- Insérer un Module standard : menu Insertion/Module
5- Copier-coller ce code dans le module :
Sub MaListe()
Dim i As Integer, ItemSel As String
With Worksheets("base")
For i = 1 To .ListBoxes(Application.Caller).ListCount
If .ListBoxes(Application.Caller).Selected(i) Then
If i = 1 Then
ItemSel = .ListBoxes(Application.Caller).List(i)
Else
ItemSel = ItemSel & Chr(10) & .ListBoxes(Application.Caller).List(i)
End If
End If
Next i
For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
If .Rows(i).Top < .ListBoxes(Application.Caller).Top And .Rows(i).Top + .Rows(i).Height > .ListBoxes(Application.Caller).Top Then Exit For
Next
.Range("G" & i).Value = ItemSel
End With
End Sub

Sub Macro_Toutes_Listes()
Dim Shp As Shape, i As Long

i = 1
For Each Shp In ActiveSheet.Shapes
Shp.OnAction = "MaListe"
Next Shp
End Sub


6- fermer la fenêtre visual basic pour retourner sur la feuille,
7- taper ALT+F8, choisir "Macro_Toutes_Listes et exécuter
8- tester en cliquant sur une liste au hasard...

L'action 7 ne sera à réaliser qu'une seule fois. En cas d'ajout de liste, il faudra néanmoins le refaire...

ton fichier exemple
1
Merci merci merci merci milles fois!!!!
Je suis ravi d'avoir fait appel à vous!

La macro fonctionne, j'ai repris, celle que vous avez mis dans le fichier exemple.

Une derniere question svp, avec cette macro je dois cliquer sur la zone de liste pour que cela me donne les valeurs selectionnées.
Est-il possible de faire la même opération (extraire des données selectionnées) sur des listes déjà saisies?

Merci beaucoup "PIJAKU"
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 août 2014 à 07:58
Bonjour,
De rien.
700 listes, en effet, il fallait faire quelque chose...

Pour ta dernière question, voici la macro souhaitée :
Sub Boucle_Toutes_Listes()
Dim Shp As Shape, i As Long, ItemSel As String
With ActiveSheet
For Each Shp In .Shapes
For i = 1 To .ListBoxes(Shp.Name).ListCount
If .ListBoxes(Shp.Name).Selected(i) Then
If i = 1 Then
ItemSel = .ListBoxes(Shp.Name).List(i)
Else
ItemSel = ItemSel & Chr(10) & .ListBoxes(Shp.Name).List(i)
End If
End If
Next i
For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
If .Rows(i).Top < .ListBoxes(Shp.Name).Top And .Rows(i).Top + .Rows(i).Height > .ListBoxes(Shp.Name).Top Then Exit For
Next
.Range("G" & i).Value = ItemSel
Next
End With
End Sub

1