Code pour intervertir chaine de caractère sur critère
Bonjour à tous,
Je souhaiterais savoir si vous connaissiez une expression permettant de classer, dans une cellule, des chaines de caractères alphanumériques séparées par des ";" ?
Dans mon exemple, j'ai 3 colonnes qui contiennent des cellules aux expressions "2 lettres + suite de chiffre" séparés par des ";" et j'aimerais avec une macro pour réorganiser l'ordre d'apparition des expressions :
- Commencer la cellule par les chaines démarrant par EPxxxxxx, puis par WOxxxxxx, puis par FRxxxxxxx puis par JPxxxxx, et enfin le reste en bataille.
Merci par avance si vous avez une solution,
Bien Cdt,
F.
Je souhaiterais savoir si vous connaissiez une expression permettant de classer, dans une cellule, des chaines de caractères alphanumériques séparées par des ";" ?
Dans mon exemple, j'ai 3 colonnes qui contiennent des cellules aux expressions "2 lettres + suite de chiffre" séparés par des ";" et j'aimerais avec une macro pour réorganiser l'ordre d'apparition des expressions :
- Commencer la cellule par les chaines démarrant par EPxxxxxx, puis par WOxxxxxx, puis par FRxxxxxxx puis par JPxxxxx, et enfin le reste en bataille.
Merci par avance si vous avez une solution,
Bien Cdt,
F.
-
- test.xlsx
- (9.68 Kio) Téléchargé 33 fois
Bonjour,
Merci pour votre réponse rapide;
C'est la première fois que je suis amené à devoir créer une fonction et je reste un peu perdu sur comment construire et syntaxiser mes modules.
A quel moment dois-je faire intervenir "=sortstring(s)" ?
Dois-je placer la Function dans un module2 ou dans le module1 de départ ?
Cette fonction s'appliquera-t-elle a toute la feuille active ?
Merci par avance,
Bien cdt,
F.
Merci pour votre réponse rapide;
C'est la première fois que je suis amené à devoir créer une fonction et je reste un peu perdu sur comment construire et syntaxiser mes modules.
A quel moment dois-je faire intervenir "=sortstring(s)" ?
Dois-je placer la Function dans un module2 ou dans le module1 de départ ?
Cette fonction s'appliquera-t-elle a toute la feuille active ?
Merci par avance,
Bien cdt,
F.
- h2so4
- Passionné d'Excel
- Messages : 8'695
- Appréciations reçues : 312
- Inscrit le : 16 juin 2013
- Version d'Excel : 365 UK Windows 10
sortstring devient une nouvelle fonction disponible pour la feuille de calcul excel au même titre que somme(....) etc.Pwetzou a écrit :Bonjour,
Merci pour votre réponse rapide;
C'est la première fois que je suis amené à devoir créer une fonction et je reste un peu perdu sur comment construire et syntaxiser mes modules.
A quel moment dois-je faire intervenir "=sortstring(s)" ?
si la chaine à trier se trouve en A1
et si tu veux le résultat en B1
en B1 tu mets
peut-être placée indifféremment dans l'une ou l'autre voire dans encore dans un autre module
Dois-je placer la Function dans un module2 ou dans le module1 de départ ?
cette fonction est disponible pour tout le classeurCette fonction s'appliquera-t-elle a toute la feuille active ?
D'accord.
Je vais étudier cela.
Merci par avance.
En attendant, j'avais une autre interrogation, je travaille actuellement sur une macro qui me permettrait de faire une fonction =GAUCHE.
J'aimerais que la plage à "Gaucher" s'étende de "A1 jusqu'à la dernière ligne non-vide et jusqu'à la dernière colonne non-vide", ou bien garder le choix de "Gaucher" que la colonne 1 et/ou la 3...
(Dans mon exemple, pour ne garder que le premier numéro WOxxxxxx jusqu'au ";").
Votre fonction peut-elle être adaptée pour aboutir à ceci ?
Merci par avance encore..
F.
Je vais étudier cela.
Merci par avance.
En attendant, j'avais une autre interrogation, je travaille actuellement sur une macro qui me permettrait de faire une fonction =GAUCHE.
J'aimerais que la plage à "Gaucher" s'étende de "A1 jusqu'à la dernière ligne non-vide et jusqu'à la dernière colonne non-vide", ou bien garder le choix de "Gaucher" que la colonne 1 et/ou la 3...
(Dans mon exemple, pour ne garder que le premier numéro WOxxxxxx jusqu'au ";").
Votre fonction peut-elle être adaptée pour aboutir à ceci ?
Merci par avance encore..
F.
- h2so4
- Passionné d'Excel
- Messages : 8'695
- Appréciations reçues : 312
- Inscrit le : 16 juin 2013
- Version d'Excel : 365 UK Windows 10
Bonjour,
peux-tu reformuler ? je n'ai pas compris. le mieux est de mettre un fichier exemple avec la situation de départ, le résultat à atteindre et les règles pour passer de la situation de départ au résultat.
peux-tu reformuler ? je n'ai pas compris. le mieux est de mettre un fichier exemple avec la situation de départ, le résultat à atteindre et les règles pour passer de la situation de départ au résultat.
- Marc L
- Membre dévoué
- Messages : 821
- Appréciation reçue : 1
- Inscrit le : 27 janvier 2015
- Version d'Excel : 2003 / 2007
Bonjour.
Pwetzou a écrit :J'aimerais que la plage à "Gaucher" s'étende de "A1 jusqu'à la dernière ligne non-vide et jusqu'à la dernière colonne non-vide"
Utiliser la propriété CurrentRegion …
Je suis Charlie - Je suis Bardo
- h2so4
- Passionné d'Excel
- Messages : 8'695
- Appréciations reçues : 312
- Inscrit le : 16 juin 2013
- Version d'Excel : 365 UK Windows 10
Re-bonjour,
voici une macro, à copier dans un module. changer le nom des colonnes éventuellement.
puis sélectionner la feuille sur laquelle la macro doit s'appliquer et lancer la macro par alt-F8.
attention les données sont remplacées par le résultat. (bien prendre des copies avant d'exécuter la macro)
voici une macro, à copier dans un module. changer le nom des colonnes éventuellement.
puis sélectionner la feuille sur laquelle la macro doit s'appliquer et lancer la macro par alt-F8.
attention les données sont remplacées par le résultat. (bien prendre des copies avant d'exécuter la macro)
Sub selectfirst()
For Each col In Array("A", "B", "C") '<- remplacer ici les noms de colonnes sur lesquelles appliquer la macro
i = 1
While Cells(i, col) <> ""
Cells(i, 1) = sortstringselfirst(Cells(i, col))
i = i + 1
Wend
Next
End Sub
Function sortstringselfirst(st)
Dim a
s = st
s = Replace(s, "EP", "01EP")
s = Replace(s, "WO", "02WO")
s = Replace(s, "FR", "03FR")
s = Replace(s, "US", "04US")
s = Replace(s, "JP", "05JP")
a = Split(s, ";")
For i = LBound(a) To UBound(a) - 1
For j = i + 1 To UBound(a)
If a(i) > a(j) Then b = a(i): a(i) = a(j): a(j) = b
Next j
Next i
s = a(LBound(a))
s = Replace(s, "01EP", "EP")
s = Replace(s, "02WO", "WO")
s = Replace(s, "03FR", "FR")
s = Replace(s, "04US", "US")
s = Replace(s, "05JP", "JP")
sortstringselfirst = s
End Function
h2so4,
Merci pour ta fonction, elle fonctionne parfaitement... rien à redire.
Je dois encore simuler et tester tout ça sur plusieurs centaines de lignes mais je pense qu'il n'y a pas de problème.
La possibilité de pouvoir choisir la colonne ciblée, c'est vraiment super...
Pourrais-tu me mettre en commentaire ' le détail de ce que chaque ligne de code de la fonction sortstringselfirst(st) signifie ?
Cela me semble assez complexe mais je suis très intéressé pour comprendre comment tu t'y es pris ...
Merci par avance.
Marc L,
Merci pour votre suggestion de propriété; je suis allé lire un tuto dessus et effectivement elle m'a l'air très utile... plutôt que de passer par des End.x1up/x1down/x1ToLeft...
Merci pour ta fonction, elle fonctionne parfaitement... rien à redire.
Je dois encore simuler et tester tout ça sur plusieurs centaines de lignes mais je pense qu'il n'y a pas de problème.
La possibilité de pouvoir choisir la colonne ciblée, c'est vraiment super...
Pourrais-tu me mettre en commentaire ' le détail de ce que chaque ligne de code de la fonction sortstringselfirst(st) signifie ?
Cela me semble assez complexe mais je suis très intéressé pour comprendre comment tu t'y es pris ...
Merci par avance.
Marc L,
Merci pour votre suggestion de propriété; je suis allé lire un tuto dessus et effectivement elle m'a l'air très utile... plutôt que de passer par des End.x1up/x1down/x1ToLeft...
-
- Sujets similaires
- Réponses
- Vues
- Dernier message
-
- 9 Réponses
- 435 Vues
-
Dernier message par desmidt
22 mai 2014, 14:29
-
-
Mettre en gras une sous-chaine de caractere dans une chaine de caractère
par ODB_VBA » 17 juin 2019, 15:24 » dans Excel - VBA - 13 Réponses
- 1099 Vues
-
Dernier message par MaPoire
6 juillet 2019, 09:26
-
-
-
Chercher une chaîne de caractère dans une liste de chaîne de caractère
par Nazim31 » 14 novembre 2019, 10:27 » dans Excel - VBA - 17 Réponses
- 110 Vues
-
Dernier message par Nazim31
20 novembre 2019, 15:25
-
-
-
vba ajout chaine de caractère dans une chaine de caratere
par mizax » 7 septembre 2015, 03:30 » dans Excel - VBA - 1 Réponses
- 712 Vues
-
Dernier message par MFerrand
7 septembre 2015, 03:59
-
-
-
Ajouter un code au début d'une chaine ou un mot de la chaine
par florence.amaddine » 5 avril 2016, 23:36 » dans Excel - VBA - 4 Réponses
- 359 Vues
-
Dernier message par florence.amaddine
6 avril 2016, 07:08
-
-
- 3 Réponses
- 181 Vues
-
Dernier message par doudou1960
6 avril 2018, 21:27