Extraction caractère numérique dans chaine

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

Pierrot75

XLDnaute Nouveau
Bonjour,
dans le documument joint, je cherche à extraire le n° d'un document à partir de son nom.

Par exemple, si j'ai un doc nommé GBV R0007, je souhaiterai obtenir 0007. Avec mon code existant, je n'obtiens que 7 et je n'arrive pas à trouver de solution...

Chose importante, le nombre de 0 dans le nom du document n'est pas contant... il peut y en avoir 2 (007) comme 5 (00005)

Merci de votre aide.
 

Pièces jointes

Re : Extraction caractère numérique dans chaine

Hello

avec cette formule en D9
=SUBSTITUE(A9;"GBV R";"")

(passer le format de la colone D en "Standard"

j'imagine déjà que tu vas nous dire que le nom ne va pas forcément commencer par GBV_R..
d'ou la colonne type....
il y a sans doute quelque chose à faire moyennant l'espace qui existe entre GBV et R dans la colonne A, mais pas dans la colonne B..
 
Re : Extraction caractère numérique dans chaine

Re,

Autre solution, toujours dans une colonne format standard (pas texte ! ) :
=STXT(A9;NBCAR(STXT(A9;1;MIN(TROUVE({0;1;2;3;4;5;6;7;8;9};A9&" 0123456789"))));9^9)
à condition de vouloir récupérer toute la partie droite de la chaîne à partir du premier chiffre.
 
Re : Extraction caractère numérique dans chaine

Bonjour Pierrot75, salut Patrick, vgendron,

Il faudrait des exemples traitant tous les cas de figures.

Car avec ceux que vous avez donnés c'est élémentaire :

B9 => =SIERREUR(GAUCHE(A9;TROUVE(" ";A9)-1);"")

C9 => =SIERREUR(STXT(A9;TROUVE(" ";A9)+2;99);"")

A+
 
Re : Extraction caractère numérique dans chaine

bonjour et merci de vos réponses.
Je précise que je recherche une solution en vba en complément du code existant dans la pièce jointe.

Egalement, l'exemple n'utilise que des docs commencant par "GBV R" pour alléger le fichier. Cependant, j'ai d'autres documents commencant par d'autres chaines de caractères suivies d'une chaine numérique.
Aussi, je souhaiterai dispoer d'un code "générique" pouvant traiter le problème quelque soit le préfixe alphanumérique.
 
Re : Extraction caractère numérique dans chaine

ok, c'est bon j'ai trouvé une solution qui satisfait mon besoin.
En fait, c'est l'ajout du caractère " ' " qui manquait au code pour éviter que la chaine numérique commencant par 0 ne soit considérée comme un nombre et non pas comme une chaine de caractères alphanumérique.

Code:
Sub Analyse_Type1()

    Set listefichiers = Worksheets("ListeFichiers")
    
    For j = 9 To listefichiers.Range("A" & Rows.Count).End(xlUp).Row
        
        'Type de Document
            Cells(j, 2).Value = Txt(Replace(Cells(j, 1), " ", "", 1))
        
        'N° Document
            Cells(j, 3).Value = "'" & Replace(Replace(Cells(j, 1), " ", ""), Cells(j, 2), "")
        
    Next j

End Sub
.
 

Pièces jointes

Re : Extraction caractère numérique dans chaine

Re,

Le problème c'est que vous n'avez pas défini le problème...

Par exemple votre 1er code remplace la virgule par le point, pourquoi ?

Je répète : il faudrait des exemples plus complets.

A+
 
Dernière édition:
Re : Extraction caractère numérique dans chaine

En fait, lors de mon premier envoi, le code dans le fichier prévoyait l'utilisation des 2 fonctions, une pour extraire les chaine de texte (txt(chaine)) et une autre les chaines numériques (num(chaine)).

La dernière (num(chaine)) faisait défaut à mon besoin car engendrait la suppression systématique des "0" devant les autres nombres.
Cette fonction avait été récupérée d'un site et satifait effectivement l'extraction des valeurs numériques dans une chaine et je pensais donc que cela ferait l'affaire à mon problème... en vain.

encore désolé pour la mise en erreur/confusion...

A+
 
Re : Extraction caractère numérique dans chaine

Bonsour®
dans les fonctions persos contenu dans le document il existe :
Function NumChaine(chaine)

une petite adaptation qui pourrait faire l'affaire 😎 :
Capture.jpg
VB:
Function ExtractNum(chaine)
  Application.Volatile
  temp = ""
  For i = 1 To Len(chaine)
    If IsNumeric(Mid(chaine, i, 1)) Then temp = temp & Mid(chaine, i, 1)
  Next i
  ExtractNum = temp
End Function
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    75.9 KB · Affichages: 53
  • Capture.jpg
    Capture.jpg
    75.9 KB · Affichages: 50
Re : Extraction caractère numérique dans chaine

Re, salut Modeste geedee,

Sur n'importe quoi n'importe quel code fait l'affaire 🙄
A+

« Taisez-vous, Elkabbach ! »
😉
« C'était p'têt pas vot'question, oui mais c’est ma réponse ! »
😎
« Liliane, fais les valises, on rentre à Paris »
😀
Aussi, je souhaiterai dispoer d'un code "générique" pouvant traiter le problème quelque soit le préfixe alphanumérique.
générique ??? spécifique ???

y-a-t il d'autres caractères numériques que ceux souhaités ?
 
- 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

Retour