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

Macro à améliorer selon mon probléme

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

R

rabatcool

Guest
Bonjour à tous,

Voilà, ça fait quelques heures que je cherche à modifier cette macro qui fonctionne parfaitement et que j’avais récupérée de ce beau forum mais je n'y arrive pas 🙁

Je vous laisse consulter le fichier ci joint, mon problème est donc au lieu d’utiliser les mots de la colonne D, il faut récupérer que les 3 premiers caractères et faire la même chose.

Dans mon exemple, la macro doit regrouper les deux feuilles « ABC-85412» et « ABC-123456» dans la feuille « ABC ».
 

Pièces jointes

Re : Macro à améliorer selon mon probléme

Bonjour Rabatcool,

Pour récupérer les 3 premiers caractères d'une chaine, c'est assez simple avec la fonction LEFT(chaine,longueur à garder)

Dans ton cas, il faut remplacer les
Code:
Sheets(1).Cells(i, 4)
par
Code:
Left(Sheets(1).Cells(i, 4), 3)

Ci-joint ton fichier modifié.

Après, est-tu certain qu'il s'agisse des 3 premiers caractères et pas plutôt des caractères avant le "-" ?
 

Pièces jointes

Re : Macro à améliorer selon mon probléme

Bonjour et merci Tirou pour ce retour rapide.

Après, est-tu certain qu'il s'agisse des 3 premiers caractères et pas plutôt des caractères avant le "-" ?
Oui exactement, c'est aussi une solution, dans ce cas que dois je changé pour recuperer les caractères avant le "-"
 
Re : Macro à améliorer selon mon probléme

Bonjour Jean-Marcel,

Heureusement que tu passais par là, je partais dans une solution bien lourde avec les expressions régulière, trouver l'indice de caractère où couper, concaténer ce qui va bien ..... Je garde la Split en tête 🙂
 
Dernière édition:
Re : Macro à améliorer selon mon probléme

Bonjour et merci Jean-Marcel pour cette ligne magique 🙂

Dis stp, est ce que c'est possible de mettre deux conditions, cad si le 3 eme caracteres est "-" ne prendre que les deux premiers sinon ne pas pas prendre plus de 3 caracteres.

Sur mon fichier d'origine j'ai des references qui ne contiennet le "-" et je ne veux pas récupéré plus que les 3 premiers caracteres.
 
Re : Macro à améliorer selon mon probléme

Bonjour,

J'ai fais comme ci dessous et ca a marcher, merci pour ton aide.

'If Mid(Left(Sheets(1).Cells(i, 14), 3), 3, 1) = "-" Then
'cel = Left(Sheets(1).Cells(i, 14), 2)
'Else
'cel = Left(Sheets(1).Cells(i, 14), 3)
'End If
 
Re : Macro à améliorer selon mon probléme

Oula ! pour le coup, c'est compliqué avec des conditions 🙂

On prend TOUJOURS la première chaine tronquée à 3 caractères : un petit mix entre Left et split? 🙂

Code:
Left(Split(Sheets(1).Cells(i, 4), "-")(0), 3)

L'astuce tient au fait que si on demande un nombre de caractères supérieur au nombre de caractères de la chaine, c'est la chaine entière qui est renvoyée.

Fichier en pj
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
9 K
max808
M
J
Réponses
0
Affichages
1 K
julie13
J
D
Réponses
4
Affichages
1 K
diroz
D
B
Réponses
2
Affichages
2 K
bastienb
B
M
Réponses
13
Affichages
17 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…