Autres récupérer choix liste déroulante

Myaah

XLDnaute Nouveau
Bonjour,

Je cherche à récupérer (sous forme de liste) le choix sélectionné dans une liste déroulante. Si par exemple "pomme" est sélectionné, je souhaiterais avoir un tableau qui comptabilise le nombre de fois où "pomme" a été sélectionné. Tout cela à partir d'une seule et même liste déroulante. Peut-être à l'aide d'une macro ?

Auriez-vous une solution à me proposer ? Je suis un peu désespérée..

En vous remerciant ! :)
Cdt,

(excel 2007..)
 

FS69

XLDnaute Nouveau
Bonjour,

Je vois 1 piste de solution (hors macros), réalisé un tableau croisé dynamique sur la colonne concerné puis faire une formule NB.SI

Par Exemple :
Données présentes en colonne A_Feuil1 :
POMME
POIRE
POMME
POMME
ABRICOT
PECHE
PECHE
POMME

Créer un Tableau croisé dynamique en Feuil2 et sélectionner uniquement la colonne souhaitée "A_Feuil1" dans la partie "LIGNES"
puis dans la colonne B de la Feuil2 ajouter la formule de calcul =NB.SI(Feuil1!$A$2:$A$9;Feuil2!A4)

Étiquettes de lignes
ABRICOT 1
PECHE 2
POIRE 1
POMME 4
Total général
 

Pièces jointes

  • Exemple.xlsm
    12.2 KB · Affichages: 7
Dernière édition:

Myaah

XLDnaute Nouveau
Bonjour,

Tout d'abord, merci pour vos réponses ! Mais c'est l'inverse que je souhaiterais faire :) je me suis mal exprimée j'imagine j'en suis désolée !
Ce tableau en exemple permet, avec une liste déroulante, de savoir combien de fois un choix a été sélectionné.

Je voudrais pour ma part, avoir une liste déroulante avec plusieurs choix possible, et lorsque un choix est sélectionné, que celui-ci soit comptabilisé dans un tableau. (et non l'inverse donc). Comme un compteur, mais à partir d'une liste de choix. Ce pourquoi j'ai parlé de macro, a associé à cette liste de choix donc, qui permettrait de récupérer le résultat sélectionné dans la liste, et de le comptabiliser donc dans un tableau (sur une autre page si possible)
Par exemple, si je sélectionne "Pomme" dans la liste de choix, dans mon tableau, à droite de la cellule contenant le mot "Pomme", le nombre 1 apparaît. Si je sélectionne "Pomme" à nouveau (à partir de la même liste de choix déroulante), le nombre passe à 2.

Merci pour vos réponses si rapides en tout cas !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Myaah et bienvenue sur XLD :).
Bonjour à tous ;).

Il manque quelque chose de crucial dans vos messages : un fichier exemple anonymisé.

Ce qui nous permettrait de savoir :
  • comment sont organisé vos données.
  • de quelle type de liste il s'agit : Listbox sur une feuille der calcule, Listbox ou combobox sur un formulaire de type Userform, une simple table ou un tableau structuré (avec ou sans filtre) ou ... ?
  • votre point de départ, un exemple de résultat désiré et sous quelle forme vous souhaitez obtenir le résultat.
  • A quelle moment les résultats doivent-ils être remis à zéro.

Tout ça pour dire que nous ne sommes pas Madame IRMA et nous n'avons pas de boule de cristal pour deviner ce qu'il vous conviendrait (néanmoins notre consultation est gratuite 😜 - contrairement à celle de Mme Irma)

A+

seekers-notes-fortune-teller.gif

-
 
Dernière édition:

Myaah

XLDnaute Nouveau
Bonjour @Myaah et bienvenue sur XLD :).
Bonjour à tous ;).

Il manque quelque chose de crucial dans vos messages : un fichier exemple anonymisé.

Ce qui nous permettrait de savoir :
  • comment sont organisé vos données.
  • de quelle type de liste il s'agit : Listbox sur une feuille der calcule, Listbox ou combobox sur un formulaire de type Userform, une simple table ou un tableau structuré (avec ou sans filtre) ou ... ?
  • votre point de départ, un exemple de résultat désiré et sous quelle forme vous souhaitez obtenir le résultat.
  • A quelle moment les résultats doivent-ils être remis à zéro.

Tout ça pour dire que nous ne sommes pas Madame IRMA et nous n'avons pas de boule de cristal pour deviner ce qu'il vous conviendrait (néanmoins notre consultation est gratuite 😜 - contrairement à celle de Mme Irma)

A+

seekers-notes-fortune-teller.gif

-

Bonjour,

En effet ! Je vous joins donc un fichier créé très vite fait pour vous donner une idée. C'est une simple zone de liste déroulante dans une cellule (j'ai opté pour (contrôle de formulaire) car honnêtement, je n'ai aucune idée de ce à quoi correspond (ActiveX). Je débute sur Excel veuillez me pardonner je vais tenter d'utiliser les bons termes ! :)
Mon document est un bilan mensuel, chaque feuille correspond à une journée (donc 31 feuilles + une feuille bilan mensuel à la fin, avec les sommes de chaque journée accumulées) --> Je n'ai pas choisi ce "format", c'est imposé. Bilan que je complète au fur et à mesure de ma journée : j'ai des compteurs. J'ai beaucoup d'information dans ce bilan, et je dois l'envoyer par mail chaque jour (en capture d'écran et non le document.., ce pourquoi je veux utiliser une liste déroulante, tous les choix ne rentrerais jamais dans une capture d'écran : imaginons que tous les fruits existants soient dans ma liste)

A aucun moment les résultats ne doivent être remis à zéro, car chaque feuille doit rester consultable si jamais une vérification est demandée. Le nombre de fois où un choix est sélectionné doit donc apparaître sur la feuille où se trouve la liste déroulante, ainsi que soit affiché les 3 résultats les plus sélectionnés (j'ai déjà trouvé une formule pour ça, qu'il faut que je retrouve ! ^^).

Je ne sais pas si c'est plus clair où plus flou.. j'espère la première option !
 

Pièces jointes

  • exemple liste deroulante.xlsx
    9.9 KB · Affichages: 9

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Merci pour les éclaircissements. Voici une tentative.
J'ai choisi une liste de validation en A1 dont la source est en colonne K. Pour les trois premiers, on trie par nombre de sélection puis par ordre alphabétique des choix et on prend les trois premiers. Il peut rester des ex-æquo non affichés (puisqu'on ne prend que les trois premiers).
Le code est dans le module de la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, r, i As Long, ech As Boolean, aux, s$
   If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False
   t = Range("d1:e10").Value
   For i = 2 To UBound(t)
      If t(i, 1) = Target Then t(i, 2) = t(i, 2) + 1: Exit For
   Next i
   Range("d1:e10") = t
   Range("d1:e10").Sort key1:=Range("e1"), order1:=xlDescending, key2:=Range("d1"), order2:=xlAscending, _
                  MatchCase:=xlNo, Header:=xlYes
   r = Range("d1:e10").Value: Range("d1:e10") = t
   For i = 2 To 4
      If r(i, 2) <> "" And r(i, 2) <> "" Then s = s & " / " & r(i, 1)
   Next i
   Range("b1").ClearContents
   If s <> "" Then Range("b1") = Mid(s, 3)
End Sub
 

Pièces jointes

  • Myaah- Nbr choix liste- v1.xlsm
    20.2 KB · Affichages: 7
Dernière édition:

Deadpool_CC

XLDnaute Accro
Bonjour,

Voici une proposition avec VBA pour la gestion du comptage
1672232980162.png

VB:
Sub Zonecombinée1_QuandChangement()
    Dim Ligne As Integer
    Ligne = Range("A1").Value + 1
    Range("E" & Ligne).Value = Range("E" & Ligne).Value + 1
End Sub
et une MFC pour le rang (podium)
1672233051684.png
 

Pièces jointes

  • exemple liste deroulante _ Deadpool.xlsm
    20.1 KB · Affichages: 13

Myaah

XLDnaute Nouveau
Re,

Merci pour les éclaircissements. Voici une tentative.
J'ai choisi une liste de validation en A1 dont la source est en colonne K. Pour les trois premiers, on trie par nombre de sélection puis par ordre alphabétique des choix et on prend les trois premiers. Il peut rester des ex-æquo non affichés (puisqu'on ne prend que les trois premiers).
Le code est dans le module de la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, r, i As Long, ech As Boolean, aux, s$
   If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False
   t = Range("d1:e10").Value
   For i = 2 To UBound(t)
      If t(i, 1) = Target Then t(i, 2) = t(i, 2) + 1: Exit For
   Next i
   Range("d1:e10") = t
   Range("d1:e10").Sort key1:=Range("e1"), order1:=xlDescending, key2:=Range("d1"), order2:=xlAscending, _
                  MatchCase:=xlNo, Header:=xlYes
   r = Range("d1:e10").Value: Range("d1:e10") = t
   For i = 2 To 4
      If r(i, 2) <> "" And r(i, 2) <> "" Then s = s & " / " & r(i, 1)
   Next i
   Range("b1").ClearContents
   If s <> "" Then Range("b1") = Mid(s, 3)
End Sub
Merci infiniment ! C'est parfait.
Honnêtement je suis impressionnée ! Merci encore pour avoir pris le temps de m'aider, je reste encore étonnée par la bienveillance et patience de toutes les personnes qui prennent le temps de répondre à tous ces posts sur ce forum. :)
 

Myaah

XLDnaute Nouveau
Merci infiniment ! C'est parfait.
Honnêtement je suis impressionnée ! Merci encore pour avoir pris le temps de m'aider, je reste encore étonnée par la bienveillance et patience de toutes les personnes qui prennent le temps de répondre à tous ces posts sur ce forum. :)
Re,

Merci pour les éclaircissements. Voici une tentative.
J'ai choisi une liste de validation en A1 dont la source est en colonne K. Pour les trois premiers, on trie par nombre de sélection puis par ordre alphabétique des choix et on prend les trois premiers. Il peut rester des ex-æquo non affichés (puisqu'on ne prend que les trois premiers).
Le code est dans le module de la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, r, i As Long, ech As Boolean, aux, s$
   If Intersect(Target, Range("a1")) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False
   t = Range("d1:e10").Value
   For i = 2 To UBound(t)
      If t(i, 1) = Target Then t(i, 2) = t(i, 2) + 1: Exit For
   Next i
   Range("d1:e10") = t
   Range("d1:e10").Sort key1:=Range("e1"), order1:=xlDescending, key2:=Range("d1"), order2:=xlAscending, _
                  MatchCase:=xlNo, Header:=xlYes
   r = Range("d1:e10").Value: Range("d1:e10") = t
   For i = 2 To 4
      If r(i, 2) <> "" And r(i, 2) <> "" Then s = s & " / " & r(i, 1)
   Next i
   Range("b1").ClearContents
   If s <> "" Then Range("b1") = Mid(s, 3)
End Sub
Re-bonjour !
J'ai pu adapter le code à mon fichier, cela marche parfaitement, merci encore !
Petite question : puis-je l'utiliser plusieurs fois sur une même feuille ? J'ai tenté de l'adapter de la même façon à d'autres cellules ( disons pareil pour les légumes ^^) mais cela ne fonctionne pas. Dois-je modifier autre chose que "A1" , "B1", "D1", "E1" et "E10" ?
Merci par avance ! bon après-midi :)
 

Discussions similaires

Réponses
2
Affichages
258

Statistiques des forums

Discussions
312 025
Messages
2 084 742
Membres
102 651
dernier inscrit
Poppy-Stef