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

Renommer fichier XLS par Userform

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

bibbip35

XLDnaute Occasionnel
Bonjour à tous

Je viens vers vous car je souhtais par le biais d'un userform renomé deux fichier excel fermé je precise

Aujourd'hui, je 1 fichier excel mis en liaison avec 2 fichiers excel qui doivent être remomée toutes les semaine
car il change

Pour éclaircir;
Je recoie 1 fichier excel par email ( MAJ de qté produits ) : CPTPLANW23.......pour S23

Mon fichier est mis en liaison avec 2 fichier CPTPLAN et CPTPLAN-1

Je souhaiterais creer 1 userform ou je selectionnerai
CPTPLANW23 en CPTPLAN
CPLTPLAN en CPTPLAN-1

En prerecquis; il faut supprimer avant l'ancien fichier CPTPLAN-1
J'espere avoir été clair....


Pensez-vous que cela soit possible????

J'ai fouillé sur le forum; mais le seul code que j'ai trouvé
Sub renommerClasseur()
Dim Classeur As String, Chemin As String
Dim Fso As Object
Classeur = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
If Classeur = "Faux" Then Exit Sub
Set Fso = CreateObject("Scripting.fileSystemObject")
Chemin = Fso.getFile(Classeur).parentFolder
Name Classeur As Chemin & "\nouveauNom.xls"
End Sub

MERCI A TOUS
 
Re : Renommer fichier XLS par Userform

Bonsoir BipBip, bonsoir le forum,

En pièce jointe le fichier Base.xlsm avec une UserForm. Le fichier doit se trouver dans le même dossier que là où se trouvent tous les autres fichiers qui le concerne. Comme tu n'as pas précisé le chemin, j'ai pris celui du fichier Base.
Clique sur le bouton pour ouvrir l'Userform1. Sélectionne le fichier de la semaine dans la ComboBox1 et ensuite clique sur le bouton Renommer les fichiers. Un message de prévention apparaît, valide et les fichiers sont supprimés ou renommés selon le cas.

Je pense qu'on aurait pu faire la même chose sans Userform, juste un CommandButton dans l'onglet mais tes explications manquaient de précision pour que je te le propose...
Le code :

Code:
Option Explicit
Private SF As Object 'déclare la variable SF (Système de Fichiers)
Private D As Object 'déclare la variable D (Dossier)
Private FS As Object 'déclare la variable FS (FichierS)
Private F As Object 'déclare la variable F (Fichier)


Private Sub UserForm_Initialize() 'à l'initialisatiojn de l'UserForm
Set SF = CreateObject("Scripting.FileSystemObject") 'définit le Ssystème de fichier SF
Set D = SF.GetFolder(ThisWorkbook.Path) 'définit la dossier D
Set FS = D.Files 'définit l'ensenble des fichiers FS du dossier F
For Each F In FS 'Boucle sur tous les fichiers F de l'ensemble des fichiers FS
    'si les huit premiers caractères du nom du fichier sont "CPTPLANW", ajoute le nom du fichier à la ComboBox1
    If Left(F.Name, 8) = "CPTPLANW" Then Me.ComboBox1.AddItem F.Name
Next F 'prochain fichier de la boucle
End Sub


Private Sub CommandButton1_Click() 'bouton renommer les fichiers
If Me.ComboBox1.Value = "" Then 'condition : si la ComboBox1 est vide
    MsgBox "Vous devez sélectionner le fichier de la semaine !" 'message
    Me.ComboBox1.SetFocus 'place le curseur dans la ComboBox1
    Exit Sub 'sort de la procédure
End If 'fin de la condition
'si "Non" au message, sort de la procédure via l'étiquette "Fin"
If MsgBox("Le fichier [CPTPLAN-1.xls] va être supprimé." & Chr(13) & _
    "Le Fichier [CPTPLAN.xls] sera renommé en [CPTPLAN-1.xls]." & Chr(13) & _
    "Le fichier [" & Me.ComboBox1.Value & "] sera renommé en [CPTPLAN.xls] !" & Chr(13) & Chr(13) & _
    "Êtes-vous sûr(e) de vouloir continier ?", vbYesNo, "ATTENTION !") = vbNo Then GoTo Fin
For Each F In FS 'Boucle sur tous les fichiers F de l'ensemble des fichiers FS
    If F.Name = "CPTPLAN-1.xls" Then Kill F: Exit For 'supprime le fichier "CPTPLAN-1.xls", sort de la boucle
Next F 'prochain fichier de la boucle
For Each F In FS 'Boucle sur tous les fichiers F de l'ensemble des fichiers FS
    'si le nom du fichier est "CPTPLAN.xls", renomme le fichier en "CPTPLAN-1.xls", sort de la boucle
    If F.Name = "CPTPLAN.xls" Then F.Name = "CPTPLAN-1.xls": Exit For
Next F 'prochain fichier de la boucle
For Each F In FS 'Boucle sur tous les fichiers F de l'ensemble des fichiers FS
    'si le nom du fichier est le même que celui dans la ComboBox1, renomme le fichier en "CPTPLAN.xls", sort de la boucle
    If F.Name = Me.ComboBox1.Value Then F.Name = "CPTPLAN.xls": Exit For
Next F 'prochain fichier de la boucle
Fin: 'étiquette
Unload Me 'ferme l'UserForm1
End Sub
Le fichier :
 

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

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
450
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…