Macro à supprimer
Résolu
nicolas
-
tyranausor Messages postés 3545 Date d'inscription Statut Membre Dernière intervention -
tyranausor Messages postés 3545 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un fichier word sous forme de formulaire qui se remplit directement à partir des infos inscrites dans une base de données excel afin d'éviter les doubles saisies.
Ce fichier word intègre une macro qui permet de l'enregistrer sous un nom précis et sous un répertoire précis (avec les infos du formulaire).
Cependant mon soucis actuel est que la macro reste présente dans les fichiers word.
J'aurais aimé qu'elle soit supprimé après l'enregistrement car aujourd'hui j'ai plusieurs centaines de document word qui ont cette macro et ça devient fastidueux de l'effacer un à un.
Je vous colle la macro. Que faut il ajouter pour que la macro ne soit plus présente dans les fichiers enregistrés ?
Private Sub Document_Close() 'macro s'active en cliquant sur la croix de fermeture
'défini les variables
Dim nom As String
Dim répertoire As String
'défini le chemin du répertoire
répertoire = "\\Chemin$\CONTROLE\Bilan\Année " '!!! attention chemin d'accès à modifier si nécessaire"
On Error Resume Next
' vérifie l'existence du répertoire année, sinon le créé
ChDir répertoire & Year(Date) 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) 'création si inexistant
End If
' vérifie l'existence du répertoire Non conformité, sinon le créé
ChDir répertoire & Year(Date) & "\Non conformité" 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) & "\Non conformité" 'création si inexistant
End If
' vérifie l'existence du répertoire fournisseur, sinon le créé
ChDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result 'création si inexistant avec prise en compte de la boite à texte 2 (fournisseur)
End If
' vérifie l'existence du sous répertoire du nom de la référence de la NC, sinon le créé
ChDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result & "\" & ActiveDocument.FormFields(1).Result 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result & "\" & ActiveDocument.FormFields(1).Result 'création si inexistant avec prise en compte de la boite à texte 2 (fournisseur) et boite à texte 1 (n° de la NC)
End If
'sauvegarde du document
'se place dans le répertoire correspondant
ChangeFileOpenDirectory répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result & "\" & ActiveDocument.FormFields(1).Result
'défini la nomenclature type du nom du fichier word
nom = ActiveDocument.FormFields(1).Result & " " & ActiveDocument.FormFields(2).Result
'vérifie l'existence du fichier word
If Dir(nom & ".doc") <> "" Then
'le fichier existe déjà, proposition de l'écraser ou non
Dim Rep As VbMsgBoxResult
Rep = MsgBox("Le fichier existe déjà, voulez vous écraser la version précédente ?", vbYesNo + vbQuestion, "Confirmation de sauvegarde")
'clic sur oui, document word est écrasé
If Rep = vbYes Then
ActiveDocument.SaveAs FileName:=nom & ".doc", FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End If
'clic sur non, le document peut être sauvegardé en modifiant le nom
Else
ActiveDocument.SaveAs FileName:=nom & ".doc", FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End If
End Sub
j'ai un fichier word sous forme de formulaire qui se remplit directement à partir des infos inscrites dans une base de données excel afin d'éviter les doubles saisies.
Ce fichier word intègre une macro qui permet de l'enregistrer sous un nom précis et sous un répertoire précis (avec les infos du formulaire).
Cependant mon soucis actuel est que la macro reste présente dans les fichiers word.
J'aurais aimé qu'elle soit supprimé après l'enregistrement car aujourd'hui j'ai plusieurs centaines de document word qui ont cette macro et ça devient fastidueux de l'effacer un à un.
Je vous colle la macro. Que faut il ajouter pour que la macro ne soit plus présente dans les fichiers enregistrés ?
Private Sub Document_Close() 'macro s'active en cliquant sur la croix de fermeture
'défini les variables
Dim nom As String
Dim répertoire As String
'défini le chemin du répertoire
répertoire = "\\Chemin$\CONTROLE\Bilan\Année " '!!! attention chemin d'accès à modifier si nécessaire"
On Error Resume Next
' vérifie l'existence du répertoire année, sinon le créé
ChDir répertoire & Year(Date) 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) 'création si inexistant
End If
' vérifie l'existence du répertoire Non conformité, sinon le créé
ChDir répertoire & Year(Date) & "\Non conformité" 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) & "\Non conformité" 'création si inexistant
End If
' vérifie l'existence du répertoire fournisseur, sinon le créé
ChDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result 'création si inexistant avec prise en compte de la boite à texte 2 (fournisseur)
End If
' vérifie l'existence du sous répertoire du nom de la référence de la NC, sinon le créé
ChDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result & "\" & ActiveDocument.FormFields(1).Result 'vérifie
If Err <> 0 Then
MkDir répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result & "\" & ActiveDocument.FormFields(1).Result 'création si inexistant avec prise en compte de la boite à texte 2 (fournisseur) et boite à texte 1 (n° de la NC)
End If
'sauvegarde du document
'se place dans le répertoire correspondant
ChangeFileOpenDirectory répertoire & Year(Date) & "\Non conformité\" & ActiveDocument.FormFields(2).Result & "\" & ActiveDocument.FormFields(1).Result
'défini la nomenclature type du nom du fichier word
nom = ActiveDocument.FormFields(1).Result & " " & ActiveDocument.FormFields(2).Result
'vérifie l'existence du fichier word
If Dir(nom & ".doc") <> "" Then
'le fichier existe déjà, proposition de l'écraser ou non
Dim Rep As VbMsgBoxResult
Rep = MsgBox("Le fichier existe déjà, voulez vous écraser la version précédente ?", vbYesNo + vbQuestion, "Confirmation de sauvegarde")
'clic sur oui, document word est écrasé
If Rep = vbYes Then
ActiveDocument.SaveAs FileName:=nom & ".doc", FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End If
'clic sur non, le document peut être sauvegardé en modifiant le nom
Else
ActiveDocument.SaveAs FileName:=nom & ".doc", FileFormat:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End If
End Sub
A voir également:
- Macro à supprimer
- Supprimer rond bleu whatsapp - Guide
- Supprimer page word - Guide
- Fichier impossible à supprimer - Guide
- Supprimer pub youtube - Accueil - Streaming
- Supprimer compte instagram - Guide
4 réponses
Bonjour,
Si vous êtes sous Word 2010 ou supérieur, la solution la plus simple est d'enregistrer au format .docx , ce qui vous supprimera automatiquement toute macro.
Si vous êtes sous Word 2010 ou supérieur, la solution la plus simple est d'enregistrer au format .docx , ce qui vous supprimera automatiquement toute macro.
ActiveDocument.SaveAs FileName:=nom, FileFormat:=wdFormatDocumentDefault,
Bonjour, tu peux tester l'un des deux codes proposés sur https://www.developpez.net/forums/d206413/logiciels/microsoft-office/word/vba-word/vba-w-destruction-d-macro/ et l'ajouter à ton code afin qu'il supprime ta macro. En l'exécutant, une erreur va apparaitre (je viens aussi de l'avoir en testant) et pour la contourner il faut autoriser le VBA à s'exécuter. Cela se fait dans le centre de de gestion de la confidentialité dans les versions d'Office 2007 et supérieures en cochant "Accès au modèle VBA"
https://support.microsoft.com/fr-fr/help/282830/programmatic-access-to-office-vba-project-is-denied (aide Microsoft)
https://support.microsoft.com/fr-fr/help/282830/programmatic-access-to-office-vba-project-is-denied (aide Microsoft)
du coup j'ai plusieurs centaines de documents word intégrant la macro initiale, avez vous une technique pour supprimer la macro de tous ces documents sans le faire l'un après l'autre comme je fais actuellement pour nettoyer l'historique.
j'ouvre chaque document word, onglet développeur, VB, CTRL A; supprimer, CTRL S et fermer et je passe au suivant
j'ouvre chaque document word, onglet développeur, VB, CTRL A; supprimer, CTRL S et fermer et je passe au suivant
j'ai remplacé mes 2 lignes qui commencent par ActiveDocument par la votre, j'enregistre, je ferme, j'ouvre le même fichier mais j'ai encore la macro.
Peut être dois je placer la ligne à un endroit précis ?
c'est parfait et simple.
Merci beaucoup