Macro à améliorer selon mon probléme

rabatcool

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

  • Test.xlsm
    22.4 KB · Affichages: 39
  • Test.xlsm
    22.4 KB · Affichages: 41
  • Test.xlsm
    22.4 KB · Affichages: 38

Tirou

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

  • Copie de Test.xlsm
    21.8 KB · Affichages: 30
  • Copie de Test.xlsm
    21.8 KB · Affichages: 36
  • Copie de Test.xlsm
    21.8 KB · Affichages: 32

Tirou

XLDnaute Occasionnel
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:

rabatcool

XLDnaute Nouveau
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.
 

rabatcool

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

Tirou

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

  • Copie de Test.xlsm
    23.9 KB · Affichages: 37
  • Copie de Test.xlsm
    23.9 KB · Affichages: 36
  • Copie de Test.xlsm
    23.9 KB · Affichages: 38

Discussions similaires

Statistiques des forums

Discussions
312 499
Messages
2 088 999
Membres
104 001
dernier inscrit
dessinbecm