• Initiateur de la discussion Initiateur de la discussion phaum
  • Date de début Date de début

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 !

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

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
 
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

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
 
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


😉
 
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
 
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 !!!
 
- 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
14
Affichages
505
Réponses
10
Affichages
256
Réponses
5
Affichages
629
Réponses
22
Affichages
316
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
83
Retour