Recherche d'une valeur d'après le nombre de caractères

  • Initiateur de la discussion Initiateur de la discussion andré
  • 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 !

A

andré

Guest
Salut,

Je cherche une formule qui me permette d'extraire d'une liste avec cellules vides, située dans une seule colonne, la chaîne de caractères (unique) comportant moins de trois (par exemple) caractères.

Exemple de A1 à A7 :
andré
léon

albert
jo

marie

En B1 je souhaite retrouver : jo

Par le truchement d'une colonne supplémentaire je sais le faire.
Sans colonne supplémentaire, je ne trouve pas, pourtant cela à l'air d'être simple (lol).

Soit dit en passant, par macro cela ne doit pas poser non plus de problème, mais je cherche une formule.

Merci d'avance.
Ândré.
 
Bonjour andré

Par cusriosité, tu peut me dire comment tu fais avec une formule ????

Je sais le faire en vba, mais pas par formule.

Public Sub vev()
Dim n As Integer
Dim c As Range
n = 1
For Each c In Range("a1:a25")
If Len(c) < 4 Then Range("b" & n) = c: n = n + 1
Next c
End Sub

D'avance je t'en remercie.

Salut
Hervé
 
Salut Hervé,

C'est exactement ce que je cherche, par formule et sans colonne supplémentaire.
Je suis tout aussi curieux que toi.

Avec une colonne supplémentaire en A:A (donc les données en B:B), tu places en A1 la formule :
=SI(ET(NBCAR(B1)<3;NBCAR(B1)>0);1;"")
que tui copies vers le bas, puis :
En C1 la formule : RECHERCHEV(1;A:B;2;0)

Pas très sorcier, mais sans cette colonne, alors là ... ?
Pourtant j'ai l'intuition qu'un petit SOMMEPROD devrait faire l'affaire.

Ândré.
 
Resalut Hervé,

Et moi qui dis souvent que les questions ne sont pas posées assez clairement : je me cache dans un petit coin (j'ai dis "un", pas "le" - lol) !

Vois le petit exemple joint, je crois qu'ainsi tu comprendras.

C'est sympa de ta part de te préoccuper de mon problème.
Ândré.
 

Pièces jointes

Bonsoir Monique, et à tous les autres évidemment !

J'ai bien fait de patienter !

Non pas parce que la formule de PhiBou ne me plaise pas, bien au contraire puisqu'elle me donne le bon résulutat, mais elle me pose un petit problème.

Je ne sais pas comment faire pour inclure une formule matricielle dans une autre formule (dite traditionnelle).

Exemple (un peu bête) avec la formule de Monique :
=RERCHERCHEV(INDEX(B1:B10;SOMMEPROD((B1:B10<>"")*(NBCAR(B1:B10)<3);LIGNE(B1:B10)));B:C;2;0)

Si quelqu'un d'entre vous avait le courage et la patience de me l'expliquer, cela me ferait bien plaisir.

Là-dessus, mille mercis encore à vous et la bonne nuit à tous.
Ândré.
 
Salut,

J'ai mis la formule de Monqiue en place, elle fonctionne très bien.
J'ai toutefois un petit problème que je ne parviens pas à résoudre.

Lorsqye dans le tableau de recherche il n'y a aucune chaîne de caractères qui réponde à la formule (c'est à dire moins de 3 caractères), XL me renvoie un message d'erreur.

Je peux évidemment l'éviter en écrivant : =SI(ESTERREUR(la formule);"";la formule).
Je me demandais s'il n'y avait pas plus court.

J'ai essayé de compter le nombre de caractères d'une plage, sans toutefois y parvenir.
C'eut été facile de dire : =SI(MOD(nbre de caractères dans la plage;3)=0;"";la formule) !

Quelqu'un a-t-il une idée ?

Ândré.
 
Bonsoir tout le monde

André, c'est normal, la valeur retournée par SOMMEPROD(.......) doit être supérieure à la limite de la plage de recherche.

Pour avoir la première :
=RECHERCHEV(INDEX(B1:B10;MIN(SI((B1:B10<>"")*(NBCAR(B1:B10)<3)>0;LIGNE(B1:B10);""));1);B:C;2;0)

Pour avoir la dernière :
=RECHERCHEV(INDEX(B1:B10;MAX(SI((B1:B10<>"")*(NBCAR(B1:B10)<3)>0;LIGNE(B1:B10);""));1);B:C;2;0)

Attention André, ces formules sont matricielles, tu dois les valider par Ctrl+Shift+Entrer

@+Jean-Marie
 
Salut à vous deux,

Presque 12 heures de retard pour lire vos réponses !

Je ne pourrais les apprécier pleinement que cet aprè-midi, car maintenant il est temps de se mettre au travail (eh oui !)

Bon dimanche à vous et encore merci.

André.
 
Bonjour André

Autre fonction matricielle, qui affiche x données correspondantes à la condition.
=SI(LIGNES(D$1😀1)<=SOMMEPROD(($A$1:$A$10<>"")*(NBCAR($A$1:$A$10)<3));RECHERCHEV(INDEX($A$1:$A$10;PETITE.VALEUR(SI(($A$1:$A$10<>"")*(NBCAR($A$1:$A$10)<3)>0;LIGNE($A$1:$A$10);"");LIGNES(D$1😀1));1);A:B;2;0);"")

Formule à mettre en cellule D1 puis fait un glisser/déposer sur x lignes. Les données seront affichées dans l'ordre de haut en bas, pour avoir l'inverse utilise GRANDE.VALEUR.

@+Jean-Marie
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
22
Affichages
1 K
Retour