Supprimer totalement une macro

Bonjour à tous,

je suis nouveau sur le forum... alors je vous salue bien bas.

Nous avons dans notre entreprise un fichier Excel sur lequel tout le monde travaille régulièrement. Ce fichier comporte des macros qui servent à calculer des prix, élaborer des devis, etc.

PROBLEME : on doit parfois transférer ce fichier à des clients, mais on ne veut pas laisser les macros. Or, j'ai essayé par tous les moyens, impossible de les supprimer ! A chaque fois qu'on réouvre le fichier, Excel nous indique la présence de ces macros.

Auriez-vous une astuce pour vraiment tout enlever ?

Je vous remercie par avance.

JC

bonjour

etant specialiste de la plantade..... quand je supprime un code : je le surligne avec la souris et puis "sup"

ou alors tu peux aussi metrre des ' a chaque ligne

pas pro mais efficae

cordialement

Je ne suis pas certain que la version 2007 fasse la même chose que la version 2010 sur la sauvegarde. Aussi, essaies tout de même cela.

Pour envoyer ton fichier, tu peux enregistrer ton classeur en:

Enregistrer sous:

Sous le titre du fichier, tu as "Type" et tu sélectionnes:

"Classeur Excel" => Qui ne prend donc pas en cours tes macros. Aucune n'est enregistrée

De mémoire, la version 2007 n'a pas cette appellation, mais je crois que ça doit pouvoir s'appliquer aussi.

Bonjour,

Il faudrait savoir :

  • Si tu as des macros dans tes feuilles
  • si tu as des macros dans un ou plusieurs modules. Quel est le nom du ou des modules ?

A te relire

Merci à tous pour vos réponses.

voici quelques éléments :

  • il n'y a rien dans la fenêtre "affichage -> macro"
  • le fichier est nativement au format Excel 2003 (.xls), donc je ne peux pas l'enregistrer sous ce format là sans les macros.
  • j'ai trouvé trois macros, qui apparemment, correspondent aux trois boutons qui ont été ajoutés dans la feuille pour lancer ces macros. Elles se trouvent dans l'onglet Développeur -> Visual Basic -> Affichage -> explorateur de projets.
J'ai pu faire un clic-droit -> supprimer et enregistrer de nouveau.

Les boutons ne sont plus fonctionnels. A la place j'ai le message "Impossible d'exécuter la macro 'Lambda'". Bon

Je ne suis pas loin apparemment. Cependant, en enregistrant le document et en l'ouvrant avec OpenOffice par exemple, j'ai toujours un message comme quoi le document comporte des macros...

Bizarre, bizarre...

re,

il n'y a rien dans la fenêtre "affichage -> macro"

C'est pas ce que je t'ai demandé. Il faut vérifier si tu as des modules dans VBE. Si oui, il faut les supprimer car même si tu as un module vide, excel peut te renvoyer un message à l'ouverture du fichier.

"Impossible d'exécuter la macro 'Lambda'".

As-tu vérifié dans Thisworkbook si tu n'as pas un code ??

A te relire

Bonjour à tous,

c'est avec une célérité remarquable que je reviens vers vous... trois ans après ^^.

A l'époque on avait contourné le problème, mais il se présente à nouveau, et pour le même fichier. Le but est donc, simplement, de supprimer (toutes) les macros d'un fichier, conçu nativement sous Excel, afin de pouvoir le transférer à quiconque et qu'il puisse l'ouvrir

  • sans message d'avertissement
  • depuis Excel ou OpenOffice

Actuellement, après avoir supprimé tous les modules présents dans Microsoft Visual Basic -> explorateur de projet, il n'y a plus de message quand j'ouvre le fichier sous Excel. MAIS il y en a un dans Open Office, à propos de macros qui ont dû être malencontreusement désactivées...

Pourtant il n'y a plus de modules. Dans le menu Macro, il n'y a rien. Il reste effectivement ThisWorkbook, mais j'ai tout effacé dedans, car le menu "ThisWorkBook -> supprimer" est grisé...

Merci de votre aide.

Bonjour,

A tester et à adapter à ton fichier.

A te relire, peux-être dans 3 ans.

Cdlt

75essaisaveas.xlsm (20.43 Ko)
Option Explicit
'Attribute VB_Name = "SaveAsSansLesMacros"
'IMPORTANT : Ajouter la référence Microsoft Visual Basic for Applications Extensibility 5.3
'Enregistrer un classeur sous un autre nom, en supprimant les macros.
'fs, mpfe
'
Public Const NomBouton As String = "CommandButton"
'
Public Sub SaveAsWithoutMacros()
Dim NomSource$, CheminDest$, NomDest$
Dim NomBtn As String, Shp As OLEObject, Sht As Worksheet
Dim VBC As Object

  NomSource = "EssaiSaveAs.xlsm"
  CheminDest = "C:\Windows\Temp\"
  NomDest = "Essai"
  'on enregistre le fichier en Excel 97-2003
  Workbooks(NomSource).SaveAs Filename:=CheminDest & NomDest, FileFormat:=xlExcel8
  'suppresion modules, userform, etc...
  With ActiveWorkbook.VBProject
  'cette partie du code est de Laurent Longre
    For Each VBC In .VBComponents
      If VBC.Type = 100 Then
        With VBC.CodeModule
          .DeleteLines 1, .CountOfLines
          .CodePane.Window.Close
        End With
      Else: .VBComponents.Remove VBC
      End If
    Next VBC
  End With
  'suppression CommnandButton
  For Each Sht In ActiveWorkbook.Worksheets
    For Each Shp In Sht.OLEObjects
      NomBtn = Shp.Name
      If Left(NomBtn, 13) = NomBouton Then Shp.Delete
    Next Shp
  Next Sht

  Application.Quit
  SendKeys "%O"

End Sub

Merci bcp pour ton aide. Mais... je le place où ce code ? Dans OO ou dans Excel ?

Je ne suis vraiment pas expert sur ce type de soft... désolé

J'ai essayé de copier le code dans une nouvelle macro, puis de l'exécuter. Mais j'ai une erreur de compliation... me dit-on. comme indiqué dans le fichier joint.

je commence à déserpérer. J'ai essayé 36 trucs et astuces glanés sur le net pour ce problème.... pour l'instant rien den fonctionne. C'est dingue qu'il faille écrire du code pour supprimer des composants.

erreur macro

Fichier, enregistrer sous, format xlsx

EngueEngue a écrit :

Fichier, enregistrer sous, format xlsx

J'oubliais. Pour tester cela, j'ai un Excel 2003

Re,

As-tu regardé le travail effectué par la procédure?

Dans le fichier 'EssaiSaveAsxlsm', il y a un CommandButton, un userform et des modules de feuilles et des modules...

Lorsque tu cliques sur le bouton, le fichier est enregistré en xls et on supprime tout ce qui est VBA et les CommandButton.

Tu termines en validant l'enregistrement.

Le résultat correspond t'il à tes attentes?

edit : si tu travailles essentiellement avec Excel 2003, enregistre EssaiSaveAs en xls.

Dans l'affirmative, tu copies le module1 nommé 'SaveAsWithoutMacros' dans une copie de ton classeur Excel (pas l'original, pour tester).

Pour le test, tu dois modifier les paramètres suivants, propre à ton environnement :

NomSource = "EssaiSaveAs.xlsm" 'nom de ton classeur source
  CheminDest = "C:\Windows\Temp\" 'chemin pour enregistrer le nouveau fichier
  NomDest = "Essai" 'nom du nouveau fichier

(ALT F11 pour ouvrir l'éditeur VBE). Et tu lances la procédure en faisant ALT F8 et en sélectionnant la macro.

Quel est alors le résultat dans ton fichier?

A te relire.

Cdlt.

Jean-Eric a écrit :

Re,

As-tu regardé le travail effectué par la procédure?

Dans le fichier 'EssaiSaveAsxlsm', il y a un CommandButton, un userform et des modules de feuilles et des modules...

Lorsque tu cliques sur le bouton, le fichier est enregistré en xls et on supprime tout ce qui est VBA et les CommandButton.

Tu termines en validant l'enregistrement.

Le résultat correspond t'il à tes attentes?

edit : si tu travailles essentiellement avec Excel 2003, enregistre EssaiSaveAs en xls.

Dans l'affirmative, tu copies le module1 nommé 'SaveAsWithoutMacros' dans une copie de ton classeur Excel (pas l'original, pour tester).

Pour le test, tu dois modifier les paramètres suivants, propre à ton environnement :

NomSource = "EssaiSaveAs.xlsm" 'nom de ton classeur source
  CheminDest = "C:\Windows\Temp\" 'chemin pour enregistrer le nouveau fichier
  NomDest = "Essai" 'nom du nouveau fichier

(ALT F11 pour ouvrir l'éditeur VBE). Et tu lances la procédure en faisant ALT F8 et en sélectionnant la macro.

Quel est alors le résultat dans ton fichier?

A te relire.

Cdlt.

Je commence à devenir chèvre.

Oui j'ai regardé la procédure mais ça n'est pas tout à fait clair.

"Dans le fichier 'EssaiSaveAsxlsm', il y a un CommandButton, un userform et des modules de feuilles et des modules..."

Ok, sans doute. En ouvrant ce fichier sous Linux avec Open Office je vois le bouton, je vois le code. Mais je ne sais pas s'il y a d'autres choses, comme des "modules de feuilles" et des "userform". Bref, dans mon Excel 2003 (sous Windows 7 en virtuel), ce fichier ne s'ouvre pas du tout (caractère non compris). Renommé en .xls, il ne s'ouvre pas non plus.

En supposant que ce fichier ne contient que le code explicité plus haut, j'ai ouvert mon fichier à transformé, je suis allé dans l'éditeur de code VB, j'ai créé un nouveau module dans lequel j'ai copié ce code.

J'ai adapté les trois lignes suscitée à mon environnement, à savoir :

NomSource = "tarif_399_TEST.xls"

CheminDest = "C:\Users\jcg\Desktop"

NomDest = "TARIF_ss_macro"

à un moment, j'ai eu un message comme quoi le fichier était déjà ouvert... et puis maintenant, j'ai de nouveau la même erreur qu'avant...

Mais surtout je n'ai pas compris si ce code devait être exécuté DEPUIS le même fichier, ou DEPUIS un AUTRE fichier.

...

merci encore de vous pencher sur mon cas.

Re,

Je te renvoie le fichier en xls (Excel 2003). Car tu ne peux pas enregistrer en xls si tu ne disposes pas d'Excel 2007+.

Tu recommences l'opération avec ce nouveau fichier, avant de passer à ton vrai fichier.

Cdlt.

15essaisaveas.zip (14.53 Ko)

edit : pense aà modifier ton profil en Excel 2003

Merci encore. Je pense que d'ici les trois prochaines années je devrais y arriver.

  • > j'ai changé mon profil (^^)
  • > j'ai téléchargé cette version qui s'ouvre sans souci
  • > j'ai modifié mon environnement
  • > j'ai toujours la même erreur (cj fichier joint).

* J'ai essayé de modifier le "FileFormat", en mettant :=56 par exemple, ça ne fonctionne pas. Je n'ai pas toujours pas compris si le code peut être mis dans un module du fichier LUI-MEME dont on doit enlever les macros, ou pas. J'ai essayé avec deux fichier, même résultat.

erreur compil excel

Re,

Pour le message d'erreur :

modifie :

 NomSource = "EssaiSaveAs.xls"
  CheminDest = "C:\Windows\Temp\"
  NomDest = "Essai"
Workbooks(NomSource).SaveAs Filename:=CheminDest & NomDest, FileFormat:=xlExcel8

en :

 NomSource = "EssaiSaveAs.xls"
  CheminDest = "C:\Windows\Temp\"
  NomDest ="Essai.xls"
  'on enregistre le fichier en Excel 97-2003
 Workbooks(NomSour
  'on enregistre le fichier en Excel 97-2003
 Workbooks(NomSource).SaveAs Filename:=CheminDest & NomDest

Mais je ne dispose pas d'Excel 2003

alors là l'erreur est différente :

Erreur d'exécution '9':

L'indice n'appartient pas à la sélection.

Workbooks(NomSource) .SaveAs Filename:=CheminDest & NomDest

Re,

Testé tel que défini précédemment et je n'ai aucune erreur. Le fonctionnement est correct.

A tout hasard, regarde tes options d'affichage des fichiers dans l'explorateur.

Assure toi que l'option de l'affichage des extensions de fichiers soit cochée.

Sinon, une personne du forum sous Excel 2003 pourrait peut-être intervenir

Je continue cependant mes recherches

Cdlt

En attendant je vais essayer de trouver une version plus récente d'Excel pour exécuter ton script. Je vous tiens au courant.

Bonjour,

Je te propose de clore ce sujet qui date un peu, et de revenir avec un nouveau sujet.

Je pense que le souci est une question de syntaxe avec Excel 2003, mais je ne dispose pas de cette version. et cela fonctionne parfaitement chez moi.

Si tu passes à Excel 2007+, tu auras la possibilité d'enregistrer ton fichier xlsm en xlsx pour supprimer les procédures VBA (comme te l'a indiqué EngueEngue). Il te restera à supprimer les boutons inutiles.

Bon courage et à bientôt.

Cdlt.

Rechercher des sujets similaires à "supprimer totalement macro"