XL 2016 Macro pour renommer un fichier, un onglet et ...

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

luke3300

XLDnaute Impliqué
Bonjour le forum,

J'essaye de créer une macro qui me permettrait de trouver un fichier (avec les 4 derniers caractères du nom qui sont toujours aléatoires) dans un dossier de travail, de le renommer, de renommer et copier un de ses onglets (le 1er) dans un autre fichier déjà ouvert et au départ duquel je travaillerais.
J'ai fais un dossier avec les classeurs nécessaires pour l'exemple.
En clair, du classeur "Visites.xlsm", je clic sur un bouton qui cherche dans le dossier courant, le classeur nommé "AC25_CARS_2108.xlsx" (et dont les 4 derniers caractères sont à chaque fois différents), le renomme en "AC25_CARS.xlsx", l'ouvre et renomme la feuille "AC25_CARS_2108" (dont les 4 derniers caractères sont aussi à chaque fois différents) en "AC25_CARS" et copie cette feuille dans le classeur ouvert avant l'onglet "TAFF". Le tout évidement comme si de rien n'était 😉
Je viens de tester diverses solutions trouvées sur le forum mais sans résultats ...
Merci à tous pour votre aide et agréable journée.
 

Pièces jointes

Bonjour Stephane, le Forum 🙂

Si tu as 10 classeurs nommés AC25_CARS_xxxx, tu ne peux renommer les fichiers qu'avec AC25_CARS, car tu aura un message d'erreur vu que le 1er AC25_CARS existe déjà.
 
Dernière édition:
Bonjour Lone-wolf,

Le travail se fait toujours avec 1 classeur AC_CARS_XXXX à la fois, maintenant je suis obligé de faire la manipulation à chaque utilisation. J'aimerais que ce soit automatisé 🙂
Aujourd'hui j'ai peut-être celui qui se termine par 2108 mais demain ce sera 9997 ou 1112, etc ...
 
@Lone-wolf, ce sont des fichiers à usage unique.
Les résultats sont écrasés une fois le travail fait. En fait je retire les infos qu'il me faut puis c'est fini et je passe à un autre. Il n'y a jamais qu'un fichier à la fois la seule différence c'est qu'ils ont chacun un code différent à la fin.
 
Dernière édition:
Re

@luke3300

Là j'ai du mal à saisir. Tu as le fichier 9999 par exemple, ensuite le fichier 1111. Une fois les données copiées, tu le supprime? Puis-ce que tu dit n'avoir qu'un seul fichier à la fois. Si c'est le cas, à quoi ça sert de le renommé?? 🙄

Sinon: un essai comme ceci. En cellule Z1, il y a un numéro qui s'incrémente à chaque nouvelle feuille créée.
 

Pièces jointes

Dernière édition:
Re,
Le fait qu'on le renomme est qu'une fois que l'onglet est copié dans le classeur, d'autres macros interviennent sur l'onglet nommé comme tel.
Donc oui j'ai un fichier à la fois et il doit être absolument nommé comme j'ai décris.🙂
Je viens de tester ton fichier mais est-il possible de ne pas passer par un autre dossier que le courant?
Donc que la macro cherche le fichier dans le dossier courant. L'incrémentation ne m'est pas utile ici ... est-il possible de ne pas l'inclure?

Merci beaucoup pour ton aide 😉
 
Bonsoir le fil, le forum

Si j'ai compris ce que doit faire la macro
VB:
Sub Test()
Dim ws As Worksheet, wb As Workbook, fichier As Variant
Set ws = ActiveSheet
fichier = Application.GetOpenFilename("Fichier Excel (*.xls?),*.xls?", , "Choisissez le classeur")
If fichier = False Then Exit Sub
Application.ScreenUpdating = False: Application.DisplayAlerts = False
Set wb = Workbooks.Open(Filename:=fichier)
wb.Sheets("AC25_CARS_2108").Copy After:=Workbooks("Visites.xlsm").Sheets(1)
Xfz = Sheets("AC25_CARS_2108").Name
Sheets("AC25_CARS_2108").Name = Mid(Xfz, 1, Len(Xfz) - 5)
wb.Close False
End Sub

EDITION1: Bonsoir job75
EDITION2: Bonsoir Lone-Wolf
 
Dernière édition:
Bonjour luke3300, Lone-wolf, JM,

Le code du bouton :
Code:
Private Sub CommandButton1_Click()
Dim chemin$, ext$, fichier$, fich$, nomfeuille$
chemin = ThisWorkbook.Path & "\"
ext = ".xlsx" 'extension, modifiable
fichier = "AC25_CARS" & ext
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Workbooks(fichier).Close False 'si le fichier est ouvert on le ferme
Kill chemin & fichier 'et on le supprime"
fich = Dir(chemin & Replace(fichier, ext, "_????" & ext)) '1er fichier trouvé
Name chemin & fich As chemin & fichier 'renomme le fichier
With Workbooks.Open(chemin & fichier) 'l'ouvre
    nomfeuille = Replace(fichier, ext, "")
    .Sheets(Replace(fich, ext, "")).Name = nomfeuille 'renomme la feuille
    ThisWorkbook.Sheets(nomfeuille).Delete 'supprime la feuille si elle existe
    .Sheets(nomfeuille).Copy Before:=ThisWorkbook.Sheets("TAFF") 'copie la feuille
    .Close True 'enregistre le fichier et le ferme
End With
Sheets("TAFF").Activate
End Sub
Fichiers zippés joints.

A+
 

Pièces jointes

Bonjour le forum, Lone-wolf, Staple1600, Job75,
Un énorme merci pour votre aide.
Je vais tester tout cela aujourd'hui et vous tiens au courant ...
J'ai une petite question concernant excel 2016 (office 365) ... depuis quelques temps, il est très lent pour exécuter les macros et ce sur n'importe lequel de mes PC, quelqu'un saurait-il pourquoi?
Je vous souhaite une agréable journée ensoleillée 🙂🙂🙂
 
- 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

Discussions similaires

Réponses
2
Affichages
243
Réponses
5
Affichages
217
Réponses
5
Affichages
314
Retour