extraction de nombres

matou59

XLDnaute Junior
Bonjour,

Comment extraire des nombres separes par "-" ou par"+" parmi une chaine de caracteres et les placer chacun dans une colonne differente.

Le fichier joint explique ce que je veux faire...

merci
 

Pièces jointes

  • PROB.xls
    14.5 KB · Affichages: 84
  • PROB.xls
    14.5 KB · Affichages: 88
  • PROB.xls
    14.5 KB · Affichages: 87

Tibo

XLDnaute Barbatruc
Re : extraction de nombres

Bonjour,

Une tentative (qui doit pouvoir être simplifiée) :

en B1 :

Code:
=STXT(SUBSTITUE(SUBSTITUE("-"&SUBSTITUE($A1;"+";"-")&"-";"-";"µ";COLONNE()-1);
"-";"£";COLONNE()-1);TROUVE("µ";SUBSTITUE(SUBSTITUE("-"&SUBSTITUE($A1;"+";"-")&
"-";"-";"µ";COLONNE()-1);"-";"£";COLONNE()-1))+1;TROUVE("£";SUBSTITUE(
SUBSTITUE("-"&SUBSTITUE($A1;"+";"-")&"-";"-";"µ";COLONNE()-1);"-";"£";COLONNE()
-1))-TROUVE("µ";SUBSTITUE(SUBSTITUE("-"&SUBSTITUE($A1;"+";"-")&"-";"-";"µ";
COLONNE()-1);"-";"£";COLONNE()-1))-1)

à recopier vers la droite

et vers le bas

@+
 

hoerwind

XLDnaute Barbatruc
Re : extraction de nombres

Bonjour, salut Jean-Marcel, Tibo et pierrejean,

Un autre essai par formules, voir la pièce jointe.

Edition :
Je viens de regarder la formule de Tibo, cela se ressemble fort, à la différence que j'ai préféré nommer la partie répétitive de la formule.
 

Pièces jointes

  • ExtractionNombre.xls
    23 KB · Affichages: 81
Dernière édition:

fhoest

XLDnaute Accro
Re : extraction de nombres

bonjour le fil
Pas mal pierrejean je ne connaissait pas du tout ces fonctions vba
pourrais tu expliquer le code svp car avec l'aide de vb ça me brouille mon ptit cerveau
merci
Ps: j'avais essayer mais je commencé a me compliquer la vie sur ce bout de code qui pouvez apparement etre tres court
A+
 

pierrejean

XLDnaute Barbatruc
Re : extraction de nombres

Re

@ fhoest

La macro commentée (du mieux que j'ai pu)

Code:
Sub test()
For n = 2 To Range("A2").End(xlDown).Row
'replace(range("A" & n),"-"," ") remplace dans range("A" & n) le moins par un espace
'le resulat est repris par un nouveau replace qui remplace le + par un espace
'le Split(mots," ") cree un tableau contenant tous les items de mots séparés par un espace
  x = Split(Replace(Replace(Range("A" & n), "-", " "), "+", " "), " ")
'ecriture des items du tableau x
  For m = LBound(x) To UBound(x)
    Cells(n, m + 2) = x(m)
  Next m
Next n
End Sub
 

fhoest

XLDnaute Accro
Re : extraction de nombres

encore moi
je pense avoir compris et pour lbound cela veut dire la valeur mini de l'index du tableau et inversement pour ubound c'est bien ca
merci pour les explication c'est pas mal comme fonction
A bientot
 

Staple1600

XLDnaute Barbatruc
Re : extraction de nombres

Bonsoir à tous


Un autre façon de procéder (avec RegExp)

Code:
Sub MacroMatou59()
'adapté d'un code de Ron Rosenfeld
Dim c As Range, i As Long
Dim xp As Object, mc As Object, m As Object
Set xp = CreateObject("vbscript.regexp")
    With xp
    .Global = True
    .Pattern = "\d+"
        For Each c In Range("A1", [A56536].End(xlUp))
            If .test(c.Value) = True Then
            Set mc = .Execute(c.Value)
            For i = 0 To mc.Count - 1
            c(1, i + 2).Value = mc(i) * 1
            Next i
        End If
        Next c
    End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 188
Messages
2 086 028
Membres
103 100
dernier inscrit
erym64300