chaine de caractere

phaum

XLDnaute Junior
Bonsoir
J'ai une serie de données (bourse) tel que ci dessous:

ALCATEL10SG0905
AIRLIQUI150CBP0905....

Je souhaiterais extraire

d'une part la série de chiffre compris après la premiere serie de lettre puis la derniere serie de chiffre
Soit dans une colonne
10
150
et dans une autre colonne
0905
0905

Merci de votre aide
Bonsoir
 

Sylvie

XLDnaute Accro
Bonsoir Phaum, Lapinou

je suis hélas de ton avis Lapinou, car je sèche à mon tour. Jean Marie va peut être également passer par là ??
J'ai bien essayé d'extraire les caractères 1 à 1 et de les tester dans le but d'isoler lettres et chiffres; mais tel qu'est écrit le code bourse, la fonction ESTTEXTE faite sur chacun des caractères de la chaine renvoie la valeur VRAI qu'il s'agisse d'une lettre ou d'un chiffre. Idem pour ESTNUM qui renvoie toujours FAUX en extrayant les caractères de la sorte.

:( :(

Il ne nous reste plus qu'à chercher encore (au cas où ....) et à attendre !
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Sylvie, Lapinou, Phaum

Oui pas évident, d'ailleurs même en VBA j'ai pondu un truc tordu de chez tordu LOL, mais ce devrait faire quand même l'affaire (NB sauf sous Excel 97 non !!)

Option Explicit

Sub NumberTraker()
Dim Cell As Range
Dim i As Byte
Dim StringTmp As String, StringNum1 As String
Dim Num As Boolean, Stopped As Boolean
Dim Container As Variant

   
For Each Cell In Range('A1:A100') ''A Spécifier ....
       
If Not Cell = '' Then
        Num =
False
        Stopped =
False
        StringTmp = ''
        StringNum1 = ''
       
       
For i = 1 To Len(Cell)
               
If IsNumeric(Mid(Cell, i, 1)) Then
                   
If Not Stopped Then
                        StringNum1 = StringNum1 & Mid(Cell, i, 1)
                            Num =
True
                   
End If
               
Else
                   
If Num = True Then
                        StringTmp = StringTmp & Mid(Cell, i, 1)
                        Stopped =
True
                   
End If
               
End If
         
Next
        Container = Split(Cell.Text, StringTmp)
           
        Cell.Offset(0, 1) = StringNum1
         
With Cell.Offset(0, 2)
          .NumberFormat = '0000'
          .Value = Container(1)
         
End With
       
End If
   
Next

End Sub


C'est sûrement faisable de faire plus directe, mais aujourd'hui je dois avoir l'esprit un peu embrouillé !!!

Bonne Soirée
@+Thierry
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Voici un exemple de fichier qui j'espère te conviendra avec macro

Bonne soirée [file name=Classeur2_20050724215117.zip size=7721]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur2_20050724215117.zip[/file]


EDITION :

Oups excuse Thierry j'avais pas rafraichi mais bon avec 1 minutes d'ecart c'est dur de se voir

Message édité par: Pascal76, à: 24/07/2005 21:52
 

Pièces jointes

  • Classeur2_20050724215117.zip
    7.5 KB · Affichages: 19

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Pascal

Oui pas mal, mais aussi un peu tordu pour une bonne optimisation, j'avais aussi pensé à l'exit et un second passage à l'envers des strings, puis je me suis ravisé quand j'ai pensé que pour des actions (j'en sais quelque chose au boulot) on parle de plusieurs milliers de lignes...

Donc du coup j'ai opté pour la 'Guerre des Clones Booleans au Pays de Mr Spock'

LOL

Bonne Soirée
@+Thierry
 

JeanMarie

XLDnaute Barbatruc
Bonsoir tout le monde

Après VBA, voici les deux formules matricielles, à valider par les touches Ctrl+Shift+Entrer

La solution est tirée par les cheveux.

@+Jean-Marie [file name=TireParLesCheveux.zip size=4512]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TireParLesCheveux.zip[/file]

Message édité par: JeanMarie, à: 25/07/2005 23:19
 

Pièces jointes

  • TireParLesCheveux.zip
    4.4 KB · Affichages: 17

_Thierry

XLDnaute Barbatruc
Repose en paix
WOW Jean Marie

Tu es un grand malade toi aussi LOL !!!

Il faut que je colle cette formule ici :

{=STXT(A1;MIN(SI(ESTNUM(('0'&STXT(A1;LIGNE(A$1:A$100);1))*1);LIGNE(A$1:A$100)));MAX(SI(ESTNUM(('0'&STXT(A1;LIGNE(DECALER(A$1;;;NBCAR(A1)-NBCAR(C1)));1))*1);LIGNE(DECALER(A$1;;;NBCAR(A1)-NBCAR(C1)))))-MIN(SI(ESTNUM(('0'&STXT(A1;LIGNE(A$1:A$100);1))*1);LIGNE(A$1:A$100)))+1)}

{=STXT(A1;MAX(SI(ESTNUM(STXT(A1;LIGNE(DECALER(A$1;;;NBCAR(A1)));1)*1);;LIGNE(DECALER(A$1;;;NBCAR(A1)))))+1;255)}

Finalement je suis pas si atteint que çà ni Pascal non plus LOL

Bravo Jean Marie !!!

@+Thierry
 

Sylvie

XLDnaute Accro
Re bonsoir,

voilà pour vous !!!!
Il y a de la place pour toi Jean Marie et tu peux y emmener ton ami Thierry.
Pascal tu ne veux pas monter ?

et_100_9.gif


Lapinou, on s'en va à pied nous !

Bonsoir


;)
 

PascalXLD

XLDnaute Barbatruc
Modérateur
re

Sylvie c'est un véritable honneur que de monter dans l'ambulance avec des 'FOUS' du vba et de la formule tels que Thierry et Jean-Marie

Mais je pense qu'il faudra que tu prennes un modèle plus grand car il y en a un paquet sur ce forum qui vont monter dans l'ambulance :) :)

Bonne soirée
 

lapinou1

XLDnaute Occasionnel
c'est parti avec mes super chaussures de marche alors :woohoo: je te suis sylvie ;)

que j'aime ce forum, merci david pour avoir réussi à créer ce qu'est XLD aujourd'hui !!!

c'est un pied monumentale que je prends en venant vous lire régulièrement ici je vous jure !!!
 

Discussions similaires

  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
253

Membres actuellement en ligne

Statistiques des forums

Discussions
312 816
Messages
2 092 361
Membres
105 378
dernier inscrit
y07