Extraction caractère numérique dans chaine

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

  • Test1.xlsm
    21.7 KB · Affichages: 29
  • Test1.xlsm
    21.7 KB · Affichages: 27
  • Test1.xlsm
    21.7 KB · Affichages: 30

vgendron

XLDnaute Barbatruc
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..
 

job75

XLDnaute Barbatruc
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+
 

Pierrot75

XLDnaute Nouveau
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.
 

Pierrot75

XLDnaute Nouveau
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

  • Test1.xlsm
    22 KB · Affichages: 26
  • Test1.xlsm
    22 KB · Affichages: 27
  • Test1.xlsm
    22 KB · Affichages: 23

job75

XLDnaute Barbatruc
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:

Pierrot75

XLDnaute Nouveau
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+
 

Modeste geedee

XLDnaute Barbatruc
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 :cool: :
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: 45
  • Capture.jpg
    Capture.jpg
    75.9 KB · Affichages: 44

Modeste geedee

XLDnaute Barbatruc
Re : Extraction caractère numérique dans chaine

Re, salut Modeste geedee,

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

« Taisez-vous, Elkabbach ! »
;)
« C'était p'têt pas vot'question, oui mais c’est ma réponse ! »
:cool:
« Liliane, fais les valises, on rentre à Paris »
:D
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 ?
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35