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 !
Tous les jours je reçois un fichier "résultats.xls", je souhaite automatiser son enregistrement sous "bilan.xls" et qu'à chaque fois il remplace l'ancien fichier.
Private Sub Workbook_Open()
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\????\????\?????\Bilan.xls", _
FileFormat:=xlNormal, ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
Je reçois tous les jours le fichier "résultats.xls" que j'enregistre manuellement sous "bilan.xls" et ensuite je supprime "résultats.xls". Il me faut dont un bouton pour commander cette macro, mais comment faire puisque tous les jours le fichier "résultats.xls" est nouveau ?
Tant pis, je suis surpris qu'il n'y ait pas de solution, pour moi il devait être possible (compte tenu des connaissances sur ce site) de créer en permanence sur la barre d'outils excel un bouton permettant l'enregistrement sous "bilan.xls" en le remplaçant ainsi à chaque fois.
Bonsoir mcj1997, Roland_M, BERRACHED said, le Forum,
mcj1997, tu trouveras ci-joint une macro complémentaire à installer et qui devrait répondre à ta demande.
Tu disposeras ainsi d'un nouveau bouton dans la barre d'outils standard d'Excel intiutlé "Sauve Bilan".
Ce bouton est rattaché à la macro suivante :
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]
[COLOR=NAVY]Private Sub[/COLOR] SauvAuto()
[COLOR=GREEN]'myDearFriend! - www.mdf-xlpages.com[/COLOR]
[COLOR=GREEN]'Sauvegarde auto du bilan.xls[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Wbk [COLOR=NAVY]As[/COLOR] Workbook
[COLOR=NAVY]Const[/COLOR] FichierCible [COLOR=NAVY]As String[/COLOR] = "bilan.xls"
[COLOR=NAVY]Const[/COLOR] FichierSource [COLOR=NAVY]As String[/COLOR] = "résultats.xls"
[COLOR=NAVY]Const[/COLOR] Chemin [COLOR=NAVY]As String[/COLOR] = "C:\Temp\" [COLOR=GREEN]'Chemin de sauvegarde à adapter...[/COLOR]
[COLOR=NAVY]On Error Resume Next
Set[/COLOR] Wbk = Workbooks(FichierSource)
[COLOR=NAVY]If Not[/COLOR] Wbk [COLOR=NAVY]Is Nothing Then[/COLOR]
[COLOR=GREEN]'On supprime l'ancienne archive .back[/COLOR]
Kill Chemin & Replace(FichierCible, ".xls", ".back")
[COLOR=GREEN]'On archive l'ancien fichier bilan.xls en bilan.back[/COLOR]
Name Chemin & FichierCible [COLOR=NAVY]As[/COLOR] Chemin & Replace(FichierCible, ".xls", ".back")
[COLOR=GREEN]'On sauvegarde le nouveau fichier bilan.xls[/COLOR]
Wbk.SaveAs Chemin & FichierCible
[COLOR=GREEN]'... et on le ferme[/COLOR]
Wbk.[COLOR=NAVY]Close
Else[/COLOR]
MsgBox "Sauvegarde impossible !" & vbLf & "Le fichier " & FichierSource & _
" doit d'abord être ouvert !", vbOKOnly, "www.mdf-xlpages.com"
[COLOR=NAVY]End If
End Sub[/COLOR]
Par sécurité, la dernière version du fichier bilan.xls est d'abord renommée en bilan.back, avant de sauvegarder le fichier résultats.xls en bilan.xls.
Après installation de la macro complémentaire et avant toute utilisation, il t'appartient d'adapter la ligne de code suivante dans l'éditeur VBA :
Code:
[COLOR=GRAY][B][I]DANS LE MODULE1 ET DANS LA PROCÉDURE SAUVAUTO()[/I][/B][/COLOR]
[COLOR=NAVY]Const[/COLOR] Chemin [COLOR=NAVY]As String[/COLOR] = "C:\Temp\" [COLOR=GREEN]'Chemin de sauvegarde à adapter...[/COLOR]
Indique le chemin exact de sauvegarde du fichier bilan.xls et clique immédiatement sur le bouton Enregistrer de l'éditeur VBA.
Bonsoir mcj1997, Roland_M, BERRACHED said, le Forum,
mcj1997, tu trouveras ci-joint une macro complémentaire à installer et qui devrait répondre à ta demande.
Tu disposeras ainsi d'un nouveau bouton dans la barre d'outils standard d'Excel intiutlé "Sauve Bilan".
Ce bouton est rattaché à la macro suivante :
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]
[COLOR=NAVY]Private Sub[/COLOR] SauvAuto()
[COLOR=GREEN]'myDearFriend! - www.mdf-xlpages.com[/COLOR]
[COLOR=GREEN]'Sauvegarde auto du bilan.xls[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Wbk [COLOR=NAVY]As[/COLOR] Workbook
[COLOR=NAVY]Const[/COLOR] FichierCible [COLOR=NAVY]As String[/COLOR] = "bilan.xls"
[COLOR=NAVY]Const[/COLOR] FichierSource [COLOR=NAVY]As String[/COLOR] = "résultats.xls"
[COLOR=NAVY]Const[/COLOR] Chemin [COLOR=NAVY]As String[/COLOR] = "C:\Temp\" [COLOR=GREEN]'Chemin de sauvegarde à adapter...[/COLOR]
[COLOR=NAVY]On Error Resume Next
Set[/COLOR] Wbk = Workbooks(FichierSource)
[COLOR=NAVY]If Not[/COLOR] Wbk [COLOR=NAVY]Is Nothing Then[/COLOR]
[COLOR=GREEN]'On supprime l'ancienne archive .back[/COLOR]
Kill Chemin & Replace(FichierCible, ".xls", ".back")
[COLOR=GREEN]'On archive l'ancien fichier bilan.xls en bilan.back[/COLOR]
Name Chemin & FichierCible [COLOR=NAVY]As[/COLOR] Chemin & Replace(FichierCible, ".xls", ".back")
[COLOR=GREEN]'On sauvegarde le nouveau fichier bilan.xls[/COLOR]
Wbk.SaveAs Chemin & FichierCible
[COLOR=GREEN]'... et on le ferme[/COLOR]
Wbk.[COLOR=NAVY]Close
Else[/COLOR]
MsgBox "Sauvegarde impossible !" & vbLf & "Le fichier " & FichierSource & _
" doit d'abord être ouvert !", vbOKOnly, "www.mdf-xlpages.com"
[COLOR=NAVY]End If
End Sub[/COLOR]
Par sécurité, la dernière version du fichier bilan.xls est d'abord renommée en bilan.back, avant de sauvegarder le fichier résultats.xls en bilan.xls.
Après installation de la macro complémentaire et avant toute utilisation, il t'appartient d'adapter la ligne de code suivante dans l'éditeur VBA :
Code:
[COLOR=GRAY][B][I]DANS LE MODULE1 ET DANS LA PROCÉDURE SAUVAUTO()[/I][/B][/COLOR]
[COLOR=NAVY]Const[/COLOR] Chemin [COLOR=NAVY]As String[/COLOR] = "C:\Temp\" [COLOR=GREEN]'Chemin de sauvegarde à adapter...[/COLOR]
Indique le chemin exact de sauvegarde du fichier bilan.xls et clique immédiatement sur le bouton Enregistrer de l'éditeur VBA.
Tout d'abord merci pour cette aide et ce travail, toutefois en voulant mettre tout cela en place, je me rends compte de quelque chose d'important que je n'ai pas dit. En effet le fichier que je reçois régulièrement change de nom à chaque envoi en effet par exemple celui d'aujourd'hui c'était "Résultats au 27 Août.xls" demain ce sera "Résultats au 28 Août.xls" etc ....
Alors dans le module, à cette ligne que dois-je mettre : Const FichierSource As String = "résultats.xls" ?
Bonsoir mcj1997, Roland_M, BERRACHED said, le Forum,
Arf, je te confirme que ce que tu n'as pas dit était pourtant d'importance... 🙄
Vouloir un automatisme c'est bien, mais il te faudrait d'abord faire un travail de logique avant d'exposer ta requête... A ma connaissance, il n'y a pas de magicien, ni de médium parmi nous.
Ci-joint une nouvelle version de la macro complémentaire. Le chemin est toujours à adapter. Aucune modification à faire pour le nom du fichier source, les fichiers ouverts et dont le nom commence par "Résultats" ou "résultats" te seront automatiquement proposés à l'utilisation et il te faudra confirmer la sauvegarde cette fois. A noter que cette étape supplémentaire remet légèrement en cause l'automatisme recherché...encore une étape supplémentaire et cette macro ne servira plus à rien, tu auras meilleur temps de continuer la sauvegarde manuellement...
J'ai modifié la procédure comme suit et ajouté une fonction personnalisée pour la détection du bon fichier :
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]
[COLOR=NAVY]Option Explicit[/COLOR]
[COLOR=NAVY]Private Sub[/COLOR] SauvAuto()
[COLOR=GREEN]'myDearFriend! - www.mdf-xlpages.com[/COLOR]
[COLOR=GREEN]'Sauvegarde auto du bilan.xls[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Wbk [COLOR=NAVY]As[/COLOR] Workbook
[COLOR=NAVY]Dim[/COLOR] FichierSource [COLOR=NAVY]As String
Const[/COLOR] FichierCible [COLOR=NAVY]As String[/COLOR] = "bilan.xls"
[COLOR=NAVY]Const[/COLOR] Chemin [COLOR=NAVY]As String[/COLOR] = "C:\Temp\" [COLOR=GREEN]'Chemin de sauvegarde à adapter...[/COLOR]
FichierSource = FichSource(FichierCible)
[COLOR=NAVY]If[/COLOR] FichierSource <> "" [COLOR=NAVY]Then
Set[/COLOR] Wbk = Workbooks(FichierSource)
[COLOR=NAVY]On Error Resume Next[/COLOR]
[COLOR=GREEN]'On supprime l'ancienne archive .back[/COLOR]
Kill Chemin & Replace(FichierCible, ".xls", ".back")
[COLOR=GREEN]'On archive l'ancien fichier bilan.xls en bilan.back[/COLOR]
Name Chemin & FichierCible [COLOR=NAVY]As[/COLOR] Chemin & Replace(FichierCible, ".xls", ".back")
[COLOR=GREEN]'On sauvegarde le nouveau fichier bilan.xls[/COLOR]
Wbk.SaveAs Chemin & FichierCible
[COLOR=GREEN]'... et on le ferme[/COLOR]
Wbk.[COLOR=NAVY]Close
Else[/COLOR]
MsgBox "Sauvegarde impossible !" & vbLf & "Le fichier de résultats non trouvé !", _
vbOKOnly, "www.mdf-xlpages.com"
[COLOR=NAVY]End If
End Sub[/COLOR]
[COLOR=NAVY]Private Function[/COLOR] FichSource(FichierCible [COLOR=NAVY]As String[/COLOR]) [COLOR=NAVY]As String
Dim[/COLOR] Wbk [COLOR=NAVY]As[/COLOR] Workbook
[COLOR=NAVY]For Each[/COLOR] Wbk [COLOR=NAVY]In[/COLOR] Workbooks
[COLOR=NAVY]If[/COLOR] LCase(Wbk.Name) [COLOR=NAVY]Like[/COLOR] "résultats*" [COLOR=NAVY]Then
If[/COLOR] MsgBox("Voulez-vous archiver le fichier '" & Wbk.Name & "' en " & FichierCible & " ?", vbYesNo, "www.mdf-xlpages.com") = vbYes Then
FichSource = Wbk.Name
[COLOR=NAVY]Exit For
End If
End If
Next[/COLOR] Wbk
[COLOR=NAVY]End Function[/COLOR]
- 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