extraction de nombre dans une chaine

drisou

XLDnaute Occasionnel
bonjour le forum, j ai dans la cellule 'a1' ceci :'1 ,12 et 46' je souaiterais mettre dans la cellule b1 le premier chiffre de la cellule a1(1). dans la cellule c1: le 2eme chiffre de la cellule a1(12). et dans d1 le 3 eme chiffre de la cellule a1(46).
merci pour votre aide.
 

Hervé

XLDnaute Barbatruc
Salut drisou, le forum


Si tu veux une réponse en VBA essaye ceci, en espérant que tu ne soit pas en xl97 :

Sub Bouton1_QuandClic()
Dim tablo As Variant
Dim tablo2 As Variant

tablo = Split(Range('a1'), ',')
tablo2 = Split(tablo(1), 'et')

Range('b1') = tablo(0)
Range('c1') = tablo2(0)
Range('d1') = tablo2(1)
End Sub

Pour une réponse en formule, va falloir attendre les copains (copines) formulistes

salut
 

drisou

XLDnaute Occasionnel
salut hervé, andré et gael merci a vous de repondre aussi rapidement. j ai presque pas fini ma question que vous postiez deja vos reponses .lol. oui en effet il y a toujours une virgule apres le chiffre ainsi que des espaces et 'et'. merci
 

andré

XLDnaute Barbatruc
Resalut,

B1 : =GAUCHE(A1;CHERCHE(' ';A1)-1)*1
C1 : =STXT(A1;CHERCHE(',';A1)+1;2)*1
D1 : =STXT(A1;CHERCHE('et';A1)+3;10)*1

Si le deuxième nombre ne fait pas toujours 2 caractères, il faudra légèrement modifier la formule en C1.

Si par contre le premier nombre fait toujours 1 caractère et le dernier toujours 2, il y moyen de simplifier toutes les formules.

Â+
 

Hervé

XLDnaute Barbatruc
re drisou, bonjour andré, gael, le forum

toute petite intervention pour expliquer à drisou que l'on peut déclencher une macro en automatique. :)

drisou, il existe les macros évenementielles qui se déclenchent par exemple des qu'une cellule se modifie sur une feuille.

Par exemple dans ton cas ceci donnerai :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo As Variant
Dim tablo2 As Variant

If Target.Address(0, 0) = 'A1' Then

    tablo = Split(Target, ',')
    tablo2 = Split(tablo(1), 'et')

    Range('b1') = tablo(0)
    Range('c1') = tablo2(0)
    Range('d1') = tablo2(1)
End If
End Sub

en collant ce code dans le module de la feuille adéquate (clic droit sur le nom de l'onglet, puis visualiser le code) la macro se déclenchera des que tu changera une valeur en A1.

salut
 

drisou

XLDnaute Occasionnel
merci andré et hervé , mais j ai un petit prob car j ai fait comme l a indiquer andré mais y a des cellules qui me marque des erreur. je joint le fichier en question . merci hervé c est vrai que j avais oublié le declanchement evenementiel. merci
 

drisou

XLDnaute Occasionnel
lol, ja i oublié le fichier [file name=extraction_20050920161036.zip size=5938]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extraction_20050920161036.zip[/file]
 

Pièces jointes

  • extraction_20050920161036.zip
    5.8 KB · Affichages: 11

Hervé

XLDnaute Barbatruc
re

Une proposition en pièce jointe par macro evenementielle ou 'classique' :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Byte
Dim nombre As String
Dim col As Byte

If Intersect(Target, Range('e7:e38')) Is Nothing Then Exit Sub
col = 9
   
For i = 1 To Len(Target)
       
If IsNumeric(Mid(Target, i, 1)) And IsNumeric(Mid(Target, i + 1, 1)) Then
            nombre = nombre & Mid(Target, i, 1)
       
ElseIf IsNumeric(Mid(Target, i, 1)) And Not IsNumeric(Mid(Target, i + 1, 1)) Then
            nombre = nombre & Mid(Target, i, 1)
            Cells(Target.Row, col) = nombre
            nombre = ''
            col = col + 1
       
End If
   
Next i

End Sub

salut
[file name=extractiondrisou.zip size=13202]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/extractiondrisou.zip[/file]
 

Pièces jointes

  • extractiondrisou.zip
    12.9 KB · Affichages: 18

andré

XLDnaute Barbatruc
Rebonjour à vous tous,

drisou, tu me copieras 100 fois : quand je pose une question, il faut que celle-ci reflète exactement l'étendue de mon problème (lol).

Enfin, volià une question intéressante.
Je ne suis pas sur de trouver la solution miracle, mais je vais quand même essayer par formule.

Un peu de patience donc.

Â+
 

drisou

XLDnaute Occasionnel
re tout le monde , excuse andré c est vrai qu au debut je n ai pas precisé car je pensait qu en me donnant juste la formule je pouvais me debrouiller pour le reste ,ce qui me permet d apprendre ,helas je me suis surestimer.
merci hervé ta methode est super , vraiment bien .
juste est il possible de mettre les caracteres texte qui precedent les nombres qui figurent dans certaines cellules. par ex: A,5 et 20.
serait de mettre A5 dans la meme cellule ou meme de mettre A dans une cellule seul.
merci encore
 

Discussions similaires

Réponses
5
Affichages
394
  • Question
Microsoft 365 TEXTSPLIT
Réponses
4
Affichages
423

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson