XL 2016 [RESOLU] Macro changement de nom fichier

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:

roybaf

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

Dranreb

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

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo