Bonjour,
Est-ce que ton fichier contient la référence suivante :
"Microsoft Visual Basic for Applications Extensibilité 5.3"
dans la fenêtre de l'éditeur de code / barre des menus /
outils / références ?
Si non ? Coche-la.
Si elle est déjà cochée, décoche la, ferme la fenêtre et retourne
la cocher.
"f4crw" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Avant d'exporter un classeur sans ses modules j'utilise la macro suivante
et
qui fonctionnait avec excel 2000, mais qui plante avec 2003 à
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
comment remplacer cette commande ou cette Macro pour 2003 et autre
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
Bonjour,
Est-ce que ton fichier contient la référence suivante :
"Microsoft Visual Basic for Applications Extensibilité 5.3"
dans la fenêtre de l'éditeur de code / barre des menus /
outils / références ?
Si non ? Coche-la.
Si elle est déjà cochée, décoche la, ferme la fenêtre et retourne
la cocher.
"f4crw" <f4crw@free.fr> a écrit dans le message de groupe de discussion :
ewXmv9CxKHA.732@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
Avant d'exporter un classeur sans ses modules j'utilise la macro suivante
et
qui fonctionnait avec excel 2000, mais qui plante avec 2003 à
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
comment remplacer cette commande ou cette Macro pour 2003 et autre
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
Bonjour,
Est-ce que ton fichier contient la référence suivante :
"Microsoft Visual Basic for Applications Extensibilité 5.3"
dans la fenêtre de l'éditeur de code / barre des menus /
outils / références ?
Si non ? Coche-la.
Si elle est déjà cochée, décoche la, ferme la fenêtre et retourne
la cocher.
"f4crw" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Avant d'exporter un classeur sans ses modules j'utilise la macro suivante
et
qui fonctionnait avec excel 2000, mais qui plante avec 2003 à
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
comment remplacer cette commande ou cette Macro pour 2003 et autre
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
bonjour,
par rapport à la réponse de michdenis:
de plus, pour modifier ou supprimer du code, il faut que dans le
classeur excel:
outils/options/sécurité/sécutité des macros/editeur approuvé/faire
confiance au projet visual basic
doit ête coché, sinon l'erreur 1004 apparait aussi
si c'est cela:
michdenis m'avait d'ailleurs fournit un scipt vbs qui coche cette
option fort bien !
(merci encore à lui !)
@+
pirot
bonjour,
par rapport à la réponse de michdenis:
de plus, pour modifier ou supprimer du code, il faut que dans le
classeur excel:
outils/options/sécurité/sécutité des macros/editeur approuvé/faire
confiance au projet visual basic
doit ête coché, sinon l'erreur 1004 apparait aussi
si c'est cela:
michdenis m'avait d'ailleurs fournit un scipt vbs qui coche cette
option fort bien !
(merci encore à lui !)
@+
pirot
bonjour,
par rapport à la réponse de michdenis:
de plus, pour modifier ou supprimer du code, il faut que dans le
classeur excel:
outils/options/sécurité/sécutité des macros/editeur approuvé/faire
confiance au projet visual basic
doit ête coché, sinon l'erreur 1004 apparait aussi
si c'est cela:
michdenis m'avait d'ailleurs fournit un scipt vbs qui coche cette
option fort bien !
(merci encore à lui !)
@+
pirot
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
bonjour,
c'est pirot, mais je me permets de remettre la réponse de michdenis:
donc, je cite michdenis :
--------------------------------------------------------------------------------------------------------------------------
Bonjour
Ce qui suit est un vbscript que tu peux copier dans
l'application NotePad et que tu sauvegardes en t'assurant
que l'extension du fichier est .VBS
Pour modifier le niveau de sécurité et cocher les 2 petites
cases dans la fenêtre de l'éditeur approuvé, il ne te reste
plus qu'à double-cliquer sur le fichier dans l'explorateur
Windows. Le niveau de sécurité est réglé sur le niveau 2.
'Excel Doit être fermé
'------------------------------------------
Dim wsh, objXl
'Pour s'assurer qu'excel n'est pas ouvert.
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Fermer excel pour exécuter ce scr1pt...",64,"La direction"
WScript.Quit
else
Set objxl=createobject("Excel.Application")
Ver = objxl.Version
set objxl = nothing
End If
Err.Clear
Set wsh = WScript.CreateObject("WScript.Shell")
'Niveau de sécurité 2 pour 2ième niveau
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel",2,"REG_DWORD"
if ver >= 10 and ver <= 12 then 'Faire confiance au projet VBA -> 1
pour que la case soit cochée
' -> 0 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM",1,"REG_DWORD"
'Faire confiance au modèle -> 0 pour que la case soit cochée
' -> 1 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles",0,"REG_DWORD"
end if
------------------------------------------------------------------------------------------------
voilà.
@+
pirot
bonjour,
c'est pirot, mais je me permets de remettre la réponse de michdenis:
donc, je cite michdenis :
--------------------------------------------------------------------------------------------------------------------------
Bonjour
Ce qui suit est un vbscript que tu peux copier dans
l'application NotePad et que tu sauvegardes en t'assurant
que l'extension du fichier est .VBS
Pour modifier le niveau de sécurité et cocher les 2 petites
cases dans la fenêtre de l'éditeur approuvé, il ne te reste
plus qu'à double-cliquer sur le fichier dans l'explorateur
Windows. Le niveau de sécurité est réglé sur le niveau 2.
'Excel Doit être fermé
'------------------------------------------
Dim wsh, objXl
'Pour s'assurer qu'excel n'est pas ouvert.
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Fermer excel pour exécuter ce scr1pt...",64,"La direction"
WScript.Quit
else
Set objxl=createobject("Excel.Application")
Ver = objxl.Version
set objxl = nothing
End If
Err.Clear
Set wsh = WScript.CreateObject("WScript.Shell")
'Niveau de sécurité 2 pour 2ième niveau
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel",2,"REG_DWORD"
if ver >= 10 and ver <= 12 then 'Faire confiance au projet VBA -> 1
pour que la case soit cochée
' -> 0 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM",1,"REG_DWORD"
'Faire confiance au modèle -> 0 pour que la case soit cochée
' -> 1 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles",0,"REG_DWORD"
end if
------------------------------------------------------------------------------------------------
voilà.
@+
pirot
bonjour,
c'est pirot, mais je me permets de remettre la réponse de michdenis:
donc, je cite michdenis :
--------------------------------------------------------------------------------------------------------------------------
Bonjour
Ce qui suit est un vbscript que tu peux copier dans
l'application NotePad et que tu sauvegardes en t'assurant
que l'extension du fichier est .VBS
Pour modifier le niveau de sécurité et cocher les 2 petites
cases dans la fenêtre de l'éditeur approuvé, il ne te reste
plus qu'à double-cliquer sur le fichier dans l'explorateur
Windows. Le niveau de sécurité est réglé sur le niveau 2.
'Excel Doit être fermé
'------------------------------------------
Dim wsh, objXl
'Pour s'assurer qu'excel n'est pas ouvert.
On Error Resume Next
Set objXl=GetObject(,"Excel.Application")
If Not IsEmpty(objXl) Then
Msgbox "Fermer excel pour exécuter ce scr1pt...",64,"La direction"
WScript.Quit
else
Set objxl=createobject("Excel.Application")
Ver = objxl.Version
set objxl = nothing
End If
Err.Clear
Set wsh = WScript.CreateObject("WScript.Shell")
'Niveau de sécurité 2 pour 2ième niveau
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityLevel",2,"REG_DWORD"
if ver >= 10 and ver <= 12 then 'Faire confiance au projet VBA -> 1
pour que la case soit cochée
' -> 0 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityaccessVBOM",1,"REG_DWORD"
'Faire confiance au modèle -> 0 pour que la case soit cochée
' -> 1 pour que la case soit décochée
wsh.RegWrite "HKCUSoftwareMicrosoftOffice" & _
Ver & "ExcelSecurityDontTrustInstalledFiles",0,"REG_DWORD"
end if
------------------------------------------------------------------------------------------------
voilà.
@+
pirot
Si tu as ajouté la référence, ta macro fonctionne bien sauf ces
2 lignes de code :
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
La variable "AGarder" doit contenir le nom d'une procédure et non le
nom d'un module. Comme tu n'as pas énoncé ce que tu recherches
à faire, je ne peux pas t'en dire plus.
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
Si tu as ajouté la référence, ta macro fonctionne bien sauf ces
2 lignes de code :
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
La variable "AGarder" doit contenir le nom d'une procédure et non le
nom d'un module. Comme tu n'as pas énoncé ce que tu recherches
à faire, je ne peux pas t'en dire plus.
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW
Si tu as ajouté la référence, ta macro fonctionne bien sauf ces
2 lignes de code :
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
La variable "AGarder" doit contenir le nom d'une procédure et non le
nom d'un module. Comme tu n'as pas énoncé ce que tu recherches
à faire, je ne peux pas t'en dire plus.
Sub ToutDetruireSaufMoi()
Dim AGarder$, MonModule$, liDeb, LiFin, Tmp$
AGarder = "sauve" 'module à garder
MonModule = "MouvementsMenu" 'ou autre
'récupére le texte de cette macro
With ThisWorkbook.VBProject.VBComponents(MonModule).CodeModule
liDeb = .ProcStartLine(AGarder, 0)
LiFin = .ProcCountLines(AGarder, 0)
Tmp = .Lines(liDeb, LiFin)
End With
Dim VBComp, LesComps
Set LesComps = ThisWorkbook.VBProject.VBComponents
For Each VBComp In LesComps
Select Case VBComp.Type
Case 1, 2, 3
If VBComp.Name = MonModule Then
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString Tmp
End With
Else: LesComps.Remove VBComp
End If
Case 600
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines
End Select
Next
End Sub
d'avance merci
F4CRW