Lister les occurrences d'une colonne

  • Initiateur de la discussion Initiateur de la discussion cabsen
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cabsen

XLDnaute Junior
Bonjour à tous,

Je cherche à lister les occurrences d'une colonne pour présenter le résultat dans une zone de liste modifiable (exactement à la manière du menu déroulant en tête de colonne).

Si quelqu'un sait faire cela, je lui en saurai fort gré.
😉
 

Pièces jointes

Re : Lister les occurrences d'une colonne

Bonjour,

Par formule

En donnant un nom à 2 plages :
Coul =Feuil1!$B$6:$B$22
CoulCol =Feuil1!$B$1:$B$22

En F6 puis copier-coller vers le bas :
=INDEX(CoulCol;MIN(SI(NB.SI(F$5:F5;Coul)=0;LIGNE(Coul))))&""

Formule matricielle, à valider par ctrl, maj et entrée
Laisser vide la cellule B1
 
Re : Lister les occurrences d'une colonne

Merci pour vos réponses,

Celle de Monique me va bien car elle n'appelle pas de macro. J'ai un peu peur tout de même de la place que cela va prendre car je dois pouvoir cribler 17 colonnes de 65535 lignes (potentiellement). Avant de crier, je vais essayer…

En revanche les méthodes du fil proposé ne donne rien sous Excel X pour macintosh 😉 (pas d'ActiveX et pas de "xlSortNormal" non plus)

Édition : je viens d'essayer… Excel a explosé dès la première colonne… Après un petit calcul, le fichier vide avec seulement les formules occupe 163 Mo…
 
Dernière édition:
Re : Lister les occurrences d'une colonne

Bonsoir,

Fonction sans doublons trié.


Code:
-Alt+F11
-Insertion module
-Copier/Coller du code

Dans le tableur
-Sélectionner C2:C11
=sansdoublonstrié(A2:A11)
-valider avec maj+Ctrl+Entrée

Function SansDoublonsTrié(champ As Range)
  Set MonDico = CreateObject("Scripting.Dictionary")
  temp = champ
  For i = 1 To UBound(temp, 1)
    If Not MonDico.Exists(temp(i, 1)) And temp(i, 1) <> 0 Then
      MonDico.Add temp(i, 1), temp(i, 1)
    End If
  Next i
  a = MonDico.items
  j = UBound(a)
  Call tri(a, 0, j)
  SansDoublonsTrié = Application.Transpose(a)
End Function

Sub tri(a, gauc, droi)          ' Quick sort
 ref = a((gauc + droi) \ 2)
 g = gauc: d = droi
 Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
       temp = a(g): a(g) = a(d): a(d) = temp
       g = g + 1: d = d - 1
     End If
 Loop While g <= d
 If g < droi Then Call tri(a, g, droi)
 If gauc < d Then Call tri(a, gauc, d)
End Sub

Alimentation directe d'un combo sans zone intermédiaire:

Code:
Private Sub ComboBox1_DropButtonClick()
  Me.ComboBox1.List = SansDoublonsTrié([A1:A1000])
End Sub


JB
Formation Excel VBA JB
 

Pièces jointes

Dernière édition:
Re : Lister les occurrences d'une colonne

Merci Boisgontier,

Mais ma version d'Excel pour Macintosh ne dispose pas de la fonction "CreateObject".

Je vais tenter de copier la colonne sur une feuille A, de copier la cellule A1 de la feuille A en A1 d'une feuille B et de supprimer toutes les lignes de la feuille A qui contienne la valeur et ainsi de suite…
 
Re : Lister les occurrences d'une colonne

Utiliser le filtre élaboré avec l'option 'Unique'.
Si les listes ne sont pas trop longues, on peut, dans la fonction SansDoublons, remplacer Dictionnary(hyper rapide par l'objet Collection ou Application.Mach , mais qui seront moins rapides.

JB
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
746
Retour