Copie feuille d'un classeur contenant des macros sans macros

Zouzou93

XLDnaute Occasionnel
Bonjour à tout le Forum,

Voilà bien longtemps que je n'ai eu le plaisir de vous demander assistance.

J'ai un classeur A contenant plusieurs feuilles ... J'ai une macro qui me permet de copier - coller (Uniquement les valeurs) une ces feuille dans un autre classeur B.
Sur la feuille d'origine (Du classeur A) j'ai un code que je ne souhaite pas recopier sur la feuille de destination B..... Car systèmatiquement lorsque cette feuille est ouverte par un nouvel utilisateur .... Le message voulez vous activer ou désactiver la macro s'affiche.

Avez vous SVP un moyen d'éviter ce message sachant que je ne peux demander à chaque utilsateur du classeur B (Classeur adressé par email ...) de réduire leur niveau de sécurité.

Merci par avance
Zouzou
 
G

Guest

Guest
Re : Copie feuille d'un classeur contenant des macros sans macros

bonjour Zouzou,

Voici une macro qui permet de copier une feuille du classeur actif vers un nouveau classeur et de la débarasser des macros contenu dans le module de la feuille d'origine.

A toi d'enregistrer le nouveau classeur.

Code:
Sub CopierFeuille()
  ThisWorkbook.Sheets("Feuil1").Copy
  With ActiveWorkbook
    
    With .VBProject.VBComponents(.Sheets(1).CodeName).CodeModule
      .DeleteLines 1, .CountOfLines
    End With
    
  End With
End Sub

A bientôt
 

Zouzou93

XLDnaute Occasionnel
Re : Copie feuille d'un classeur contenant des macros sans macros

Bonjour et Merci HASCO,

En fait le code ne se trouve pas dans un module mais dans la feuille elle même.

J'ai essayé d'appliquer ton code mais ça bug ....

Merci de ton aide.
Zouzou
 

Staple1600

XLDnaute Barbatruc
Re : Copie feuille d'un classeur contenant des macros sans macros

Bonjour


Pour rejoindre Hasco

Sub test_copy_sheet_nomac()
Application.DisplayAlerts = False
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:="C:\Temp\0test.xls"
ActiveWindow.Close
End Sub


Copie la feuille sans les modules
(mais conserve les code présent dans la feuille elle-même)


Hasco: ne faut-il;pas cocher dans Références pour utiliser ton code
Microsoft Visual Basic for Applications Extensibilty 5.3
 
G

Guest

Guest
Re : Copie feuille d'un classeur contenant des macros sans macros

Re bonjour ZouzOu,Stapple,

@Stapple Avec xl 2002 cela fonctionne sans les références à :Microsoft Visual Basic for Applications Extensibilty X.X
Mais tu as raison, c'est une précaution que je prends d'habitude.

Alors:
@Zouzou dans l'éditeur de macro (VBE) menu Outils/références et chercher la référence à Microsoft Visual Basic for Applications Extensibilty X.X et cocher la case en face de son nom.

A bientôt
 

Zouzou93

XLDnaute Occasionnel
Re : Copie feuille d'un classeur contenant des macros sans macros

HASCO ci joint copie du classeur épuré ....

En fait lorsque la copie se fait ... Elle se fait bien sans le code du module 1 ... Mais elle recopie le code placé dans la feuille nommée Offre.

Merci de ton aide
Zouzou
 
Dernière édition:
G

Guest

Guest
Re : Copie feuille d'un classeur contenant des macros sans macros

Re Zouzou,

Alors avec ceci, cela devrait le faire.

Cette procédure efface tous composant Visual basic du projet (Code de feuille, Module, userform)

Code:
'- le projet à exporter ne doit pas être protégé
'- la librairie Microsoft Visual Basic Extensibility 5.x doit être cochée
Sub copieFeuilleSansModulesNiMacro()
 Dim i As Integer
 Dim oComposant As VBComponent
 Dim sNomModule As String, LigneTitre As String
 ThisWorkbook.Sheets("Feuil1").Copy
 For Each oComposant In ActiveWorkbook.VBProject.VBComponents
    sNomModule = oComposant.Name
    If oComposant.Type = vbext_ct_ClassModule Or vbext_ct_StdModule Or vbext_ct_MSForm Then
        With oComposant.CodeModule
            .DeleteLines 1, .CountOfLines
        End With
    End If
 Next oComposant
End Sub

A bientôt
 
G

Guest

Guest
Re : Copie feuille d'un classeur contenant des macros sans macros

Zouzou,

1000 excuses, j'ai oublié dans la procédure précédente la suppression du bouton sur la feuille. Modifier légèrement la macro aux lignes suivantes:
où tu doit remplacer "Button 1" par le nom du boutton de la feuille.

S'il n'y a qu'un objet (bouton, case à cocher etc...) sur la feuille tu peux remplacer le nom par 1

Code:
......
 ThisWorkbook.Sheets("Feuil1").Copy
  [COLOR=darkslateblue]ActiveWorkbook.Sheets(1).Shapes[/COLOR]("[COLOR=red]Button 1[/COLOR]").[COLOR=darkslateblue]Delete[/COLOR]
 For Each oComposant In ActiveWorkbook.VBProject.VBComponents
.......

A bientôt
 

Discussions similaires

Réponses
2
Affichages
2 K

Statistiques des forums

Discussions
314 487
Messages
2 110 121
Membres
110 677
dernier inscrit
volare