renvoyer dans une variable le nombre de caractère le plus fréquent d'une colonne

Alyrio

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord je vous remercie d'avance de porter attention à ma demande et merci pour votre aide.
Un classeur est envoyé en pièce jointe pour exemple.


J'ai une colonne qui contient des n° de serie de longueurs diverses.
Je cherche à identifier ceux qui ne respecte pas la longueur la plus fréquente.

Pour cela il me faut d'abord identifier la longueur qui se répète le plus.
J'utilise donc 2 fonctions pour se faire NBCAR qui renvoi le nombre de caractère d'une expression et
MODE qui renvoi le nombre le plus fréquent contenu dans une liste de nombre.

Cependant j'aimerais avoir une formule du type "=MODE(NBCAR(A1:A28))" qui me renverrait d'un coup
le nombre le plus fréquent correspondant à la longueur de n° série la plus fréquente.

Formule que je pourrais utiliser par la suite en vba dans une variable.

Je vous invite a jeter un coup d'oeil dans le fichier en piece jointe pour plus de clarté. Merci.
 

Fichiers joints

hoerwind

XLDnaute Barbatruc
Re : renvoyer dans une variable le nombre de caractère le plus fréquent d'une colonne

Bonjour,

Ta formule est bonne, simplement une petite faute d'inattention concernant la plage :
Code:
=MODE(NBCAR(A2:A14))
et pas besoin de valider en matricielle.
 

Alyrio

XLDnaute Nouveau
Re : renvoyer dans une variable le nombre de caractère le plus fréquent d'une colonne

Merci hoerwind,
j'y crois pas, c'était tout simple.
Merci encore !
 

hbenalia

XLDnaute Occasionnel
Re : renvoyer dans une variable le nombre de caractère le plus fréquent d'une colonne

Bonjour à tous,

Essayes avec la formule matricielle suivante:
Code:
=MODE(INDEX(NBCAR(A2:A14);;))
en tenant compte que les cellules de la plage A2:A14 ne doivent pas être vides...

Valider les formules matricielles par : CTRL+MAJ+ENTREE

Cordialement
 

Efgé

XLDnaute Barbatruc
Re : renvoyer dans une variable le nombre de caractère le plus fréquent d'une colonne

Bonjour Alyrio, hbenalia, Bonjour hoerwind :),
Une proposition sans formule:
VB:
Private Sub CommandButton1_Click()
Dim C As Object, I&, X&, Tmp&
Set C = CreateObject("Scripting.Dictionary")
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    C(Len(Cells(I, 1))) = C(Len(Cells(I, 1))) + 1
    If X < C(Len(Cells(I, 1))) Then X = Len(Cells(I, 1))
Next I
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Len(Cells(I, 1)) <> X Then Tmp = Tmp + 1
    If Len(Cells(I, 1)) <> X Then Cells(I, 1).Interior.ColorIndex = 35 'Pour voir
Next I
Cells(3, 4) = X
Cells(4, 4).Value = Tmp
End Sub
Cordialement
 

Fichiers joints

Dernière édition:

Haut Bas