Comment récupérer les sélections dans un contrôle de formula

Bonjour,

Comme le titre l'explique,

je souhaiterais récupérer les informations sélectionnées dans un contrôle de formulaire inséré dans une feuille ?

la zone de liste à choix multiple (sinon c'est trop simple) a été crée à partir d'un controle de formulaire et non d'un controle activex, je sais c'est mal foutu mais c'est comme ça.

les données extraite devrait idéalement ce retrouver sur la même ligne que la zone de liste,

zone de liste en cellule C2 = extraction en cellule D2.

mais cela reste un détail si j'ai la réponse à la premére partie de ma question.

j'ai joint un fichier en exemple

merci d'avance,

dans l'attente

salutations

33exemple.zip (11.23 Ko)

Bonjour,

Une possibilité parmi d'autres ...

A+

35test-nivea.xlsm (22.35 Ko)

A part le fait que vous me sembliez etre un génie en ce moment même

j'aurais quand même quelque question.

j'ai télécharger votre fichier et quand je lance l'extraction il semblerais qu'il répéte la selection faite en C2 et qu'il l'ajoute à celle de C3.

et puis le command button bien sur, comment dois-je faire pour l'ajouter?

j'ai copier coller la macro de la feuille 1 "commandbutton"

et celle du module 1 "boucle_toutes_Listes, mais j'ai du oublié quelque chose.

pouvez vous me guider encore un peu dans le noir?

Effectivement, je viens de corriger l'erreur de la remise à zéro du champ ...

Concernant le bouton, c'est simplement plus commode ... sinon avec Alt F8 on obtient le menu des macros et on peut lancer la macro ...

Pour l'ajouter, il suffit dans le Menu Développeur de se placer en mode design et d'insérer un bouton Activex ...

A+

26test-nivea.xlsm (23.26 Ko)

j'ai un peu plus l'habitude avec le menu des macros.

mais vraiment super!

pour comprendre un peu plus la démarche pouvez-vous m'expliquer cette partie du code:

For i = 1 To .ListBoxes.Count
                ' x MOD(H4-1,2)+2
                ' y ((INT((INT(H4-1))/2)+2)*2)
                x = ((i - 1) Mod 2) + 2
                y = (Int((Int(i - 1)) / 2) + 2) * 2

si j'ai bien compris c'est cette partie du code qui selectionne la liste et désigne la sortie

qu'est ce que je dois changer si la zone de liste bouge ou si j'en ajoute?

encore merci merci merci

nivea a écrit :

j'ai un peu plus l'habitude avec le menu des macros.

mais vraiment super!

pour comprendre un peu plus la démarche pouvez-vous m'expliquer cette partie du code:

    x = ((i - 1) Mod 2) + 2
    y = (Int((Int(i - 1)) / 2) + 2) * 2

si j'ai bien compris c'est cette partie du code qui selectionne la liste et désigne la sortie

qu'est ce que je dois changer si la zone de liste bouge ou si j'en ajoute?

encore merci merci merci

Effectivement, c'est tout à fait cela ...

Pour tester ces deux formules, il suffit de les répliquer dans une feuille Excel pour visualiser leur résultat...

taper 1,2,3,4 dans les cellules A1,A2,A3,A4

x représente la ligne recherchée

y représente la colonne recherchée

et i repésente l'index de chaque Liste : 1,2,3,4

En B1, La formule de x : =MOD(A1-1,2)+2

En C1, la formule de y : =(INT((INT(A1-1))/2)+2)*2

Les résultats x,y donnent les couples : 2 4 - 3 4 - 2 6 - 3 6 qui sont bien les couples recherchés en fonction de l'index des listes ...

Merci pour les remerciements !!!

A +

Bonjour,

J'ai reçu de l'aide hier pour l'extraction de données à partir de liste à choix multiples.

(d'ailleurs je remercie encore au passage james007).

Victime de votre succés je reviens pour avoir encore un coup de main.

j'ai utilisé la macro que l'ont ma fournie hier pour extraire les infos qui m'interresse et elle fonctionne trés bien, du coup on me demande de l'adapté à un autre fichier mais la je bloque.

c'est tjs le même principe de liste déroulante à choix multiple et également d'autre à choix unique.

pour celle à choix unique, j'ai réussi.

mais pour les autres listes, je n'y arrive pas.

les numéro des listes sont dans le désordre et du coup je ne sais pas comment écrire en code:

vérifie chaque cellule et si tu trouve une liste dans la cellule (quelque soit sont numéro) tu inscrit les valeurs trouvé dans la cellule d'a côté.

le probléme c'est que exemple au hasard, si j'ai une zone de liste nommé liste23 en cellule D12 comment faire, pour avoir le résultat en E12.

je ne sais pas si c'est clair, sinon ne manquait pas de me demander des précisions.

peu etre encore un miracle James007?

je vous remercie de l'attention que vous porterez à mon probléme.

Quelqu'un pourrais jetter un oeil à ma requête s'il vous plaît?

Bonjour,

Dans la mesure où tu as l'air de dire que c'est "grosso-modo" l'anarchie dans toutes les List Boxes ... il faudrait savoir si tu n'aurais pas tout d'abord intérêt à corriger leur numérotation pour reconstruire de la cohérence ...

et ensuite légèrement modifier ton code, pour obtenir ton résultat ...

A+

Bonjour, James 007

c'est vrai que j'avais pas vu les choses comme ça, mais c'est surement la meilleur chose à faire!

du coup existe t-il un moyen de renommer c'est liste d'un seule coup de façon à ce qu'elle ai toute le nom de leur cellule par exemple.

merci pour votre aide et vos remarques

Bonjour,

Pour ne pas risquer de totalement corrompre ton fichier, le code suivant est à tester sur une copie ...

Sub Renommer_Toutes_ListesBoxes()
Dim Shp As Shape
Dim sNom As String
  For Each Shp In ActiveSheet.Shapes
  ' sélectionner les formes dont le nom contient : ist
    If InStr(1, Shp.Name, "ist") > 0 Then
      sNom = Cells(Shp.TopLeftCell.Row, Shp.TopLeftCell.Column).Address(RowAbsolute:=False, ColumnAbsolute:=False)
      Shp.Name = "Liste " & sNom
    End If
  Next Shp
End Sub

A+

j'ai testé le code il fonctionne très bien.

merci

désolé de vous embêté avec ça mais je ne sais pas comment adapter la macro que vous m'avez donner auparavant pour qu'elle sélectionne les listes nommé c1 c2 etc

Sub Boucle_Toutes_Listes()
Dim Shp As Shape, i As Long, ItemSel As String, x As Integer, y As Integer, n As Integer
    With ActiveSheet
            For i = 1 To .ListBoxes.Count
                ' x MOD(H4-1,2)+2
                ' y ((INT((INT(H4-1))/2)+2)*2)
                x = ((i - 1) Mod 2) + 2
                y = (Int((Int(i - 1)) / 2) + 2) * 2
                With ActiveSheet.Shapes("liste" & i).OLEFormat.Object
                  For n = 1 To .ListCount
                    If .Selected(n) Then
                        If n = 1 Then
                            ItemSel = .List(n)
                        Else
                            ItemSel = ItemSel & Chr(10) & .List(n)
                        End If
                    End If
                  Next n
                End With
                ActiveSheet.Cells(x, y).Value = ItemSel
            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
    End With
End Sub

merci pour votre aide

Bonjour,

Ravi que la première étape de remise en ordre soit franchie ...

Dès que j'ai un moment, je reprends le code de la deuxième étape pour l'adapter ... aux nouvelles conditions ...

A+

Merci James007

A bientôt

OK ... je viens de t'adapter ton code ... à tester après t'être assuré que tous les noms ont bien été correctement définis (et sans doublons, pour éviter que les extractions s'empilent les unes sur les autres) ...

Sub Extraire_Toutes_Listes()
Dim Shp As ListBox
Dim sShp As String
Dim cShp As String
Dim ItemSel As String
Dim n As Integer

    For Each Shp In ActiveSheet.ListBoxes
        sShp = Shp.Name
        cShp = Replace(sShp, "Liste ", "", 1)
          With ActiveSheet.Shapes(sShp).OLEFormat.Object
              For n = 1 To .ListCount
                If .Selected(n) Then
                    If n = 1 Then
                        ItemSel = .List(n)
                    Else
                        ItemSel = ItemSel & Chr(10) & .List(n)
                    End If
                End If
              Next n
          End With
        ActiveSheet.Range(cShp).Offset(0, 1).Value = ItemSel
        ItemSel = ""
    Next Shp
End Sub

A+

merci à james 007 pour toute son aide

nivea a écrit :

merci à james 007 pour toute son aide

Merci pour tes remerciements ...!!!

Tu es une vraie ...crème

A+

Rechercher des sujets similaires à "comment recuperer selections controle formula"