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:

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35