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

XL 2016 Macro pour découper une chaine de caractères, suivant un ou plusieurs type de séparateur(s)

SebCam

XLDnaute Nouveau
Bonjour à tous, membre du forum,
Par les fonctions d'Excel Gauche, STXT et CHERCHE, je parviens à découper ma chaine, seulement mes feuilles seront renouvelées. De ce fait je cherche à transcrire en code VBA cette manipe, mais je reste bloqué sur la syntaxe et déroulement.
J'y joints un exemple qui sera plus explicite :
Dans mon classeur, une feuille Sommaire qui recueille toutes les informations issues de n feuille(s) [mini 1; maxi 147 voir plus].
Je souhaite récupérer des données d'une chaine de caractères de type "AAAAAAAAAAAAA AAAAAAAAA AA AAAA – BB.BB.BB – RR RRRRRR RRRRRRR RRRRRR – WWWW WWWWWW WWWWW – ZZ ZZZZZZZZ ZZ ZZZZZZZZZ ZZZZZ" plus ou moins longue, mais contenant des séparateurs pouvant varier (esp-esp, esp–esp, "au choix").
La résultante de cette découpe, récupérée dans chaque ligne D:H suivant le nombre de séparateur, suivant les Feuilles C:C.

Merci à vous.
 

Pièces jointes

  • Macro découper chaine caractères suivant séparateur(s).xlsm
    21.8 KB · Affichages: 11

Dranreb

XLDnaute Barbatruc
Bonsoir.
Cette fonction personnalisée marche avec vos données :
VB:
Function Découp(ByVal Txt As String)
   Découp = Split(Replace(Txt, " - ", " – ")", " – ")
   End Function
En 'Sommaire'!D4:H4 validé par Ctrl+Maj+Entrée, puis propagée ensuite seulement vers le haut :
Code:
=Découp(INDIRECT("'"&C4&"'!$A$4"))
 

Dranreb

XLDnaute Barbatruc
Pour tenir compte de séparateurs spécifiables :
VB:
Function Découp(ByVal Txt As String, Optional ByVal Sép1 As String, Optional ByVal Sép2 As String)
   If Sép1 = "" Then Sép1 = " – "
   If Sép2 = "" Then Sép2 = " - "
   Découp = Split(Replace(Txt, Sép2, Sép1), Sép1)
   End Function
 

SebCam

XLDnaute Nouveau
Bonsoir Dranreb, R@chid,
Merci de votre retour. Pour lister les Feuilles, le bouton "ACTION" fait le travail.
J'ai utilisé les formules dans chaque feuille Action, soit GAUCHE.... STXT(... CHERCHE...! (Beaucoup à écrire, 147 Feuilles).
Seulement mes Feuilles "ACTION" vont changer dans leur contenu de la cellule A4 (le choix libre du séparateur que je fournirai en N1 [/ ou ', ou ~, ou *, ou etc...], " - " et ""), ainsi que le nombre de Feuilles "ACTION" (d'où mon code pour lister les onglets).

Je vais tester le code de Dranreb pour le côté VBA.
Dranreb puvez-vous me dire ou y mettre les codes?
J'ai mis le code sur chaque feuille "AXCTION 4x", et de D4 à H4, coller la formule matricielle {} de =Découp(INDIRECT("'"&C4&"'!$A$4")), mais ne marche pas.
Mais R@chid, ton aide est précieuse, c'est exactement ça que je veux obtenir.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…