Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 PR,
Un petit fichier test serait le bienvenu pour éviter toute erreur d'interprétation.
Au pif, si A1 contient la chaine, alors peut être en B1 :
VB:
=SI(ESTNUM(CNUM(GAUCHE(A1;1))*1);A1;"")
1733560527261.png
 
  • J'aime
Réactions: PR.
Bonjour à tous,

Formule sans la seconde colonne
VB:
=SUBSTITUE(SIERREUR(STXT(A8;EXP(LN(MAX(SI(ESTNUM(-STXT(A8;LIGNE(INDIRECT("1:"&NBCAR(A8)));1));LIGNE(INDIRECT("1:"&NBCAR(A8)))))))+1;200);"");" ";"")

JHA
 

Pièces jointes

Dernière édition:
  • J'aime
Réactions: 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

Réactions: PR.
Bonjour à toutes & à tous,
Allez j'y vais de la mienne qui exclue les chaînes qui commencent par plus de 2 chiffres
=SI(ESTNUM(STXT(A1;1;1)*1)*ESTERR(STXT(A1;1;3)*1);A1;"")
À bientôt
(Sur mon téléphone)
 
Réactions: PR.
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)
 
Réactions: PR.
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 :

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:
Réactions: PR.
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 +
 
Réactions: PR.
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…