OVH Cloud OVH Cloud

VBA.Problème de suppression de codes VBA

13 réponses
Avatar
HD
Bonjour,

J'ai une fonction qui fonctionne très bien sous un poste en Windows 98 avec
Excel 97 mais qui plante sous un poste en Windows XP Pro avec un Excel
2003...

Ma fonction détruit le code VBA des feuilles spécifiées. J'utilise pour celà
VBProject. J'ai bien installé la référence à "Microsoft Visual Basic for
Applications Extensibility 5.3" mais pourtant j'ai constamment le message
d'erreur 91 ("Varialble objet ou variable de bloc With non définie").

Voici mon code:

Function EffaceCodeFeuille(NomFeuille As String)
On Error Resume Next
Dim ret As Integer
Err.Clear
With
ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(NomFeuille).Code
Name).CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
If Err.Number <> 0 Then ret = MsgBox("EffaceCodeFeuille(" & NomFeuille &
"): " & Err.Number & " = " & Err.Description, vbExclamation, "")
End Function


Merci d'avance pour votre aide.
--
@+
HD

10 réponses

1 2
Avatar
anonymousA
bonjour,

l'idée serait peut-être de dire où il se plante, auquel cas il faudrait
enlever la gestion d'erreur pour connaitre l'instruction qui le froisse.
après , il sera toujours temps de se demander pourquoi, tu ne crois pas ?.

A+


Bonjour,

J'ai une fonction qui fonctionne très bien sous un poste en Windows 98 avec
Excel 97 mais qui plante sous un poste en Windows XP Pro avec un Excel
2003...

Ma fonction détruit le code VBA des feuilles spécifiées. J'utilise pour celà
VBProject. J'ai bien installé la référence à "Microsoft Visual Basic for
Applications Extensibility 5.3" mais pourtant j'ai constamment le message
d'erreur 91 ("Varialble objet ou variable de bloc With non définie").

Voici mon code:

Function EffaceCodeFeuille(NomFeuille As String)
On Error Resume Next
Dim ret As Integer
Err.Clear
With
ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(NomFeuille).Code
Name).CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
If Err.Number <> 0 Then ret = MsgBox("EffaceCodeFeuille(" & NomFeuille &
"): " & Err.Number & " = " & Err.Description, vbExclamation, "")
End Function


Merci d'avance pour votre aide.
--
@+
HD





Avatar
HD
l'idée serait peut-être de dire où il se plante,
auquel cas il faudrait enlever la gestion d'erreur
pour connaitre l'instruction qui le froisse. après,
il sera toujours temps de se demander pourquoi,
tu ne crois pas ?.


Les erreurs se produisent sur le:
.DeleteLines 1,CountOfLines
Et sur la ligne:
.CodePane.Window.Close

Alors que sur un poste Win98 sous Excel97 il n'y a pas d'erreur. C'est comme
si Excel2003 ne gérait pas le VBProject de la même manière...
--
@+
HD

Avatar
anonymousA
ben dans le code en tant que tel, je ne vois rien de particulier qui puisse
l'expliquer. J'ai vérifié que pour 2003, même si je ne l'ai pas (mais j'ai
des programmes qui tournent sous 2003 ) que la syntaxe est correcte.
La seule idée qui me vienne à l'esprit ( mais que je ne peux vérifier puis
que pas 2003) c'est l'histoire de la sécurité sur les macros dans 2003 qui
est différente de la version que je pratique ( un truc du genre Accepter les
macros, mais que je ne connais que par lecture ).
Désolé de ne pouvoir t'en dire + mais je n'ai pas les moyens de tester.

A+



l'idée serait peut-être de dire où il se plante,
auquel cas il faudrait enlever la gestion d'erreur
pour connaitre l'instruction qui le froisse. après,
il sera toujours temps de se demander pourquoi,
tu ne crois pas ?.


Les erreurs se produisent sur le:
.DeleteLines 1,CountOfLines
Et sur la ligne:
..CodePane.Window.Close

Alors que sur un poste Win98 sous Excel97 il n'y a pas d'erreur. C'est comme
si Excel2003 ne gérait pas le VBProject de la même manière...
--
@+
HD






Avatar
twinley
Bonjour,

Et si tu le testes depuis un module mais pas en fonction, juste en sub ?
Ca tourne ?

à+twinley

anonymousA wrote:
ben dans le code en tant que tel, je ne vois rien de particulier qui puisse
l'expliquer. J'ai vérifié que pour 2003, même si je ne l'ai pas (mais j'ai
des programmes qui tournent sous 2003 ) que la syntaxe est correcte.
La seule idée qui me vienne à l'esprit ( mais que je ne peux vérifier puis
que pas 2003) c'est l'histoire de la sécurité sur les macros dans 2003 qui
est différente de la version que je pratique ( un truc du genre Accepter les
macros, mais que je ne connais que par lecture ).
Désolé de ne pouvoir t'en dire + mais je n'ai pas les moyens de tester.

A+




l'idée serait peut-être de dire où il se plante,
auquel cas il faudrait enlever la gestion d'erreur
pour connaitre l'instruction qui le froisse. après,
il sera toujours temps de se demander pourquoi,
tu ne crois pas ?.


Les erreurs se produisent sur le:
.DeleteLines 1,CountOfLines
Et sur la ligne:
..CodePane.Window.Close

Alors que sur un poste Win98 sous Excel97 il n'y a pas d'erreur. C'est comme
si Excel2003 ne gérait pas le VBProject de la même manière...
--
@+
HD








Avatar
anonymousA
je ne vois pas bien la différence, Twinley.

A+

Bonjour,

Et si tu le testes depuis un module mais pas en fonction, juste en sub ?
Ca tourne ?

à+twinley

anonymousA wrote:

ben dans le code en tant que tel, je ne vois rien de particulier qui
puisse l'expliquer. J'ai vérifié que pour 2003, même si je ne l'ai pas
(mais j'ai des programmes qui tournent sous 2003 ) que la syntaxe est
correcte.
La seule idée qui me vienne à l'esprit ( mais que je ne peux vérifier
puis que pas 2003) c'est l'histoire de la sécurité sur les macros dans
2003 qui est différente de la version que je pratique ( un truc du
genre Accepter les macros, mais que je ne connais que par lecture ).
Désolé de ne pouvoir t'en dire + mais je n'ai pas les moyens de tester.
A+




l'idée serait peut-être de dire où il se plante,
auquel cas il faudrait enlever la gestion d'erreur
pour connaitre l'instruction qui le froisse. après,
il sera toujours temps de se demander pourquoi,
tu ne crois pas ?.



Les erreurs se produisent sur le:
.DeleteLines 1,CountOfLines
Et sur la ligne:
..CodePane.Window.Close

Alors que sur un poste Win98 sous Excel97 il n'y a pas d'erreur.
C'est comme
si Excel2003 ne gérait pas le VBProject de la même manière...
--
@+
HD










Avatar
twinley
Je pensais que c'était plus souple, qu'il y aurait moins d'erreur. Je
posais la question à HD, je me suis trompé de fil.

:-[

à+twinley

anonymousA wrote:
je ne vois pas bien la différence, Twinley.

A+


Bonjour,

Et si tu le testes depuis un module mais pas en fonction, juste en sub ?
Ca tourne ?

à+twinley

anonymousA wrote:

ben dans le code en tant que tel, je ne vois rien de particulier qui
puisse l'expliquer. J'ai vérifié que pour 2003, même si je ne l'ai
pas (mais j'ai des programmes qui tournent sous 2003 ) que la syntaxe
est correcte.
La seule idée qui me vienne à l'esprit ( mais que je ne peux vérifier
puis que pas 2003) c'est l'histoire de la sécurité sur les macros
dans 2003 qui est différente de la version que je pratique ( un truc
du genre Accepter les macros, mais que je ne connais que par lecture ).
Désolé de ne pouvoir t'en dire + mais je n'ai pas les moyens de tester.
A+




l'idée serait peut-être de dire où il se plante,
auquel cas il faudrait enlever la gestion d'erreur
pour connaitre l'instruction qui le froisse. après,
il sera toujours temps de se demander pourquoi,
tu ne crois pas ?.




Les erreurs se produisent sur le:
.DeleteLines 1,CountOfLines
Et sur la ligne:
..CodePane.Window.Close

Alors que sur un poste Win98 sous Excel97 il n'y a pas d'erreur.
C'est comme
si Excel2003 ne gérait pas le VBProject de la même manière...
--
@+
HD












Avatar
Alain CROS
Bonjour.

A méditer pendant tes vacances ...

Faire confiance au projet Visual Basic

Dans Outils Macro Sécurité... Sources fiables

Alain CROS

"anonymousA" a écrit dans le message de news:

| ben dans le code en tant que tel, je ne vois rien de particulier qui puisse
| l'expliquer. J'ai vérifié que pour 2003, même si je ne l'ai pas (mais j'ai
| des programmes qui tournent sous 2003 ) que la syntaxe est correcte.
| La seule idée qui me vienne à l'esprit ( mais que je ne peux vérifier puis
| que pas 2003) c'est l'histoire de la sécurité sur les macros dans 2003 qui
| est différente de la version que je pratique ( un truc du genre Accepter les
| macros, mais que je ne connais que par lecture ).
| Désolé de ne pouvoir t'en dire + mais je n'ai pas les moyens de tester.
|
| A+
Avatar
anonymousA
bonjour, Alain,

je veux bien méditer, y.c en vacances mais comme je n'ai pas l'intention
de passer à Excel 2003, il ne me restait plus qu'à espérer qu'un
contributeur avisé qui le possèdait ou en avait l'usage , réponde , ce
qui fut fait .

A+

Bonjour.

A méditer pendant tes vacances ...

Faire confiance au projet Visual Basic

Dans Outils Macro Sécurité... Sources fiables

Alain CROS

"anonymousA" a écrit dans le message de news:

| ben dans le code en tant que tel, je ne vois rien de particulier qui puisse
| l'expliquer. J'ai vérifié que pour 2003, même si je ne l'ai pas (mais j'ai
| des programmes qui tournent sous 2003 ) que la syntaxe est correcte.
| La seule idée qui me vienne à l'esprit ( mais que je ne peux vérifier puis
| que pas 2003) c'est l'histoire de la sécurité sur les macros dans 2003 qui
| est différente de la version que je pratique ( un truc du genre Accepter les
| macros, mais que je ne connais que par lecture ).
| Désolé de ne pouvoir t'en dire + mais je n'ai pas les moyens de tester.
|
| A+




Avatar
HD
La seule idée qui me vienne à l'esprit
c'est l'histoire de la sécurité sur les
macros dans 2003 qui est différente
de la version que je pratique


J'y avais pensé et j'ai testé la fonction en baissant le niveau de sécurité
au minimum mais rien n'y fait...
--
@+
HD

Avatar
HD
Depuis que l'on utilise des postes avec Excel 2003 et Windows XP Pro, j'ai
de nombreuses macros qui boguent... alors qu'avec Excel 97 elles tournaient
comme des horloges !!!

--
@+
HD
1 2