Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sauvegarde d'un fichier sans les macros

3 réponses
Avatar
Jed
Bonjour,
J'ai cr=E9=E9 un appli de gestion de bon de livraison.
J'ai mis le fichier excel en modele (.xlt)
A la fin de la saisie du bon de livraison j'enregistre le=20
fichier (.xls) avec un num=E9ro g=E9n=E9r=E9 .
Comment faire pour enregistrer le fichier sans les macros ?
J'aimerai avoir une copie de BL sans la possibilite de=20
modification et sans les macros.(Ca all=E8gera peut etre le=20
poids du fichier!!)
QQ peut il m'aider sur ce coup la ?
Merci d'avance
Cordialement
Jed

3 réponses

Avatar
PMO
Bonjour,

Une solution pour "Comment faire pour enregistrer le fichier sans les macros
?".

Le code ci-dessous (à insérer dans le VBE du XLT) fait les choses suivantes:
1) Il crée un nouveau classeur.
2) Il y transporte les feuilles de votre classeur instance XLT tout
en conservant la mise en page d'impression et les formats de
cellule.
3) Il ferme sans le sauvegarder votre classeur instance XLT.
4) Le nouveau classeur ne contient pas les macros du XLT et il
ne vous reste plus qu'à le sauvegarder sous le nom de votre choix.

'**********************
Option Explicit
Sub ExportXLT2XLS()
Dim W1 As Workbook
Dim W2 As Workbook
Dim i&
On Error GoTo Erreur
Application.ScreenUpdating = False
'---- Votre classeur instance de xlt ----
Set W1 = ThisWorkbook
'---- Classeur cible à enregistrer ----
Set W2 = Workbooks.Add(xlWBATWorksheet)
'---- Nom feuille bidon pour éviter conflit ----
W2.Sheets(1).Name = "_tEmPo_"
'---- Copie de toutes les feuilles avec leurs ----
'---- formats et mise en page d'impression ----
For i& = 1 To W1.Sheets.Count
W1.Sheets(i&).Copy after:=W2.Sheets(W2.Sheets.Count)
Next i&
'---- Destruction de la feuille bidon ----
Application.DisplayAlerts = False
W2.Sheets(1).Delete
'#### LIGNES A OCCULTER SELON VOTRE GRE ####
'---- Ferme sans sauvegarder votre instance de xlt ----
W1.Saved = True
W1.Close
'###########################################
'---- Pseudo traitement d'erreur ----
'---- Si plantage on remet les choses en place ----
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
'********************************

Est-ce que ça répond à votre attente ?

PMO
Patrick Morange





Bonjour,
J'ai créé un appli de gestion de bon de livraison.
J'ai mis le fichier excel en modele (.xlt)
A la fin de la saisie du bon de livraison j'enregistre le
fichier (.xls) avec un numéro généré .
Comment faire pour enregistrer le fichier sans les macros ?
J'aimerai avoir une copie de BL sans la possibilite de
modification et sans les macros.(Ca allègera peut etre le
poids du fichier!!)
QQ peut il m'aider sur ce coup la ?
Merci d'avance
Cordialement
Jed



Avatar
jed
Merci pour ces precieses lignes.
Apres qq modifs et adaptation c'est exactement ce que je
voulais. (ca a meme optimiser mes codes a moi !!!)
Il ne me reste plus qu'a trouver comment ouvrir la boite
de dialog "Enregistrer sous " avec affichage d'un nom de
fichier prédéfinie.

Merci bcp
Jed

-----Message d'origine-----
Bonjour,

Une solution pour "Comment faire pour enregistrer le
fichier sans les macros

?".

Le code ci-dessous (à insérer dans le VBE du XLT) fait
les choses suivantes:

1) Il crée un nouveau classeur.
2) Il y transporte les feuilles de votre classeur
instance XLT tout

en conservant la mise en page d'impression et les
formats de

cellule.
3) Il ferme sans le sauvegarder votre classeur instance
XLT.

4) Le nouveau classeur ne contient pas les macros du XLT
et il

ne vous reste plus qu'Ã le sauvegarder sous le nom
de votre choix.


'**********************
Option Explicit
Sub ExportXLT2XLS()
Dim W1 As Workbook
Dim W2 As Workbook
Dim i&
On Error GoTo Erreur
Application.ScreenUpdating = False
'---- Votre classeur instance de xlt ----
Set W1 = ThisWorkbook
'---- Classeur cible à enregistrer ----
Set W2 = Workbooks.Add(xlWBATWorksheet)
'---- Nom feuille bidon pour éviter conflit ----
W2.Sheets(1).Name = "_tEmPo_"
'---- Copie de toutes les feuilles avec leurs ----
'---- formats et mise en page d'impression ----
For i& = 1 To W1.Sheets.Count
W1.Sheets(i&).Copy after:=W2.Sheets(W2.Sheets.Count)
Next i&
'---- Destruction de la feuille bidon ----
Application.DisplayAlerts = False
W2.Sheets(1).Delete
'#### LIGNES A OCCULTER SELON VOTRE GRE ####
'---- Ferme sans sauvegarder votre instance de xlt ----
W1.Saved = True
W1.Close
'###########################################
'---- Pseudo traitement d'erreur ----
'---- Si plantage on remet les choses en place ----
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
'********************************

Est-ce que ça répond à votre attente ?

PMO
Patrick Morange





Bonjour,
J'ai créé un appli de gestion de bon de livraison.
J'ai mis le fichier excel en modele (.xlt)
A la fin de la saisie du bon de livraison j'enregistre
le


fichier (.xls) avec un numéro généré .
Comment faire pour enregistrer le fichier sans les
macros ?


J'aimerai avoir une copie de BL sans la possibilite de
modification et sans les macros.(Ca allègera peut etre
le


poids du fichier!!)
QQ peut il m'aider sur ce coup la ?
Merci d'avance
Cordialement
Jed

.





Avatar
PMO
Bonjour,

Une solution pour la boîte de dialogue "Enregistrer sous ".

Ci-dessous le code amélioré qui traite le problème.
ATTENTION: si vous testez en lançant la macro à partir du VBE
vous pourrez constater, une fois le classeur cible refermé, qu'il bogue
à sa réouverture (le processus ne s'est pas terminé). Impossible de
jeter le classeur à la corbeille. Si ça vous arrive, plutôt que de
redémarrer
votre ordinateur, vous pouvez faire Ctrl+Alt+Suppr.
La boîte de dialogue "Gestionnaire dess tâches de Windows" apparaît.
Allez sur l'onglet "Processus" et sélectionnez EXCEL.EXE puis cliquez
sur "Terminer le processus". SOYEZ PRUDENT.


Pour pallier ce problème il suffit de lancer la macro
à partir de Excel utilisateur ou de l'appeler par votre programme.


'****************************
Option Explicit
Sub ExportXLT2XLS()
Dim W1 As Workbook
Dim W2 As Workbook
Dim i&
Dim Suggere As Variant
Dim Reponse As Variant
On Error GoTo Erreur
Application.ScreenUpdating = False
'---- Votre classeur instance de xlt ----
Set W1 = ThisWorkbook
'---- Classeur cible à enregistrer ----
Set W2 = Workbooks.Add(xlWBATWorksheet)
'---- Nom feuille bidon pour éviter conflit ----
W2.Sheets(1).Name = "_tEmPo_"
'---- Copie de toutes les feuilles avec leurs ----
'---- formats et mise en page d'impression ----
For i& = 1 To W1.Sheets.Count
W1.Sheets(i&).Copy after:=W2.Sheets(W2.Sheets.Count)
Next i&
'---- Destruction de la feuille bidon ----
Application.DisplayAlerts = False
W2.Sheets(1).Delete
'---- Sauvegarde du classeur cible ----
Suggere = "A remplacer par votre variable nom"
Reponse = Application.GetSaveAsFilename( _
InitialFilename:=Suggere, _
fileFilter:="Classeur Microsoft Excel (*.xls), *.xls")
If Reponse <> False Then W2.SaveAs Filename:=Reponse
'#### LIGNES A OCCULTER SELON VOTRE GRE ####
'---- Ferme sans sauvegarder votre instance de xlt ----
W1.Saved = True
W1.Close
'###########################################
'---- Pseudo traitement d'erreur ----
'---- Si plantage on remet les choses en place ----
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Est-ce que ça vous convient ?

Cordialement.

PMO
Patrick Morange




Merci pour ces precieses lignes.
Apres qq modifs et adaptation c'est exactement ce que je
voulais. (ca a meme optimiser mes codes a moi !!!)
Il ne me reste plus qu'a trouver comment ouvrir la boite
de dialog "Enregistrer sous " avec affichage d'un nom de
fichier prédéfinie.

Merci bcp
Jed

-----Message d'origine-----
Bonjour,

Une solution pour "Comment faire pour enregistrer le
fichier sans les macros

?".

Le code ci-dessous (à insérer dans le VBE du XLT) fait
les choses suivantes:

1) Il crée un nouveau classeur.
2) Il y transporte les feuilles de votre classeur
instance XLT tout

en conservant la mise en page d'impression et les
formats de

cellule.
3) Il ferme sans le sauvegarder votre classeur instance
XLT.

4) Le nouveau classeur ne contient pas les macros du XLT
et il

ne vous reste plus qu'Ã le sauvegarder sous le nom
de votre choix.


'**********************
Option Explicit
Sub ExportXLT2XLS()
Dim W1 As Workbook
Dim W2 As Workbook
Dim i&
On Error GoTo Erreur
Application.ScreenUpdating = False
'---- Votre classeur instance de xlt ----
Set W1 = ThisWorkbook
'---- Classeur cible à enregistrer ----
Set W2 = Workbooks.Add(xlWBATWorksheet)
'---- Nom feuille bidon pour éviter conflit ----
W2.Sheets(1).Name = "_tEmPo_"
'---- Copie de toutes les feuilles avec leurs ----
'---- formats et mise en page d'impression ----
For i& = 1 To W1.Sheets.Count
W1.Sheets(i&).Copy after:=W2.Sheets(W2.Sheets.Count)
Next i&
'---- Destruction de la feuille bidon ----
Application.DisplayAlerts = False
W2.Sheets(1).Delete
'#### LIGNES A OCCULTER SELON VOTRE GRE ####
'---- Ferme sans sauvegarder votre instance de xlt ----
W1.Saved = True
W1.Close
'###########################################
'---- Pseudo traitement d'erreur ----
'---- Si plantage on remet les choses en place ----
Erreur:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
'********************************

Est-ce que ça répond à votre attente ?

PMO
Patrick Morange





Bonjour,
J'ai créé un appli de gestion de bon de livraison.
J'ai mis le fichier excel en modele (.xlt)
A la fin de la saisie du bon de livraison j'enregistre
le


fichier (.xls) avec un numéro généré .
Comment faire pour enregistrer le fichier sans les
macros ?


J'aimerai avoir une copie de BL sans la possibilite de
modification et sans les macros.(Ca allègera peut etre
le


poids du fichier!!)
QQ peut il m'aider sur ce coup la ?
Merci d'avance
Cordialement
Jed

.