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

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:

Modeste

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

zephir94

XLDnaute Impliqué
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:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Classeur1.xls
    31.5 KB · Affichages: 32
  • Classeur1.xls
    31.5 KB · Affichages: 24
Dernière édition:

Modeste

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

zephir94

XLDnaute Impliqué
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:

zephir94

XLDnaute Impliqué
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
 

Discussions similaires

Réponses
4
Affichages
417
Réponses
4
Affichages
450

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 657
dernier inscrit
jpb3