XL 2016 [RESOLU] Macro changement de nom fichier

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

roybaf

XLDnaute Occasionnel
Bonjour le forum,

Je dois visualiser une feuille portant le même nom que celle active, elle se trouve dans un dossier parent.

ma feuille s'appelle "test" dans le dossier "2016" et dans le dossier "2015".

Pour pouvoir visualisé les deux feuilles en même temps j'ai créé une macro qui retrouve le fichier dans le dossier N-1, qui le renomme temporairement en temp.xlsm, qui me génère un pdf, et que je charge ensuite dans un Userform.
A la fermeture de l'userform le fichier "temp" reprend son nom d'origine et le pdf créé est supprimé.

Tout fonctionne, néanmoins je me retrouve face à une difficulté liée à l'extension!!

En effet, si dans mon dossier 2015 la feuille se nomme "temp.xls" dans mon dossier 2016 la feuille peut être nommée "temp.xlsx" et la je bloque car pour retrouver ma feuille je pars de mon ActiveWorbook.name...

je joint le code :

Code:
Dim AncienNom As String, NouveauNom As String
Dim AncienNom2 As String, NouveauNom2 As String

c = ThisWorkbook.Path
cc = Mid(ThisWorkbook.Path, 1, InStrRev(ThisWorkbook.Path, "\") - 1)
ccc = Mid(cc, 1, InStrRev(cc, "\") - 1)
pos1 = Len(c) - Len(cc)
pos2 = Len(cc) - Len(ccc)
dossier = Mid(cc, 1, InStrRev(cc, "\") - 1)
dossier2 = Mid(dossier, 1, InStrRev(dossier, "\") - 1)
Dim chem As String, pos&
chem = ActiveWorkbook.Name
cccc = Right(cc, pos2 - 1)
ccccc = Right(c, pos1 - 1)
pos3 = InStr(chem, ".")
PDF = Left(chem, pos3 - 1)
Cheminsource = dossier2 & "\" & "2015" & "\" & cccc & "\" & ccccc & "\" & ActiveWorkbook.Name
Fichier_Destination = dossier2 & "\" & "2015" & "\" & cccc & "\" & ccccc & "\" & PDF & ".pdf"

    AncienNom = Cheminsource
    NouveauNom = dossier2 & "\" & "2015" & "\" & cccc & "\" & ccccc & "\" & "temp.xlsm"

    'Vérifie si le fichier à renommer existe.
    If Dir(AncienNom) = "" Then Exit Sub
    'Renomme le fichier
    Name AncienNom As NouveauNom


Workbooks.Open NouveauNom ' ouverture du fichier
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier_Destination, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False        ' sauvegarde du fichier au format pdf
ActiveWorkbook.Close (False) ' fermeture du fichier

    AncienNom2 = dossier2 & "\" & "2015" & "\" & cccc & "\" & ccccc & "\" & "temp.xlsm"
    NouveauNom2 = Cheminsource

    'Vérifie si le fichier à renommer existe.
    If Dir(AncienNom2) = "" Then Exit Sub
    'Renomme le fichier
    Name AncienNom2 As NouveauNom2

Ce que j'aimerais c'est pouvoir retrouver et renommer le fichier sans tenir compte de l’extension.
 
Dernière édition:
Dranreb, ce n'est pas la première fois que tu me dépanne, merci !
Néanmoins je n'arrive pas a adapter dans mon code, il manque une parenthèse visiblement...

J'ai essayé :

Code:
Cheminsource = Dir((dossier2 & "\" & "2015" & "\" & cccc & "\" & ccccc & "\" & Split(ThisWorkbook.Name, "."), 0) & (".*")

Mais j'ai une erreur, mon code n'est pas très lisible mais me permet dans un code plus long de retrouver le nom du dossier de l'année et d'y soustraire 1 pour pouvoir ciblé mon dossier N-1.

Je trouve ensuite le fichier du même nom et le renomme, mais lorsque l'extension n'est pas la même alors impossible de le trouver pour le renommer
 
Au temps pour moi.
Utilisez Dir(Chemin & Split(ThisWorkbook.Name, ".")(0) & ".*")

Ça ne change rien au fait que TChm$() = Split(ThisWorkbook.FullName, "\") serait plus facile à exploiter.
Avec à la fin Chemin = Join(TChm, "\") après en avoir changé certains postes.
…TChm(Ubound(TChm)) étant le nom du classeur.
 
Dernière édition:
- 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
746
Retour