Lister les occurrences d'une colonne

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

  • lister_occurrences.xls.zip
    3 KB · Affichages: 235

Monique

Nous a quitté
Repose en paix
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
 

cabsen

XLDnaute Junior
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:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Fonction_sansdoublonsTriex.xls
    29.5 KB · Affichages: 170
  • Fonction_sansdoublonsTriey.xls
    42 KB · Affichages: 129
Dernière édition:

cabsen

XLDnaute Junior
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…
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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:

Discussions similaires

  • Résolu(e)
Microsoft 365 Menu déroulant
Réponses
4
Affichages
443

Statistiques des forums

Discussions
312 482
Messages
2 088 766
Membres
103 955
dernier inscrit
mikaveli