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

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

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

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

Dernière édition:
- 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

Retour