Supprimer Macro VBA à partir d'une macro

Fermé
gus1985 Messages postés 3 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 25 février 2007 - 25 févr. 2007 à 21:05
 ronanry - 17 janv. 2008 à 19:32
Bonjour à tous,

Je débute sous VBA et je cherche à copier une page d'un classeur excel dans un nouveau fichier à partir d'une macro VBA et que dans le nouveau fichier créé toutes les macros soient supprimées. et le tout en VBA...

Merci de votre aide

Guillaume
A voir également:

4 réponses

gus1985 Messages postés 3 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 25 février 2007 1
25 févr. 2007 à 22:23
En fait j'ai un fichier excel type (original). Dans celui-ci je veux juste remplir les cases vides puis l'enregistrer dans un nouveau fichier afin de ne pas modifier l'original. Dans le nouveau fichier crée je n'aurai plus besoin de cette macro et par conséquent j'aimerais qu'elle se supprime automatiquement. J'ai donc consulté le forum dans lequel il y avait déja un sujet semblable mais avec une méthode qui ne marche pas! ( supprimer macro excel )

A coté la macro me permet d'enregistrer des valeurs de ce fichier dans un 3ieme fichier pour des statistiques communes a ts les fichiers générés à partir de cet original.

La macro ne bug pas et copie ma feuille dans un nouveau document, les valeurs dans le 3ieme fichier mais il ne supprime pas la macro du nouveau fichier.
Voila le code:

Private Sub CommandButton3_Click()

Dim Wbk1 As Workbook, Wbk2 As Workbook
 

Set Wbk2 = Workbooks.Open(Filename:="C:\Documents and Settings\...\Statistiques.xls") 'Si tes classeurs sont fermés
 
Set Wbk1 = ThisWorkbook ' si le classeur est celui ou se trouve ton code
 
 
'et ensuite tu fais tes collages de type :
 

fin = Wbk2.Worksheets("Données").Range("a65535").End(xlUp).Row 'trouve la derniere ligne ecrite de  la colonne
fin = fin + 1
Wbk2.Worksheets("Données").Cells(fin, 1) = Wbk1.Worksheets("Facture 01").Cells(22, 2)
Wbk2.Worksheets("Données").Cells(fin, 2) = Wbk1.Worksheets("Facture 01").Cells(9, 4)
Wbk2.Worksheets("Données").Cells(fin, 3) = Wbk1.Worksheets("Facture 01").Cells(32, 6)
Wbk2.Worksheets("Données").Cells(fin, 7) = Wbk2.Worksheets("Données").Cells(fin, 3) - Wbk2.Worksheets("Données").Cells(fin - 1, 7)

Dim NomSource$, CheminDest$, NomDest$
Dim VBC As Object

NomSource = "essai facture VBA.xls" 'à adapter
CheminDest = "C:\Documents and Settings\...\" 'à adapter
NomDest = "Essai.xls" 'à adapter

Workbooks(NomSource).SaveAs CheminDest & NomDest

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 'LL
End With

Application.Quit
SendKeys "%O"


End Sub
1
my_name Messages postés 18 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 19 mai 2007 1
25 févr. 2007 à 21:51
salut je peux peut etre t'aider, mais je ne comprend pas ton objectif, il est facile de copier des données d'une table pour les transposer vers une autre mais pourquoi parle tu de supprimer des macros?
0
gus1985 Messages postés 3 Date d'inscription dimanche 25 février 2007 Statut Membre Dernière intervention 25 février 2007 1
25 févr. 2007 à 22:29
Et j'aimerais que copier la feuille dans un nouveau fichier, copier certaines valeurs dans le 3ieme Fichier, supprimer la macro (et son UserForm) dans le nouveau fichier se fasse a partir d'un click dans l'original...
Je ne sais pas si je suis assez clair?
0
ca marche parfaitement comme code, seul 2 choses sont a "mettre en place"

comme précisé sur le lien que tu cite :
Pour utiliser ce code, il vous faudra charger une référence supplémentaire dans VBE.
Sous Excel, appeller l'éditeur :
Alt F11 //Outils/Références…
Cocher l'option :
Microsoft Visual Basic for Applications Extensibility

autre chose qui n'est pas précisé (mais que tu trouve facilement si tu regarde l'aide d'excel lorsque le bug arrive)
il faire tools\macro\security
dans la fenetre qui s'ouvre; selectionner le deuxieme onglet
et cocher la case "trust access to visual basic project" (désolé au taff j'ai que la version english d'excel....)
0