a l ouverture de mon fichier excel, une msg box demande a
l utilisateur s il veut la version standard ou la version
elaboree de la feuille excel.
s il veut lka version elaboree, une macro ajoute des
instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut
sauver les modifications. si je reponds oui, la version
elaboree est enregistree. si je reeouvre excel et que je
redemande la version elaboree j obtient les instructions
supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d excel
qui effacerait le code qui a ete rajoute?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent.
C'est possible... tu trouveras ce que tu cherches dans l'aide VBA en cherchant le mot clé VBComponents.
-----Message d'origine----- Bonjour tout le monde,
a l ouverture de mon fichier excel, une msg box demande a
l utilisateur s il veut la version standard ou la version elaboree de la feuille excel. s il veut lka version elaboree, une macro ajoute des instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut sauver les modifications. si je reponds oui, la version elaboree est enregistree. si je reeouvre excel et que je redemande la version elaboree j obtient les instructions supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d excel
qui effacerait le code qui a ete rajoute?
j espere que c est assez clair
merci .
C'est possible... tu trouveras ce que tu cherches dans
l'aide VBA en cherchant le mot clé VBComponents.
-----Message d'origine-----
Bonjour tout le monde,
a l ouverture de mon fichier excel, une msg box demande
a
l utilisateur s il veut la version standard ou la version
elaboree de la feuille excel.
s il veut lka version elaboree, une macro ajoute des
instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut
sauver les modifications. si je reponds oui, la version
elaboree est enregistree. si je reeouvre excel et que je
redemande la version elaboree j obtient les instructions
supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d
excel
C'est possible... tu trouveras ce que tu cherches dans l'aide VBA en cherchant le mot clé VBComponents.
-----Message d'origine----- Bonjour tout le monde,
a l ouverture de mon fichier excel, une msg box demande a
l utilisateur s il veut la version standard ou la version elaboree de la feuille excel. s il veut lka version elaboree, une macro ajoute des instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut sauver les modifications. si je reponds oui, la version elaboree est enregistree. si je reeouvre excel et que je redemande la version elaboree j obtient les instructions supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d excel
qui effacerait le code qui a ete rajoute?
j espere que c est assez clair
merci .
Vincent.
Je n'ai pas testé mais il faudrait adapter le code suivant :
Application.VBE.CodePanes("Nom du module"). _ CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1, et : LigneFin = Application.VBE. _ CodePanes("Nom du module"). _ CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises la méthode 'ProcBodyLine'... Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne peux pas te fournir d'aide bcp plus précise !
Bon courage...
Je n'ai pas testé mais il faudrait adapter le code
suivant :
Application.VBE.CodePanes("Nom du module"). _
CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1,
et : LigneFin = Application.VBE. _
CodePanes("Nom du module"). _
CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises
la méthode 'ProcBodyLine'...
Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne
peux pas te fournir d'aide bcp plus précise !
Je n'ai pas testé mais il faudrait adapter le code suivant :
Application.VBE.CodePanes("Nom du module"). _ CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1, et : LigneFin = Application.VBE. _ CodePanes("Nom du module"). _ CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises la méthode 'ProcBodyLine'... Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne peux pas te fournir d'aide bcp plus précise !
Bon courage...
reno
Ok, merci. je pnse que la premier version suffira amplement (pas de creation de modules) cependant que dois je faire (ou placer ce code ou quelle macro creer) pour que vbe.codepanes s executes quand je ferme la feuille excel?
-----Message d'origine----- Je n'ai pas testé mais il faudrait adapter le code suivant :
Application.VBE.CodePanes("Nom du module"). _ CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1, et : LigneFin = Application.VBE. _ CodePanes("Nom du module"). _ CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises la méthode 'ProcBodyLine'... Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne peux pas te fournir d'aide bcp plus précise !
Bon courage... .
Ok, merci. je pnse que la premier version suffira
amplement (pas de creation de modules)
cependant que dois je faire (ou placer ce code ou quelle
macro creer) pour que vbe.codepanes s executes quand je
ferme la feuille excel?
-----Message d'origine-----
Je n'ai pas testé mais il faudrait adapter le code
suivant :
Application.VBE.CodePanes("Nom du module"). _
CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1,
et : LigneFin = Application.VBE. _
CodePanes("Nom du module"). _
CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises
la méthode 'ProcBodyLine'...
Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne
peux pas te fournir d'aide bcp plus précise !
Ok, merci. je pnse que la premier version suffira amplement (pas de creation de modules) cependant que dois je faire (ou placer ce code ou quelle macro creer) pour que vbe.codepanes s executes quand je ferme la feuille excel?
-----Message d'origine----- Je n'ai pas testé mais il faudrait adapter le code suivant :
Application.VBE.CodePanes("Nom du module"). _ CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1, et : LigneFin = Application.VBE. _ CodePanes("Nom du module"). _ CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises la méthode 'ProcBodyLine'... Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne peux pas te fournir d'aide bcp plus précise !
Bon courage... .
Vincent.
Dans le code de l'objet 'Thisworkbook' (au-dessus des modules), en sélectionnant dans la liste déroulante qui affiche par défaut '(Général)', tu sélectionnes 'Workbook' puis dans le menu déroulant juste à droite de 'Workbook', tu choisis BeforeClose comme événement. Ca te crée un début de code dans lequel il te reste à insérer le reste du code (ça m'intéresse de savoir si ça marche bien ton histoire de suppresion de code !)
-----Message d'origine----- Ok, merci. je pnse que la premier version suffira amplement (pas de creation de modules) cependant que dois je faire (ou placer ce code ou quelle macro creer) pour que vbe.codepanes s executes quand je ferme la feuille excel?
-----Message d'origine----- Je n'ai pas testé mais il faudrait adapter le code suivant :
Application.VBE.CodePanes("Nom du module"). _ CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1, et : LigneFin = Application.VBE. _ CodePanes("Nom du module"). _ CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises
la méthode 'ProcBodyLine'... Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne
peux pas te fournir d'aide bcp plus précise !
Bon courage... .
.
Dans le code de l'objet 'Thisworkbook' (au-dessus des
modules), en sélectionnant dans la liste déroulante qui
affiche par défaut '(Général)', tu sélectionnes 'Workbook'
puis dans le menu déroulant juste à droite de 'Workbook',
tu choisis BeforeClose comme événement.
Ca te crée un début de code dans lequel il te reste à
insérer le reste du code (ça m'intéresse de savoir si ça
marche bien ton histoire de suppresion de code !)
-----Message d'origine-----
Ok, merci. je pnse que la premier version suffira
amplement (pas de creation de modules)
cependant que dois je faire (ou placer ce code ou quelle
macro creer) pour que vbe.codepanes s executes quand je
ferme la feuille excel?
-----Message d'origine-----
Je n'ai pas testé mais il faudrait adapter le code
suivant :
Application.VBE.CodePanes("Nom du module"). _
CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1,
et : LigneFin = Application.VBE. _
CodePanes("Nom du module"). _
CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu
utilises
la méthode 'ProcBodyLine'...
Cela dit, je n'ai jamais utilisé ces méthodes, donc je
ne
Dans le code de l'objet 'Thisworkbook' (au-dessus des modules), en sélectionnant dans la liste déroulante qui affiche par défaut '(Général)', tu sélectionnes 'Workbook' puis dans le menu déroulant juste à droite de 'Workbook', tu choisis BeforeClose comme événement. Ca te crée un début de code dans lequel il te reste à insérer le reste du code (ça m'intéresse de savoir si ça marche bien ton histoire de suppresion de code !)
-----Message d'origine----- Ok, merci. je pnse que la premier version suffira amplement (pas de creation de modules) cependant que dois je faire (ou placer ce code ou quelle macro creer) pour que vbe.codepanes s executes quand je ferme la feuille excel?
-----Message d'origine----- Je n'ai pas testé mais il faudrait adapter le code suivant :
Application.VBE.CodePanes("Nom du module"). _ CodeModule.DeleteLines(LigneDépart, LigneFin)
Si ta macro crée un module, LigneDépart = 1, et : LigneFin = Application.VBE. _ CodePanes("Nom du module"). _ CodeModule.CountOfLines
Si ta macro crée une procédure, il faudra que tu utilises
la méthode 'ProcBodyLine'... Cela dit, je n'ai jamais utilisé ces méthodes, donc je ne
peux pas te fournir d'aide bcp plus précise !
Bon courage... .
.
Hervé
Salut Reno, Si j'ai bien compris, tu voudrais supprimer certaines lignes qui ont été ajouter par "InsertLines". Une idée, Dans la proc qui insère tes lignes, ajoute un mot qui va te servir de repère. Il ne te suffiras plus qu'à le rechercher et supprimer le nombres de lignes que tu insère (tu doit le connaître !). Un exemple pour tester, exécute la proc "InsertMacro" puis "SupprimeCode". Si tu veux que ta macro s'exécute à la fermeture, à mettre dans le module du ThisWorkbook : Private Sub Workbook_BeforeClose(Cancel As Boolean) SupprimeCode End Sub
A mettre dans un module standard : Sub SupprimeCode()
Dim Module As Object Dim I As Integer Dim Pos As Integer Dim Proc As String Dim Repere As String Dim NomMod As String
'Nom de la proc Proc = "MaMacro" 'nom du module NomMod = "MonModule"
'repère inséré juste avant les lignes de code 'ajouter à la macro par "InsertLines" et qui 'va servir de point de départ pour la 'suppression des lignes Repere = "'Repere" 'repère mis en commantaire
Set Module = ThisWorkbook.VBProject _ .VBComponents(NomMod)
With Module.CodeModule For I = .ProcStartLine(Proc, 0) To .CountOfLines Pos = InStr(.Lines(I, 1), Repere) If Pos <> 0 Then '5 lignes supprimées .DeleteLines I, 5 Exit For End If Next I End With
Set Module = Nothing End Sub
Private Sub InsertMacro() Dim Module As Object Dim I As Integer Dim Lgn As String
Lgn = "Private Sub MaMacro()" & vbCrLf Lgn = Lgn & "'Ligne 1" & vbCrLf Lgn = Lgn & "'Ligne 2" & vbCrLf Lgn = Lgn & "'Ligne 3" & vbCrLf Lgn = Lgn & "'à partir de la ligne ci-dessous" & vbCrLf Lgn = Lgn & "'5 lignes vont être supprimées" & vbCrLf Lgn = Lgn & "'car le mot pour indiquer le début" & vbCrLf Lgn = Lgn & "'de la plage s'y trouve" & vbCrLf Lgn = Lgn & "'Repere" & vbCrLf Lgn = Lgn & "'2ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'3ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'4ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'5ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'Ligne 4" & vbCrLf Lgn = Lgn & "End Sub"
Set Module = ThisWorkbook.VBProject _ .VBComponents("MonModule") With Module.CodeModule .InsertLines .CountOfLines + 1, Lgn End With Set Module = Nothing End Sub
Hervé.
"reno" a écrit dans le message news: 077801c35d96$be70b1c0$
Bonjour tout le monde,
a l ouverture de mon fichier excel, une msg box demande a l utilisateur s il veut la version standard ou la version elaboree de la feuille excel. s il veut lka version elaboree, une macro ajoute des instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut sauver les modifications. si je reponds oui, la version elaboree est enregistree. si je reeouvre excel et que je redemande la version elaboree j obtient les instructions supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d excel qui effacerait le code qui a ete rajoute?
j espere que c est assez clair
merci
Salut Reno,
Si j'ai bien compris, tu voudrais supprimer certaines lignes qui ont été
ajouter par "InsertLines". Une idée, Dans la proc qui insère tes lignes,
ajoute un mot qui va te servir de repère. Il ne te suffiras plus qu'à le
rechercher et supprimer le nombres de lignes que tu insère (tu doit le
connaître !). Un exemple pour tester, exécute la proc "InsertMacro" puis
"SupprimeCode".
Si tu veux que ta macro s'exécute à la fermeture, à mettre dans le module
du ThisWorkbook :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
SupprimeCode
End Sub
A mettre dans un module standard :
Sub SupprimeCode()
Dim Module As Object
Dim I As Integer
Dim Pos As Integer
Dim Proc As String
Dim Repere As String
Dim NomMod As String
'Nom de la proc
Proc = "MaMacro"
'nom du module
NomMod = "MonModule"
'repère inséré juste avant les lignes de code
'ajouter à la macro par "InsertLines" et qui
'va servir de point de départ pour la
'suppression des lignes
Repere = "'Repere" 'repère mis en commantaire
Set Module = ThisWorkbook.VBProject _
.VBComponents(NomMod)
With Module.CodeModule
For I = .ProcStartLine(Proc, 0) To .CountOfLines
Pos = InStr(.Lines(I, 1), Repere)
If Pos <> 0 Then
'5 lignes supprimées
.DeleteLines I, 5
Exit For
End If
Next I
End With
Set Module = Nothing
End Sub
Private Sub InsertMacro()
Dim Module As Object
Dim I As Integer
Dim Lgn As String
Lgn = "Private Sub MaMacro()" & vbCrLf
Lgn = Lgn & "'Ligne 1" & vbCrLf
Lgn = Lgn & "'Ligne 2" & vbCrLf
Lgn = Lgn & "'Ligne 3" & vbCrLf
Lgn = Lgn & "'à partir de la ligne ci-dessous" & vbCrLf
Lgn = Lgn & "'5 lignes vont être supprimées" & vbCrLf
Lgn = Lgn & "'car le mot pour indiquer le début" & vbCrLf
Lgn = Lgn & "'de la plage s'y trouve" & vbCrLf
Lgn = Lgn & "'Repere" & vbCrLf
Lgn = Lgn & "'2ème ligne supprimée !" & vbCrLf
Lgn = Lgn & "'3ème ligne supprimée !" & vbCrLf
Lgn = Lgn & "'4ème ligne supprimée !" & vbCrLf
Lgn = Lgn & "'5ème ligne supprimée !" & vbCrLf
Lgn = Lgn & "'Ligne 4" & vbCrLf
Lgn = Lgn & "End Sub"
Set Module = ThisWorkbook.VBProject _
.VBComponents("MonModule")
With Module.CodeModule
.InsertLines .CountOfLines + 1, Lgn
End With
Set Module = Nothing
End Sub
Hervé.
"reno" <reno83400@yahoo.fr> a écrit dans le message news:
077801c35d96$be70b1c0$a601280a@phx.gbl...
Bonjour tout le monde,
a l ouverture de mon fichier excel, une msg box demande a
l utilisateur s il veut la version standard ou la version
elaboree de la feuille excel.
s il veut lka version elaboree, une macro ajoute des
instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut
sauver les modifications. si je reponds oui, la version
elaboree est enregistree. si je reeouvre excel et que je
redemande la version elaboree j obtient les instructions
supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d excel
qui effacerait le code qui a ete rajoute?
Salut Reno, Si j'ai bien compris, tu voudrais supprimer certaines lignes qui ont été ajouter par "InsertLines". Une idée, Dans la proc qui insère tes lignes, ajoute un mot qui va te servir de repère. Il ne te suffiras plus qu'à le rechercher et supprimer le nombres de lignes que tu insère (tu doit le connaître !). Un exemple pour tester, exécute la proc "InsertMacro" puis "SupprimeCode". Si tu veux que ta macro s'exécute à la fermeture, à mettre dans le module du ThisWorkbook : Private Sub Workbook_BeforeClose(Cancel As Boolean) SupprimeCode End Sub
A mettre dans un module standard : Sub SupprimeCode()
Dim Module As Object Dim I As Integer Dim Pos As Integer Dim Proc As String Dim Repere As String Dim NomMod As String
'Nom de la proc Proc = "MaMacro" 'nom du module NomMod = "MonModule"
'repère inséré juste avant les lignes de code 'ajouter à la macro par "InsertLines" et qui 'va servir de point de départ pour la 'suppression des lignes Repere = "'Repere" 'repère mis en commantaire
Set Module = ThisWorkbook.VBProject _ .VBComponents(NomMod)
With Module.CodeModule For I = .ProcStartLine(Proc, 0) To .CountOfLines Pos = InStr(.Lines(I, 1), Repere) If Pos <> 0 Then '5 lignes supprimées .DeleteLines I, 5 Exit For End If Next I End With
Set Module = Nothing End Sub
Private Sub InsertMacro() Dim Module As Object Dim I As Integer Dim Lgn As String
Lgn = "Private Sub MaMacro()" & vbCrLf Lgn = Lgn & "'Ligne 1" & vbCrLf Lgn = Lgn & "'Ligne 2" & vbCrLf Lgn = Lgn & "'Ligne 3" & vbCrLf Lgn = Lgn & "'à partir de la ligne ci-dessous" & vbCrLf Lgn = Lgn & "'5 lignes vont être supprimées" & vbCrLf Lgn = Lgn & "'car le mot pour indiquer le début" & vbCrLf Lgn = Lgn & "'de la plage s'y trouve" & vbCrLf Lgn = Lgn & "'Repere" & vbCrLf Lgn = Lgn & "'2ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'3ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'4ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'5ème ligne supprimée !" & vbCrLf Lgn = Lgn & "'Ligne 4" & vbCrLf Lgn = Lgn & "End Sub"
Set Module = ThisWorkbook.VBProject _ .VBComponents("MonModule") With Module.CodeModule .InsertLines .CountOfLines + 1, Lgn End With Set Module = Nothing End Sub
Hervé.
"reno" a écrit dans le message news: 077801c35d96$be70b1c0$
Bonjour tout le monde,
a l ouverture de mon fichier excel, une msg box demande a l utilisateur s il veut la version standard ou la version elaboree de la feuille excel. s il veut lka version elaboree, une macro ajoute des instructions a une autre macro.
lorsque l on ferme le fichier, excel demande si lon veut sauver les modifications. si je reponds oui, la version elaboree est enregistree. si je reeouvre excel et que je redemande la version elaboree j obtient les instructions supplementaires de la macro en double, puis en triple....
est il possible d inserer une macro a la fermeture d excel qui effacerait le code qui a ete rajoute?