Microsoft 365 Extraire la totalité du contenu d'une cellule si une cellule commence par un nombre

  • Initiateur de la discussion Initiateur de la discussion PR.
  • 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 !

PR.

XLDnaute Nouveau
bonjour,
existe-t-il une formule pour réaliser l'action décrite ci dessous.
En colonne A, l'extraction d'une base de donnée comportant un grand nombre de lignes.
Les cellules contiennent essentiellement du texte et seulement quelques une commence par un nombre allant de 1 à 99.
En colonne B, une extraction des deux premiers caractères de chaque chaine de chaque cellules.
Le besoin et d'afficher en colonne C, toute la chaine de caractère de la colonne A si B commence par un nombre compris entre 1 et 99.
Le tout sous forme de fonction pouvant être dupliquée par glissement.
Par avance merci de votre aide.

Cdt PR
 
Bonjour le forum,
Les cellules contiennent essentiellement du texte et seulement quelques une commence par un nombre allant de 1 à 99.
Formule matricielle en B1 :
Code:
=REPT(A1;SIGNE(NB(LN(TROUVE(LIGNE(INDIRECT("1:99"));A1)=1)))*ESTERR(--GAUCHE(A1;3)))
Sur Office 365 la validation matricielle par Ctrl+Maj+Entrée n'est pas nécessaire.

A+
 

Pièces jointes

même s'il me semble que les doigts de Sylvanu ont ripé sur une plaque de verglas de son clavier pour ajouter *1 à prioro inutiles
En fait c'est le Cnum qui est inutile.
J'ai commencé avec une stratégie et fini avec une autre.😂
VB:
=SI(ESTNUM(GAUCHE(A1;1)*1);A1;"")
 

Pièces jointes

Une proposition qui, je l'avais oublié précédemment, (comme l'a fait remarqué @job75), prend en compte le 0.
Dans la formule, j'élimine les saisies qui commencent par 0 mais aussi 00 (je me sers de la division par 0)

VB:
=SI(ET(ESTERREUR(1/CNUM(GAUCHE($A1;1)));ESTERREUR(1/CNUM(GAUCHE($A1;2))));"";$A1)
1733570361060.png
 
Hello,
j'ai fait un test de performance entre différentes formules proposées dans cette discussion sur 1000 lignes. Voici ce que cela donne :
PerformanceFormules.gif


A noter que ma formule est une fonction personnalisée en VBA avec du Regexp. C'est pour cela qu'elle est 10 fois moins performante qu'une formule avec des fonctions natives.

Ami calmant, J.P
 

Pièces jointes

Dernière édition:
Attention la formule de sylvanu fait moins de choses que les autres.
Et 1000 cellules sont insuffisantes si l'on veut une mesure fiable et précise.
Hello job75,
Effectivement et on le voit bien en lançant les tests plusieurs fois mais là je ne faisais qu'un essai pour voir si le code de mesure de temps de calcul en VBA (proposé par Microsoft) fonctionnait. Cela me semble pas trop mal
A +
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Retour