Enregistrer un fichir sous sans les macro ni certaines feuilles

Le
-Tibo-
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne sais
pas

Merci d'avance de votre aide.

Cdlt.

Tibo
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #5385151
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-" Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo
-Tibo-
Le #5385141
Je vais essayer tout ça...
Merci beaucoup.
@+

Tibo


"MichDenis"
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu
désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-"
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique
qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de
production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne
sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo





-Tibo-
Le #5096911
Merci pour la réponse

Mais apres test j'ai une erreur '1004' sur la ligne :
Set VBComps = ActiveWorkbook.VBProject.VBComponents

avec le message : "La méthode "VBProject" sur l'objet '_Workbook' à échoué.
J'ai cherché une solution mais j'avoue que je seche sur la question.

De plus j'ai une configuration de sécurité imposé par par ma boite sur mon
PC est le niveau "moyen" est activé par défaut (et meme si on change le
parametre il est redefinit sur ce niveau à chaque démarrage de Excel). Du
coup le code ne peut pas s'executer sans une opération manuel. Or les
personnes qui vont utiliser le fichier n'auront pas forcément les
connaissance ni l'envie de s'embeter a changer les propriété de sécutité à
chaque ouverture du fichier. Existe-t-il une autre méthode ?

Merci encore.

"MichDenis"
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu
désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-"
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique
qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de
production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne
sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo





MichDenis
Le #5094401
| De plus j'ai une configuration de sécurité imposé par par ma boite sur mon
| PC est le niveau "moyen" est activé par défaut (et meme si on change le

Même avec ce niveau de sécurité, la procédure devrait s'exécuter sans
aucun problème !

Cependant, pour exécuter du code, tu dois avoir dans la fenêtre :
Menu / outils / Macros / sécurité / Onglets Éditeurs approuvés /
les 2 cases à cocher doivent être cochées.

J'avoue ne pas très bien comprendre qu'elle est exactement ton problème
de sécurité... Quelle la différence dans tes paramètres lorsque la procédure
fonctionne et ne fonctionne pas ?


"-Tibo-" %
Merci pour la réponse

Mais apres test j'ai une erreur '1004' sur la ligne :
Set VBComps = ActiveWorkbook.VBProject.VBComponents

avec le message : "La méthode "VBProject" sur l'objet '_Workbook' à échoué.
J'ai cherché une solution mais j'avoue que je seche sur la question.

De plus j'ai une configuration de sécurité imposé par par ma boite sur mon
PC est le niveau "moyen" est activé par défaut (et meme si on change le
parametre il est redefinit sur ce niveau à chaque démarrage de Excel). Du
coup le code ne peut pas s'executer sans une opération manuel. Or les
personnes qui vont utiliser le fichier n'auront pas forcément les
connaissance ni l'envie de s'embeter a changer les propriété de sécutité à
chaque ouverture du fichier. Existe-t-il une autre méthode ?

Merci encore.

"MichDenis"
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu
désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-"
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique
qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de
production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne
sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo





-Tibo-
Le #5094271
En fait je n'obtiens pas la meme erreur lors de l'execution du code.
Si la securite et niveau bas, j'ai : '1004' La méthode "VBProject" sur
l'objet '_Workbook' à échoué.
Si la securite est active (niveau moyen) j'ai : '1004' L'acces par programme
au projet via Visual Basic n'est pas fiable.

Mais apres avoir cocher les 2 cases dans Menu / outils / Macros / sécurité /
Onglets Éditeurs approuvés / ... eh bien ça marche.
Question subsidiaire : Peux-t-on forcer les 2 cases a etre coche par une
autre macro... le but c'est que mes utilisateurs n'ai pas de manipulation a
faire pour que ça marche...

Merci encore.

@+


"MichDenis"
| De plus j'ai une configuration de sécurité imposé par par ma boite sur
mon
| PC est le niveau "moyen" est activé par défaut (et meme si on change le

Même avec ce niveau de sécurité, la procédure devrait s'exécuter sans
aucun problème !

Cependant, pour exécuter du code, tu dois avoir dans la fenêtre :
Menu / outils / Macros / sécurité / Onglets Éditeurs approuvés /
les 2 cases à cocher doivent être cochées.

J'avoue ne pas très bien comprendre qu'elle est exactement ton problème
de sécurité... Quelle la différence dans tes paramètres lorsque la
procédure
fonctionne et ne fonctionne pas ?


"-Tibo-" %
Merci pour la réponse

Mais apres test j'ai une erreur '1004' sur la ligne :
Set VBComps = ActiveWorkbook.VBProject.VBComponents

avec le message : "La méthode "VBProject" sur l'objet '_Workbook' à
échoué.
J'ai cherché une solution mais j'avoue que je seche sur la question.

De plus j'ai une configuration de sécurité imposé par par ma boite sur mon
PC est le niveau "moyen" est activé par défaut (et meme si on change le
parametre il est redefinit sur ce niveau à chaque démarrage de Excel). Du
coup le code ne peut pas s'executer sans une opération manuel. Or les
personnes qui vont utiliser le fichier n'auront pas forcément les
connaissance ni l'envie de s'embeter a changer les propriété de sécutité à
chaque ouverture du fichier. Existe-t-il une autre méthode ?

Merci encore.

"MichDenis"
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu
désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-"
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique
qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de
production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne
sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo










MichDenis
Le #5094231
Pour cocher les 2 cases de la fenêtre "éditeurs approuvés"
il n'existe aucun code VBA pour le faire directement. Il
en est de même pour modifier le niveau de sécurité.

Cependant on peut le faire avec un script "VBS" et aller
modifer directement ces paramètres dans la base de regsitre.

Je te donne un exemple : Attention, les manipulations dans la
base de registre de windows peuvent être catastrophiques....
Il est préférable d'avoir un back up de celui-ci ...!

Voici : copie de code dans un fichier NotePad et lors de l'enregistrement
de celui-ci, donne lui l'extension ".vbs"
Si tu double-cliques sur ce fichier, il modifieras la base de registre.
Ce code a été testé pour Windows xp pro et excel 2003


'-------------------------------------------
Dim wsh, objXl
'Pour s'assurer qu'excel n'est pas ouvert.
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Fermer excel pour exécuter ce scr1pt...",64,"La direction"
WScript.Quit
else
Set objxl=createobject("Excel.Application")
Ver = objxl.Version
set objxl = nothing
End If
Err.Clear

Set wsh = WScript.CreateObject("WScript.Shell")

'Niveau de sécurité 2 pour 2ième niveau
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel",2,"REG_DWORD"

if ver >= 10 then
'Faire confiance au projet VBA -> 1 pour que la case soit cochée
' -> 0 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM",1,"REG_DWORD"

'Faire confiance au modèle -> 0 pour que la case soit cochée
' -> 1 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles",0,"REG_DWORD"
end if
'-------------------------------------------





"-Tibo-"
En fait je n'obtiens pas la meme erreur lors de l'execution du code.
Si la securite et niveau bas, j'ai : '1004' La méthode "VBProject" sur
l'objet '_Workbook' à échoué.
Si la securite est active (niveau moyen) j'ai : '1004' L'acces par programme
au projet via Visual Basic n'est pas fiable.

Mais apres avoir cocher les 2 cases dans Menu / outils / Macros / sécurité /
Onglets Éditeurs approuvés / ... eh bien ça marche.
Question subsidiaire : Peux-t-on forcer les 2 cases a etre coche par une
autre macro... le but c'est que mes utilisateurs n'ai pas de manipulation a
faire pour que ça marche...

Merci encore.

@+


"MichDenis"
| De plus j'ai une configuration de sécurité imposé par par ma boite sur
mon
| PC est le niveau "moyen" est activé par défaut (et meme si on change le

Même avec ce niveau de sécurité, la procédure devrait s'exécuter sans
aucun problème !

Cependant, pour exécuter du code, tu dois avoir dans la fenêtre :
Menu / outils / Macros / sécurité / Onglets Éditeurs approuvés /
les 2 cases à cocher doivent être cochées.

J'avoue ne pas très bien comprendre qu'elle est exactement ton problème
de sécurité... Quelle la différence dans tes paramètres lorsque la
procédure
fonctionne et ne fonctionne pas ?


"-Tibo-" %
Merci pour la réponse

Mais apres test j'ai une erreur '1004' sur la ligne :
Set VBComps = ActiveWorkbook.VBProject.VBComponents

avec le message : "La méthode "VBProject" sur l'objet '_Workbook' à
échoué.
J'ai cherché une solution mais j'avoue que je seche sur la question.

De plus j'ai une configuration de sécurité imposé par par ma boite sur mon
PC est le niveau "moyen" est activé par défaut (et meme si on change le
parametre il est redefinit sur ce niveau à chaque démarrage de Excel). Du
coup le code ne peut pas s'executer sans une opération manuel. Or les
personnes qui vont utiliser le fichier n'auront pas forcément les
connaissance ni l'envie de s'embeter a changer les propriété de sécutité à
chaque ouverture du fichier. Existe-t-il une autre méthode ?

Merci encore.

"MichDenis"
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu
désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-"
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique
qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de
production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne
sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo










MichDenis
Le #5094101
Si tu veux être certain que tes paramètres sont OK,

places le fichier.vbs que tu as créé dans ce répertoire :
C:Documents and SettingsAll UsersMenu DémarrerProgrammesDémarrage

Il s'exécutera à chaque fois qu'un usager ouvrira l'ordinateur et comme ça
tes paramètres dans excel seront toujours Ok.



"MichDenis"
Pour cocher les 2 cases de la fenêtre "éditeurs approuvés"
il n'existe aucun code VBA pour le faire directement. Il
en est de même pour modifier le niveau de sécurité.

Cependant on peut le faire avec un script "VBS" et aller
modifer directement ces paramètres dans la base de regsitre.

Je te donne un exemple : Attention, les manipulations dans la
base de registre de windows peuvent être catastrophiques....
Il est préférable d'avoir un back up de celui-ci ...!

Voici : copie de code dans un fichier NotePad et lors de l'enregistrement
de celui-ci, donne lui l'extension ".vbs"
Si tu double-cliques sur ce fichier, il modifieras la base de registre.
Ce code a été testé pour Windows xp pro et excel 2003


'-------------------------------------------
Dim wsh, objXl
'Pour s'assurer qu'excel n'est pas ouvert.
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Fermer excel pour exécuter ce scr1pt...",64,"La direction"
WScript.Quit
else
Set objxl=createobject("Excel.Application")
Ver = objxl.Version
set objxl = nothing
End If
Err.Clear

Set wsh = WScript.CreateObject("WScript.Shell")

'Niveau de sécurité 2 pour 2ième niveau
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel",2,"REG_DWORD"

if ver >= 10 then
'Faire confiance au projet VBA -> 1 pour que la case soit cochée
' -> 0 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM",1,"REG_DWORD"

'Faire confiance au modèle -> 0 pour que la case soit cochée
' -> 1 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles",0,"REG_DWORD"
end if
'-------------------------------------------





"-Tibo-"
En fait je n'obtiens pas la meme erreur lors de l'execution du code.
Si la securite et niveau bas, j'ai : '1004' La méthode "VBProject" sur
l'objet '_Workbook' à échoué.
Si la securite est active (niveau moyen) j'ai : '1004' L'acces par programme
au projet via Visual Basic n'est pas fiable.

Mais apres avoir cocher les 2 cases dans Menu / outils / Macros / sécurité /
Onglets Éditeurs approuvés / ... eh bien ça marche.
Question subsidiaire : Peux-t-on forcer les 2 cases a etre coche par une
autre macro... le but c'est que mes utilisateurs n'ai pas de manipulation a
faire pour que ça marche...

Merci encore.

@+


"MichDenis"
| De plus j'ai une configuration de sécurité imposé par par ma boite sur
mon
| PC est le niveau "moyen" est activé par défaut (et meme si on change le

Même avec ce niveau de sécurité, la procédure devrait s'exécuter sans
aucun problème !

Cependant, pour exécuter du code, tu dois avoir dans la fenêtre :
Menu / outils / Macros / sécurité / Onglets Éditeurs approuvés /
les 2 cases à cocher doivent être cochées.

J'avoue ne pas très bien comprendre qu'elle est exactement ton problème
de sécurité... Quelle la différence dans tes paramètres lorsque la
procédure
fonctionne et ne fonctionne pas ?


"-Tibo-" %
Merci pour la réponse

Mais apres test j'ai une erreur '1004' sur la ligne :
Set VBComps = ActiveWorkbook.VBProject.VBComponents

avec le message : "La méthode "VBProject" sur l'objet '_Workbook' à
échoué.
J'ai cherché une solution mais j'avoue que je seche sur la question.

De plus j'ai une configuration de sécurité imposé par par ma boite sur mon
PC est le niveau "moyen" est activé par défaut (et meme si on change le
parametre il est redefinit sur ce niveau à chaque démarrage de Excel). Du
coup le code ne peut pas s'executer sans une opération manuel. Or les
personnes qui vont utiliser le fichier n'auront pas forcément les
connaissance ni l'envie de s'embeter a changer les propriété de sécutité à
chaque ouverture du fichier. Existe-t-il une autre méthode ?

Merci encore.

"MichDenis"
Cette procédure supprime tous les modules "Standard", "De Classe"
"Formulaire" et tout le code qui peut y avoir dans le ThisWorkbook
ou dans les feuilles module.

Après avoir appeler cette procédure, tu enregistres ton fichier où tu
désires...

Attention, les 2 macros s'exécutent sur le classeur actif.

Sub test()
SupprimeToutCodeEtFormulaire
ActiveWorkbook.SaveAs "chemin et nouveau nom du fichier"
End Sub

'----------------------
Sub SupprimeToutCodeEtFormulaire()

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = ActiveWorkbook.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'----------------------




"-Tibo-"
Bonjour a tous,

J'ai un fichier excel pour lequel je voudrais créer une macro spécifique
qui
va :

- "Enregistrer sous" le fichier avec un nom specifique a un endroit
specifique
- supprimer les macros presentent dans le nouveau fichier (celui qui sera
"enregistrer sous" et pas celui de base qui est un fichier de
production..)
- Supprimer certaine feuille qui ne sont utile qu'a la production

Voila, je connais le code pour "enregistrer sous", pour le reste je ne
sais
pas...

Merci d'avance de votre aide.

Cdlt.

Tibo










Publicité
Poster une réponse
Anonyme