Extraction lettres avec une quantité aléatoire

thomasamws

XLDnaute Nouveau
Bonjour à tous,

Ma navigation sur le forum ne m'a pas apporté de réponse, je me demande donc s'il est possible de faire ce que je souhaite.

J'ai une série de code mélangeant lettres et chiffres. Je cherche à isoler les lettres. Le souci est que le nombre de lettre varie, tout comme le nombre de chiffre...

En gros, je peux avoir :

PFFIAG6527238
PFA 23523 (et oui, des espaces en plus)
PFGRSOER2356

Si quelqu'un connaît une solution, ce sera un grand plaisir.

Merci et bon week-end
 

JCGL

XLDnaute Barbatruc
Re : Extraction lettres avec une quantité aléatoire

Bonjour à tous,

Ta valeur en A1
En C1 (pour isoler les lettres):
=SI(A1="";"";STXT(A1;EQUIV(VRAI;ESTNUM(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1);0);9^9)*1)
A valider par Ctrl + Maj + Enter


En B1 (pour isoler les chiffres) :
=GAUCHE(A1;NBCAR(A1)-NBCAR(C1))
A + à tous
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Extraction lettres avec une quantité aléatoire

Bonjour
Cette fonction perso fait l'affaire:
VB:
Function Lettres(ByVal Z As String) As String
Dim P As Long
Lettres = ""
For P = 1 To Len(Z)
   If UCase$(Mid$(Z, P, 1)) <> LCase$(Mid$(Z, P, 1)) Then Lettres = Lettres & Mid$(Z, P, 1)
   Next P
End Function
À+
 
Dernière édition:

Creepy

XLDnaute Accro
Re : Extraction lettres avec une quantité aléatoire

Bonjour,

Il y avait longtemps que je n'avais pas fait un post.

je vois que les réponses arrivent toujours aussi vites !! :eek:

Bref j'ai fait un fonction qui peut être appelée comme une formule, alors je poste

@+

Creepy
 

Fichiers joints

Robert

XLDnaute Barbatruc
Re : Extraction lettres avec une quantité aléatoire

Bonjour le fil, bonjour le forum,

Une proposition VBA :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim x As Integer 'déclare la variable x (incrément de caractère)
Dim l As String 'déclare la variable l (Lettres)
 
Set pl = Range("A1:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'à adapter
For Each cel In taplage 'boucle 1 : sur toutes les cellules éditées cel de la plage pl
    For x = 1 To Len(cel) 'boucle 2 : sur tous les caractères de la cellule cel
        'si le caractère né st pas numérique, définit la variable l
        If IsNumeric(Mid(cel.Value, x, 1)) = False Then l = l & Mid(cel.Value, x, 1)
    Next x 'prochain caractères de la boucle 2
    cel.Offset(0, 1).Value = l 'place dans la cellule à coté de cel l'extraction des lettres uniquement (à adapter)
Next cel 'prochaine cellule de la boucle 1
End Sub
 

Discussions similaires


Haut Bas