Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Dissocier les lettres.

  • Initiateur de la discussion Initiateur de la discussion ericTA
  • 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 !

ericTA

XLDnaute Occasionnel
Bonjour à tous,
J'essaie de trouver un moyen de dissocier les lettres et les chiffres d'une chaîne de caractère.
Ex chaine = "AML123"
Y a-t-il un moyen simple d'obtenir deux chaînes l'une avec les lettres l'autre avec les chiffres.
Lettre = "AML"
Chiffre = "123"
Merci d'avance
Eric
 
Re : Dissocier les lettres.

Salut
=gauche("AML123";3) => "AML"
=droite("AML123";3) => "123"

A+
 
Re : Dissocier les lettres.

Bonjour,

Si la chaine est susceptible de varier en nombre de lettres et nombre de chiffres, une solution avec une formule matricielle :

=STXT(A1;EQUIV(VRAI;ESTNUM(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1);0);9^9)

Formule à valider par CTRL + MAJ + ENTREE

Si toutes tes chaines ont la même forme (6 caractères : 3 lettres 3 chiffres) :

=DROITE(A1;3)


Essaye et dis nous

@+

Edit : salut Gorfael, pas rafraichi, t'avais pas vu passer.

@+
 
Re : Dissocier les lettres.

bonsoir,

une solution: fonction utilisant les expressions rationnelles à adapter dans une proc VBA
Code:
 Option Explicit
 
 ' la bibliothèque Microsoft VBSCRIPT REGULAR EXPRESSIONS 5.5 doit être activée

 'Michel_M mai 2006
 
 Function extrait_nbre(ByRef texto As String) 'As Double
    Dim reg As VBScript_RegExp_55.regexp
    Dim digit As VBScript_RegExp_55.Match
    Dim extraction As VBScript_RegExp_55.MatchCollection

   ' instancie
    Set reg = New VBScript_RegExp_55.regexp
    
    '  travaille sur toute la cellule
    reg.Global = True
    '  définit le modèle (caractères "digitaux" à N chiffres)
    reg.Pattern = "(\d?\d?\d)|(,)"
    
    ' éxécute l'extraction svt modèle (collection des digits...)
    Set extraction = reg.Execute(texto)
    ' concaténète les membres de la collection "extraction"
    For Each digit In extraction
        extrait_nbre = extrait_nbre & (digit.Value)
    Next digit
    
    Set extraction = Nothing
    Set reg = Nothing
    
End Function
Function enleve_nbre(ByRef texto As String) As String
 
    Dim reg As VBScript_RegExp_55.regexp
    Dim lettre As VBScript_RegExp_55.Match
    Dim extraction As VBScript_RegExp_55.MatchCollection

   ' instancie
    Set reg = New VBScript_RegExp_55.regexp
    
    '  travaille sur toute la cellule
    reg.Global = True
    '  définit le modèle (complémentaire au chiffres )
   reg.Pattern = "(\D)"
    
    ' éxécute l'extraction svt modèle (collection des lettres)
    Set extraction = reg.Execute(texto)
    ' concaténète les membres de la collection "extraction"
    For Each lettre In extraction
        enleve_nbre = enleve_nbre & (lettre.Value)
    Next lettre
    
    Set extraction = Nothing
    Set reg = Nothing
End Function
 
Re : Dissocier les lettres.

Bonjour à tous

une autre solution si j'ai bien compris :

Code:
Sub test()
Dim i As Byte, carnum As String, caralpha As String
For i = 1 To Len(Range("a1").Value)
    If IsNumeric(Mid(Range("A1").Value, i, 1)) Then
        carnum = carnum & Mid(Range("A1").Value, i, 1)
    Else
        caralpha = caralpha & Mid(Range("A1").Value, i, 1)
    End If
Next i
End Sub

bonne fin d'après midi
@+
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…