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 !
J'ai un fichier Excel avec macros assez complet (beaucoup de modules, useforms etc...). Ce fichier est utilisé par des utilisateurs et pour cela quand il quitte le fichier je lui propose de sauvegarder une copie du travail qu'il a fait. (la copie du fichier se fait au format xlsx (sans macros) qui sert juste à re-visualiser le travail fait donc pas besoin de macros).
Le problème c'est qu'une fois la copie faite, le fichier initial se ferme mais il arrive parfois qu'il se réouvre tout seul...
J'ai remarqué que ça se fait que dans le cas où il y a des copies réalisées.. Dans le cas où l'utilisateur choisit de ne pas garder de copie pas de soucis: le fichier se ferme normalement et c'est tout.
Est-ce que quelqu'un sait d'où ça peut venir car je vois pas du tout... (ça le fait pas tout le temps en + donc je trouve ça bizar).
Ce fichier est utilisé par des utilisateurs et pour cela quand il quitte le fichier je lui propose de sauvegarder une copie du travail qu'il a fait. (la copie du fichier se fait au format xlsx (sans macros) qui sert juste à re-visualiser le travail fait donc pas besoin de macros).
Le problème c'est qu'une fois la copie faite, le fichier initial se ferme mais il arrive parfois qu'il se réouvre tout seul...
J'ai remarqué que ça se fait que dans le cas où il y a des copies réalisées.. Dans le cas où l'utilisateur choisit de ne pas garder de copie pas de soucis: le fichier se ferme normalement et c'est tout.
Bonsoir, Comment fais-tu la copie, par un 'Enregistrer sous...' ou un export des formats et valeurs dans un nouveau fichier ?
Si Enregistrer sous.., les macros restent dans la copie .xlsx et poseront un problème tout a fait normal à l'ouverture.
Si un lien avec la source est resté dans la copie, il est normal que l'original s'ouvre
Re : Ré-ouverture du fichier directement après sa fermeture
Bonjour Modeste geedee et Herdet. Merci pour vos réponses.
Alors pour répondre a Herdet voici comment je sauvegarde une copie au format xlsx:
Code:
Sauvegarde = MsgBox("Do you want to save a copy of analysis?", vbyesno) 'Copie de l'analyse
If Sauvegarde = vbYes Then
Call Save1 'macro de sauvegarde du fichier
End If
Procédure Save1:
Code:
Public Sub Save1() 'copie sauvegarde classeur
Dim nom1 As String
Dim nb As Integer
chemin_fichier_Excel = Workbooks(ActiveWorkbook.name).FullName
chemin_fichier_Excel = Workbooks(ActiveWorkbook.name).Path
nb = nbfich(chemin_fichier_Excel, "xlsx")
nb = nb + 1
Application.DisplayAlerts = False
nom1 = "Analysis (" & nb & ") of " & Day(Date) & "-" & Month(Date) & "-" & Year(Date)
ActiveWorkbook.SaveAs ActiveWorkbook.Path & "\" & nom1, FileFormat:=xlOpenXMLWorkbook
rep = MsgBox("Your database is saved in the same record as the original file, under the name : " & nom1, vbYes + vbInformation, "Copy of analysis")
Application.DisplayAlerts = True
End Sub
avec nbfich une fonction qui permet de compter le nombre de fichier dans un répertoire.
Donc ça correspondant à un "enregistrer sous"
Mais des fois le fichier de départ (avec les macros) se ré-ouvre alors que je l'ai juste fermé (apres enregistrement d'une copie) sans que je n'ouvre ce fichier de sauvegarde au format xlsx.
Concernant la réponse de Modeste geedee , qu'est-ce qu'une procédure On Time et comment la désactivée dans ce cas ?
Bonjour Modeste geedee et Herdet. Merci pour vos réponses.
Code:
Application.DisplayAlerts = False
nom1 = "Analysis (" & nb & ") of " & Day(Date) & "-" & Month(Date) & "-" & Year(Date)
ActiveWorkbook.SaveAs ActiveWorkbook.Path & "\" & nom1, FileFormat:=xlOpenXMLWorkbook
rep = MsgBox("Your database is saved in the same record as the original file, under the name : " & nom1, vbYes + vbInformation, "Copy of analysis")
Application.DisplayAlerts = True
End Sub
Bonsoir,
Je reste persuadé que la transformation directe par VBA de .xlsm à .xlsx n'est pas viable.
1) A quoi sert l'enregistrement en XML FileFormat:=xlOpenXMLWorkbook ?
2) tu devrais forcer le format .xlsx dans nom1
nom1 = "Analysis (" & nb & ") of " & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".xlsx"
3) lorsque ActiveWorkbook.SaveAs ActiveWorkbook.Path & "\" & nom1 est exécuté, le fichier actif devient un fichier Excel sans macro et donc il ne devrait plus avoir d'action VBA après cette ligne.
Le message rep = MsgBox(... devrait être modifié et affiché avant le SaveAs
Il y a une autre solution assez simple en s'inspirant de celle que j'ai proposé dans https://www.excel-downloads.com/thr...ier-excel-dans-un-autre-fichier-excel.214486/
qui serait :
1) - enregistrer le fichier avec un Backup
ThisWorkbook.SaveAs Filename:=ThisWorkbook.FullName, CreateBackup:=True
2) - ouvrir le Backup
3) - supprimer par VBA toutes les macros de ce fichier Backup
Code:
Sub Test_destruction()
'détruire tout le code d'un classeur
ThisWorkbook.Activate
Call Detruire_tout_VBA("RD-TEST enreg_a_vider.xlsm")
End Sub
Sub Detruire_tout_VBA(ByVal ClasseurSansMacro As String)
Dim VbComp, LesComposants
'détruire tout le code du classeur nommé
Set LesComposants = Workbooks(ClasseurSansMacro).VBProject.VBComponents
For Each VbComp In LesComposants
Select Case VbComp.Type
Case 1, 2, 3
LesComposants.Remove VbComp
Case 100
VbComp.CodeModule.DeleteLines 1, VbComp.CodeModule.CountOfLines
End Select
Next
End Sub
4) - enregistrer le backup nettoyé avec nom1 ci-dessus et le fermer
au passage il restera le fichier Backup très utile en cas de plantage
5) - envoyer le message Msgbox
Re : Ré-ouverture du fichier directement après sa fermeture
Bonsoir,
Voilà, richert90, c'est fait.
La procédure utilise le fichier backup pour créer le fichier UTILISATEUR sans macro.
Tu complèteras la destruction des objets liés au code VBA et tu verras s'il faut garder le fichier backup
- 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