Extraire une valeur numérique dans un texte qui est dans une cellule

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 !

zephir94

XLDnaute Impliqué
Bonjour à tous,

Je rencontre un problème dans le remplissage d'une listebox avec des cellules qui pourrais ou pas comporter des - 1 INV ou + 3 INV ou + 2 COM.... juste récupérer 1, 3, 2....12, 20...

Je voudrais uniquement récupérer la valeur numérique de ces cellules
Voici mon code :

Code:
ll = Feuil18.Range("I65536").End(xlUp).Row
 If .Range("C" & g).Value Like ComboBox6.Text & "*" Then
  If .Range("I" & g).Value <> "" Or .Range("L" & g).Value <> "" Then
    If Not .Range("K" & g).Value Like "*PRÊT*" Then
'-------------------------------------------------> 
Extraire la valeur numérique de  .Range("I" & g).Value ou .Range("K" & g).Value
si elle sont polluées par des lettres ou des + ou -
'-------------------------------------------------<
 Feuil18.Range("A" & ll + 1).Value = .Range("A" & g).Value
 Feuil18.Range("B" & ll + 1).Value = .Range("B" & g).Value
 Feuil18.Range("C" & ll + 1).Value = .Range("C" & g).Value
 Feuil18.Range("I" & ll + 1).Value = .Range("I" & g).Value
 Feuil18.Range("K" & ll + 1).Value = .Range("K" & g).Value
 Feuil18.Range("L" & ll + 1).Value = .Range("L" & g).Value
 Feuil18.Range("M" & ll + 1).Value = pri
 Feuil18.Range("N" & ll + 1).Value = total
        ListBox1.AddItem
        toto = ListBox1.ListCount - 1
        ListBox1.List(toto, 0) = Feuil18.Range("A" & ll + 1).Value
        ListBox1.List(toto, 1) = Feuil18.Range("B" & ll + 1).Value
        ListBox1.List(toto, 2) = Feuil18.Range("C" & ll + 1).Value
        ListBox1.List(toto, 3) = Feuil18.Range("I" & ll + 1).Value
        ListBox1.List(toto, 4) = Feuil18.Range("K" & ll + 1).Value
        ListBox1.List(toto, 5) = Feuil18.Range("L" & ll + 1).Value
        ListBox1.List(toto, 6) = Feuil18.Range("M" & ll + 1).Value
        ListBox1.List(toto, 7) = Feuil18.Range("N" & ll + 1).Value
    End If
  End If
 End If
End if
car après je fais la somme de ces colonnes dans mon code et forcement ces valeurs ne sont pas prisent en compte !

Code:
Feuil18.Range("I" & ll + 2).Value = Application.WorksheetFunction.Sum(Range("I" & jj & ":I" & ll + 1))
Feuil18.Range("K" & ll + 2).Value = Application.WorksheetFunction.Sum(Range("K" & jj & ":K" & ll + 1))

Je ne maîtrise pas encore les chaines de caractères, j'ai fais des recherches on doit sûrement utiliser len ou isnumeric...

Merci par avance pour vos aides
 
Dernière édition:
Re : Extraire une valeur numérique dans un texte qui est dans une cellule

Bonjour zephir94,

Il manque des précisions (ou un petit extrait de fichier représentatif):
- les chiffres précèdent-ils toujours le texte?
- y aura-t-il des décimales?
- le texte fait-il toujours 3 caractères
- etc.
 
Re : Extraire une valeur numérique dans un texte qui est dans une cellule

Bonjour Modeste,

Merci pour ta réponse.
les valeurs numérique ne sont que sont la forme 1,2,3... sans virgules
Je ne peut avoir que des - (numérique) INV ou + (numérique) INV ou + ( numérique ) COM ou (numérique) RETOUR voici les différents cas
 
Dernière édition:
Re : Extraire une valeur numérique dans un texte qui est dans une cellule

Bonjour,

Chaque valeur numérique

=num($A$1;COLONNES($A:A))

Code:
Function Num(chaine, n)
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "\d+"
  Set a = obj.Execute(chaine)
  If a.Count > 0 Then Num = a(n - 1) Else Num = ""
End Function

Toutes les chiffres comme un seul nombre

http://boisgontierjacques.free.fr/fichiers/fonctionsperso/Fonction_NumeriqueChaine2.xls

Code:
Function NumChaine(chaine)
  Application.Volatile
  TempChaine = Trim(Application.Substitute(chaine, ",", "."))
  Temp = ""
  For i = 1 To Len(TempChaine)
    c = Mid(TempChaine, i, 1)
    If c >= "0" And c <= "9" Or c = "." Then Temp = Temp & c
  Next i
  NumChaine = Val(Temp)
End Function

Dans le tableur: =Numchaine(A1)

ou en VBA

x = NumChaine([A1])


JB
 

Pièces jointes

Dernière édition:
Re : Extraire une valeur numérique dans un texte qui est dans une cellule

Re,

Il y a bien la fonction Val, qui mériterait d'être testée:
Code:
Feuil18.Range("A" & ll + 1).Value = Val(.Range("A" & g).Value)

Edit: Arfff, salut JB ... pas rafraîchi!
 
Re : Extraire une valeur numérique dans un texte qui est dans une cellule

Merci à vous deux pour vos aides.

BOISGONTIER j'ai donc copié dans un module
Code:
Function Num(chaine, n)
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "\d+"
  Set a = obj.Execute(chaine)
  If a.Count > 0 Then Num = a(n - 1) Else Num = ""
End Function

je teste comment

Code:
 .Range("I" & g).Value ou .Range("K" & g).Value

avec cette fonction ? car j'ai compris que c'est une formule qui permet de modifier ! mais je ne veux pas de formules
 
Dernière édition:
Re : Extraire une valeur numérique dans un texte qui est dans une cellule

Merci Modeste pour l'idée de Val()

J'ai modifié mon code comme ceci !

Code:
 Feuil18.Range("I" & ll + 1).Value = Val(.Range("I" & g).Value)
 Feuil18.Range("K" & ll + 1).Value = Val(.Range("I" & g).Value)

et val n'extrait que la valeur numérique de la cellule !

Merci BOISGONTIER pour l'aide
 
- 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

Réponses
10
Affichages
281
Réponses
4
Affichages
177
Réponses
8
Affichages
233
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
4
Affichages
461
Réponses
4
Affichages
505
Retour