Enregister nouveau classeur sans les Macros de l'original

X

xavier

Guest
Bonsoir à tous et à toutes,
cela ne fait pas une semaine que je connais ce site, et voilà que déjà, je fais appelle à vous.
Mon soucis est le suivant : j'utilise un classeur .xls pour entrer quelques données. Une fois ces données saisies, quelques macros simples ( comme moi ! mon niveau !) font leur travail et j'enregistre le résultat sous un autre nom de classeur (issu des macros). Les macros sont enregistrées pour se lancer à l'ouverture du classeur avec "thisworkbook_open". Comment faire pour qu'en lançant le nouveau classeur, les Macros du classeur d'origine ne se lancent pas ?
Merci d'avance

PS: je n'ai pas encore eu le temps de lire toute la base de donnée, aussi, peut-être le sujet est-il dèjà traité ailleurs et un lien me suffira pour l'instand si besoin je reviendrai!!!
 
R

Robert

Guest
Bonsoir Xavier, bonsoir le forum,

Copie la macro ci-dessous dans le fichier original. Dans le code, remplace les 4 points d'inerrogation (????) par le nom de ton fichier (pour éviter d'effacer les codes de l'original). Sauve le fichier.

Ensuite, quand tu l'auras enregistré sous, tu pourras lancer cette macro qui va effacer les codes de ThisWorkbook et le Module1.

Sub codefface()
If ThisWorkbook.Name = "????.xls" Then Exit Sub 'à adapter à ton fichier
Dim x As Long 'déclare la variable x
Dim a As Variant 'déclare la variable a
'définit la varaible x (nombre de lignes du code VBA)
x = ActiveWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule.CountOfLines
'définit la variable a
Set a = ActiveWorkbook.VBProject.VBComponents("Module1")
'supprime les lignes de code VBA dans la copie de sauvegarde
ActiveWorkbook.VBProject.VBComponents("Thisworkbook").CodeModule.DeleteLines 1, x
ActiveWorkbook.VBProject.VBComponents.Remove (a)
ThisWorkbook.Save 'sauve
End Sub

À plus,

Robert
 
X

xavier

Guest
Bonsoir Robert et le Forum,
si j'ai bien compris (je suis nouveau en VBA) ta macro, dans le classeur d'origine rien ne se passe, par contre dans le nouveau, crée par l'origine, toutes les lignes de code du module 1 puis le module lui-même sont effacés?
Si c'est cela, comment faire qu'à l'ouverture du classeur j'aille dans le "Module 1" car pour l'instant je reste dans "Thisworkbook_open"?
En tout cas déjà grand merci.Si Si !!!
on trouve tout cela dans l'aide ( F1) de VBA-Excel ? Comment ?
Si je peux trouver l'info, je ne suis pas contre...mais il est vrai que ce forum est très convivial .
@plus
Xav
 
R

Robert

Guest
Re Xavier, Salut le forum,

Pour lancer la macro tu peux faire [Alt]+[F8], la sélectionner et cliquer sur [Exécuter]. Tu peux aussi, cliquer sur [Options...] et lui attribuer un raccourci clavier qui te permettras de la lancer par un [Ctrl]+le caractère que tu auras choisi.
Comme tu le disais, il ne se passera rien dans le classeur original. C'est pourquoi je n'est pas écrit le code dans l'événement Open du Composent ThisWorkbook qui, comme son nom l'indique, est une macro automatique qui s'exécute à l'ouverture du classeur. Or le code dit que si le classeur s'apelle : "original", alors il sort de la procédure... Donc cela ne servirait à rien... Le but est de lancer la macro uniquement sur la copie de l'original.

Sinon l'aide VBA est un bon outil même si au début il est difficile de s'y repérer. J'utilise aussi un bouquin sur le VBA d'Excel, mais je t'avoue que c'est grâce à ce forum (et deux boîtes de cirage ! Deux !!) que j'ai le plus progressé en VBA.

Bon courage, à plus,

Robert
 

Discussions similaires

Statistiques des forums

Discussions
312 779
Messages
2 092 045
Membres
105 167
dernier inscrit
JulJon2004