Save selon cellule sans chemin d'accès ni duplication

Bonjour à tous les mirobolants spécialistes de ce super forum !

J'aimerais qu'un classeur Excel (2007) puisse se renommer «TOUT SEUL» comme un grand garçon via la valeur contenue dans une seule cellule et cela au moment du simple enregistrement du classeur et sans chemin d'accès. Le classeur serait toujours renommé dans son «répertoire actuel» qu'importe le chemin d'accès. En plus il ne devrait conserver aucune autre version renommée. Bref... il ne faudrait aucune duplication de ce classeur via tous les noms possibles et imaginables qu'il pourrait prendre au fil du temps. Est-ce que je demande la lune vous pensez ?

Cela permettrait d'avoir accès hyper rapidement à de précieux renseignements directement en consultant l'Explorateur sans devoir ouvrir une ribambelle de classeurs. Je vous serais éternellement reconnaissante !!!!

7paresse.xlsx (27.01 Ko)

Bonjour,

A tester :

181-9-4.xlsm (35.19 Ko)

La macro associée :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim WbName As String, ActivWBname As String 'Déclaration de variables

On Error GoTo Fin: 'Gestion d'erreur
ActivWBname = ThisWorkbook.Name
WbName = Sheets("citron").Range("E5") 'Affectation du nom contenu dans la cellule E5 de la feuille "citron"
ChDir ThisWorkbook.Path 'Changement du répertoire d'enregistrement
If Not ActivWBname = WbName & ".xlsm" Then 'Si le nom actuel est différent du nom souhaité
    ThisWorkbook.SaveAs Filename:=WbName, FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Enregistrement sous le nom souhaité
    Kill ThisWorkbook.Path & "\" & ActivWBname 'Suppression de l'ancien fichier
Else
    ThisWorkbook.Save 'Sinon enregistrement classique
End If

Exit Sub

Fin: 'Gestion d'erreur
MsgBox "Une erreur s'est produite, vérifiez le contenu de la cellule."
Cancel = True 'Annulation fermeture

End Sub

Note :

La macro se déclenche automatiquement à la fermeture du fichier, et contrôle si son nom est identique au contenu de ta cellule E5. Le cas inverse, elle enregistre un fichier à ce nom et supprime l'ancien.

) C'est vraiment trop super MERCI MERCI Pedro22 !!!! T'as pas idée comme ça me sera archi pratique !! Je suis vraiment très contente que tu aies pris la peine de m'aider si gentiment comme ça. J'espère que ça servira à d'autre !! Un gros bisou du Québec !!!

PS : si tu souhaites quitter sans enregistrer, il faut que je prévois une petite étape supplémentaire pour demander si tu souhaites enregistrer ou non avant de quitter. Par exemple en ajoutant :

Select Case MsgBox("Enregistrer ?", vbYesNoCancel)
    Case vbYes 'Oui : on exécute la macro
        'La Macro avec toutes les instructions
    Case vbNo 'Non, on quitte la macro et on ferme le fichier
        Exit Sub
    Case vbCancel 'Annuler, on quitte la macro et on annule la fermeture
        Cancel = True
        Exit Sub
End Select

Et de rien, tabarnak !

LOL !!! Et puis t'as vu l'heure ici ?? 4h26 du mat... mais je vais pas mal bien dormir là !! Encore merci.

Re-Coucou à Pedro22 !!

Tu te souviens cette semaine tu m'as «pondu» un super code pour que je puisse sauvegarder un classeur selon le nom d'une cellule et cela sans chemin d'accès ni duplication du classeur au fur et à mesure que le nom change. J'ai travaillé avec ton code dans un répertoire quelconque de mon Disque C et tout allait SUPER BIEN. J'étais donc aux anges... jusqu'à ce que je déménage mon répertoire sur le serveur !! Depuis rien ne va plus... J'ai un message d'erreur «Une erreur s'est produite vérifier le contenu de la cellule». Lorsque je sors du classeur bien sûr le code ne fonctionne pas et le nom du classeur reste inchangé. Mais ce n'est pas tout !!! Je me suis rendue compte que mon répertoire sur le serveur va se copier TOUT SEUL directement dans mon Disque C, et c'est là que je peux aller consulter le nom de mon dernier enregistrement... enregistrements qui s'accumulent les uns après les autres au fur et à mesure que le nom du classeur change. Bref... Rien ne va plus !!! Est-ce que t'aurais une théorie (du complot) à savoir qu'est-ce qui peut bien se passer ?? Le répertoire semble conserver une certaine mémoire du chemin d'accès.... Merci d'avance si tu peux m'aider sans trop de souffrances pour toi...

Salut,

Commence par voir ce que te dis Excel avec cette macro exécutée depuis ton répertoire réseau :

Sub AfficherChemin()
   MsgBox ThisWorkbook.Path
End Sub

Je pense que le soucis se situe ici, avec ChDir qui ne doit pas digérer le nouveau chemin. J'ai été voir la documentation sur cette fonction, si ça t'intéresse : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/chdir-statement

Sinon, pour mieux voir ce qui plante, il te suffit de désactiver la gestion d'erreur que j'ai faite en mettant un ' devant "On Error GoTo...". Ensuite, tu auras un message d'erreur VBA avec la ligne qui plante surlignée en jaune. Tu peux aussi faire une éxécution pas à pas avec F8 pour voir les valeurs prises par les variables de la macro.

Rechercher des sujets similaires à "save chemin acces duplication"