XL 2013 Récupérer dans une chaine de caractere un ensemble commençant par A

creolia

XLDnaute Impliqué
Bonsoir à tous

Je viens vous demander votre aide précieuse pour récupérer dans une chaine de caractère des ensembles commençant par la lettre A.

Je m'explique un peut dans la Cellule A2 j'ai plusieurs ensemble de caractère (N° de porte) qu'ils ont en commun qu'il commence tous par la lettre A

Exemple en cellules: A1 " A001-A066-A114" je voudrais scinder chaque chaine et les mettre dans une variable que j'utiliserais pour la suite de ma macro.

exemple: Variable1 = A001 Variable2 = A066 Variable3 =A114

Le tous si possible en VBA.

j'ai fais des recherches mais sans succès.

j’espère vous pourrez m'aider en vous remerciant par avance.
 

Pièces jointes

  • Chaine Caract.xlsx
    8.6 KB · Affichages: 6

R@chid

XLDnaute Barbatruc
Bonsoir,
tu peux faire avec Données/Convertir si tu veux,
Sinon, par formule matricielle, en C2:
VB:
=SIERREUR(INDEX(FILTRE.XML("<a><b>"&SUBSTITUE($A2;"-";"</b><b>")&"</b></a>";"//b");COLONNES($C:C));"")
@ valider par Ctrl+Maj+Entrée
@ tirer vers la droite puis vers le bas


Cordialement
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @creolia,

Avec une fonction VBA qui en entrée prend une chaine de caractères et en sortie renvoie un tableau contenant les mots commençant par un A.

Voir dans le fichier le code code de la fonction dans module1.
La procédure Test montre l'utilisation de la fonction VBA.

Code de la fonction tabloA dans module1 :
VB:
' tabloA est un tableau à une dimension dont le premier indice est 0 (et non pas 1)
' le premier élément de tabloA (donc d'indice 0) contient le nombre de mots de X commençant par un "A"
' les éléments suivants d'indice 1 à T(0) contiennent les mots commençant par un "A"
'
' soit X = "a11+toto+a10-ABC"
' alors TabloA est un tableau dont l'élément d'indice 0 contient le nombre 3
' et les éléments d'indice 1 à 3 contiennent respectivement A11, A10 et ABC

Function tabloA(ByVal X As String)
Dim i&, s, n&, r()
   X = UCase(X)
   For i = 1 To Len(X)
      Select Case Mid(X, i, 1)
         Case " ", "A" To "Z", "0" To "9":
         Case Else: X = Replace(X, Mid(X, i, 1), " ")
      End Select
   Next i
   X = Application.Trim(X): ReDim r(0 To 0)
   s = Split(X)
   For i = 0 To UBound(s)
      If Left(s(i), 1) = "A" Then n = n + 1: ReDim Preserve r(0 To n): r(n) = s(i)
   Next i
   r(0) = n: tabloA = r
End Function
 

Pièces jointes

  • creolia- extraire mot Axxx- v1.xlsm
    19 KB · Affichages: 12
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 319
Membres
103 177
dernier inscrit
grizly