Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur d'execution 9

11 réponses
Avatar
Combory
Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de remettre
les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver mon
environnement normal à la fermeture de ce fichier.

Merci

10 réponses

1 2
Avatar
anonymousA
bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde du côté du
tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle entre le
1er élément du TabBO et les autres, autrement dit pourquoi ne pas écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+


Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de remettre
les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver mon
environnement normal à la fermeture de ce fichier.

Merci


Avatar
Combory
Merci pour ta réponse,

je tiens à préciser que ce code n'est pas de moi (de mémoire, je l'ai trouvé
sur excelabo, merci à son auteur)

1°) si je fais la modif que tu proposes j'ai une autre erreur d'éxécution et
je crois que c'est parce que la commandBars(0) n'existe pas (je découvre à
taton) (dommage, c'était bien vu)

2°) est-il possible que cette erreur ne survienne que lorsque je fais des
modifs dans VBA. Je m'explique : ma Sub est appelée sur activate/desactivate
de thisworbook pour que si l'utilisateur a un autre fichier ouvert et qu'il
jongle entre les deux, il puisse utiliser son environnement même si mon
fichier est ouvert. Je me disais donc que des menus VBA vers les menus Excel,
il pouvait y avoir des interférences ( ce qui expliquerait que l'erreur n'est
pas systématique)

Merci


bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde du côté du
tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle entre le
1er élément du TabBO et les autres, autrement dit pourquoi ne pas écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+


Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de remettre
les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver mon
environnement normal à la fermeture de ce fichier.

Merci




Avatar
anonymousA
re,

1) je ne pense pas que l'explication que tu me donnes soit juste. En
effet, tel que je comprends le programme, on va chercher dans les
éléments d'un tableau ( déclaré comme Array vraisemblablement quoique
d'autres possibilités soient offertes) les numéros des commandbars.
Or un array sauf s'il a été explicitementd éclaré comme de base 1 est
par défaut de base 0. Donc TabBO(0) vaut quelque chose. Or d'evidence 0
étant l'indice de départ , Lbound(TabBO) doit renvoyer 0 et si TabBO(0)
est un numéro valide ce qu'il parait être puisque l'instruction
Application.CommandBars(tabBO(0)).Enabled = OnOff existe dans ton
programme, il ne devrait pas y avoir plus de difficulté que ça à
effectuer une boucle de Lbiound à Ubound. Ceci dit, il me manque
peut-être une info.

2)Le fait de gérer la validation/invalidation de menus par les
evenements Activate et Deactivate de Thisworkbook n'est pas de nature à
priori à poser problème sauf si le code qui est sous-jacent de ces
evenements pose problème lui-même.Pour se prononcer, il faudrait en
avoir le contenu.

A+

Merci pour ta réponse,

je tiens à préciser que ce code n'est pas de moi (de mémoire, je l'ai trouvé
sur excelabo, merci à son auteur)

1°) si je fais la modif que tu proposes j'ai une autre erreur d'éxécution et
je crois que c'est parce que la commandBars(0) n'existe pas (je découvre à
taton) (dommage, c'était bien vu)

2°) est-il possible que cette erreur ne survienne que lorsque je fais des
modifs dans VBA. Je m'explique : ma Sub est appelée sur activate/desactivate
de thisworbook pour que si l'utilisateur a un autre fichier ouvert et qu'il
jongle entre les deux, il puisse utiliser son environnement même si mon
fichier est ouvert. Je me disais donc que des menus VBA vers les menus Excel,
il pouvait y avoir des interférences ( ce qui expliquerait que l'erreur n'est
pas systématique)

Merci



bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde du côté du
tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle entre le
1er élément du TabBO et les autres, autrement dit pourquoi ne pas écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+



Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de remettre
les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver mon
environnement normal à la fermeture de ce fichier.

Merci






Avatar
Combory
bonsoir,

mille merci de suivre un pauvre novice comme moi.

voilà j'ai retrouvé où j'ai eu ce code. c'est le classeur fs.excelstate.
http://www.excelabo.net/moteurs/multixl.php?pge=2&f_motºrre

la seule chose que j'ai modifié dans ce code, c'est d'utilisé l'activate au
lieu du open et deactivate au lieu de beforeclose.
j'avoue ne pas tout comprendre à ton 1), ceci dit l'erreur est immédiate et
systématique avec cette modif.

pour le 2), je pourrais te faire parvenir mon classeur, mais je ne sais pas
comment faire et en plus l'erreur n'est pas systématique
il y a juste que quand ça se produit, les utilisateurs sont un peu ...
énervé

encore une fois merci du temps que tu me consacres
A+

"anonymousA" a écrit dans le message de news:
42e131fe$0$25042$
re,

1) je ne pense pas que l'explication que tu me donnes soit juste. En
effet, tel que je comprends le programme, on va chercher dans les éléments
d'un tableau ( déclaré comme Array vraisemblablement quoique d'autres
possibilités soient offertes) les numéros des commandbars.
Or un array sauf s'il a été explicitementd éclaré comme de base 1 est par
défaut de base 0. Donc TabBO(0) vaut quelque chose. Or d'evidence 0 étant
l'indice de départ , Lbound(TabBO) doit renvoyer 0 et si TabBO(0) est un
numéro valide ce qu'il parait être puisque l'instruction
Application.CommandBars(tabBO(0)).Enabled = OnOff existe dans ton
programme, il ne devrait pas y avoir plus de difficulté que ça à effectuer
une boucle de Lbiound à Ubound. Ceci dit, il me manque peut-être une info.

2)Le fait de gérer la validation/invalidation de menus par les evenements
Activate et Deactivate de Thisworkbook n'est pas de nature à priori à
poser problème sauf si le code qui est sous-jacent de ces evenements pose
problème lui-même.Pour se prononcer, il faudrait en avoir le contenu.

A+

Merci pour ta réponse,

je tiens à préciser que ce code n'est pas de moi (de mémoire, je l'ai
trouvé sur excelabo, merci à son auteur)

1°) si je fais la modif que tu proposes j'ai une autre erreur d'éxécution
et je crois que c'est parce que la commandBars(0) n'existe pas (je
découvre à taton) (dommage, c'était bien vu)

2°) est-il possible que cette erreur ne survienne que lorsque je fais des
modifs dans VBA. Je m'explique : ma Sub est appelée sur
activate/desactivate de thisworbook pour que si l'utilisateur a un autre
fichier ouvert et qu'il jongle entre les deux, il puisse utiliser son
environnement même si mon fichier est ouvert. Je me disais donc que des
menus VBA vers les menus Excel, il pouvait y avoir des interférences ( ce
qui expliquerait que l'erreur n'est pas systématique)

Merci



bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde du côté
du tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle entre
le 1er élément du TabBO et les autres, autrement dit pourquoi ne pas
écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+



Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de
remettre les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver
mon environnement normal à la fermeture de ce fichier.

Merci








Avatar
anonymousA
si tu veux que je regarde ton classeur, envoie le à
mais fais le pour que j'ai le temps de le regarder
avant Lundi soir car après je fais comme beaucoup, je pars en vacances
et je vais , sinon oublier excel , mais oublier le forum pendant 3 semaines.

A+

bonsoir,

mille merci de suivre un pauvre novice comme moi.

voilà j'ai retrouvé où j'ai eu ce code. c'est le classeur fs.excelstate.
http://www.excelabo.net/moteurs/multixl.php?pge=2&f_motºrre

la seule chose que j'ai modifié dans ce code, c'est d'utilisé l'activate au
lieu du open et deactivate au lieu de beforeclose.
j'avoue ne pas tout comprendre à ton 1), ceci dit l'erreur est immédiate et
systématique avec cette modif.

pour le 2), je pourrais te faire parvenir mon classeur, mais je ne sais pas
comment faire et en plus l'erreur n'est pas systématique
il y a juste que quand ça se produit, les utilisateurs sont un peu ...
énervé

encore une fois merci du temps que tu me consacres
A+

"anonymousA" a écrit dans le message de news:
42e131fe$0$25042$

re,

1) je ne pense pas que l'explication que tu me donnes soit juste. En
effet, tel que je comprends le programme, on va chercher dans les éléments
d'un tableau ( déclaré comme Array vraisemblablement quoique d'autres
possibilités soient offertes) les numéros des commandbars.
Or un array sauf s'il a été explicitementd éclaré comme de base 1 est par
défaut de base 0. Donc TabBO(0) vaut quelque chose. Or d'evidence 0 étant
l'indice de départ , Lbound(TabBO) doit renvoyer 0 et si TabBO(0) est un
numéro valide ce qu'il parait être puisque l'instruction
Application.CommandBars(tabBO(0)).Enabled = OnOff existe dans ton
programme, il ne devrait pas y avoir plus de difficulté que ça à effectuer
une boucle de Lbiound à Ubound. Ceci dit, il me manque peut-être une info.

2)Le fait de gérer la validation/invalidation de menus par les evenements
Activate et Deactivate de Thisworkbook n'est pas de nature à priori à
poser problème sauf si le code qui est sous-jacent de ces evenements pose
problème lui-même.Pour se prononcer, il faudrait en avoir le contenu.

A+


Merci pour ta réponse,

je tiens à préciser que ce code n'est pas de moi (de mémoire, je l'ai
trouvé sur excelabo, merci à son auteur)

1°) si je fais la modif que tu proposes j'ai une autre erreur d'éxécution
et je crois que c'est parce que la commandBars(0) n'existe pas (je
découvre à taton) (dommage, c'était bien vu)

2°) est-il possible que cette erreur ne survienne que lorsque je fais des
modifs dans VBA. Je m'explique : ma Sub est appelée sur
activate/desactivate de thisworbook pour que si l'utilisateur a un autre
fichier ouvert et qu'il jongle entre les deux, il puisse utiliser son
environnement même si mon fichier est ouvert. Je me disais donc que des
menus VBA vers les menus Excel, il pouvait y avoir des interférences ( ce
qui expliquerait que l'erreur n'est pas systématique)

Merci




bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde du côté
du tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle entre
le 1er élément du TabBO et les autres, autrement dit pourquoi ne pas
écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+




Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de
remettre les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver
mon environnement normal à la fermeture de ce fichier.

Merci













Avatar
Patrick BASTARD
Bonjour, *anonymousA*


... avant Lundi soir car après je fais comme beaucoup, je pars
en vacances


Bonnes vacances, cher contributeur.
Sea,sex and sun...
;-)

et je vais...oublier le forum pendant 3 semaines.


Et reviens vite...
Tu nous manques déjà !

PS : tu n'es pas obligé d'envoyer une carte postale à tous ceux que tu as
dépannés cette année. Rassuré ?

--
Bien amicordialement,
P. Bastard

Avatar
anonymousA
Merci. pour le sea and sex c'est surement possible. pour le sun, en
Bretagne dont par ailleurs je suis originaire , ca sera surement plus
aléatoire. J'ai bien l'impression que la-bas, Dieu fait souvent tourner
la fonction Excel Alea ou worksheet.function.Rand .
Je suis bien sur cependant que des tas d'autres contributeurs , et non
des moindres , vont rentrer.

Cordialement,


Bonjour, *anonymousA*



... avant Lundi soir car après je fais comme beaucoup, je pars
en vacances



Bonnes vacances, cher contributeur.
Sea,sex and sun...
;-)


et je vais...oublier le forum pendant 3 semaines.



Et reviens vite...
Tu nous manques déjà !

PS : tu n'es pas obligé d'envoyer une carte postale à tous ceux que tu as
dépannés cette année. Rassuré ?




Avatar
anonymousA
OK, une fois vu le fichier je comprends. En fait, pour l'explication 1
c'est parce que le 1er commandbar ( en fait WorksheetMenubar) ne peut
être invalidé par visible. Il faut lui passer la propriété Enable pour
l'invalider. C'est d'ailleurs la particularité de ce Commandbar.
Ce commandbar ne supporte pas la propriété visible à false ce qui
explique le plantage.

pour le 2eme item, la proc suivante effectivement valide ou invalide les
menus initiaux de l'utiliateur

Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
End Sub

En conséquence, pour lui permettre à l'utilisateur de récupérer ses
menus dans le cas où il passe de ton fichier aux autres fichiers
ouverts, il convient d'écrire dans ton fichier dans le module Thisworkbook,

Private Sub Workbook_Deactivate()

MenuEtBO True

End Sub

Private Sub Workbook_Activate()

MenuEtBO False

End Sub

en supposant bien sur que dans le workbook_open de ton fichier tu aies
fait exécuter la proc

Sub Ouverture()
Application.ScreenUpdating = False
InitTablos
MenuEtBO False
Classeurs_Ouverts False
Desactive_Options
End Sub

Il va de soi que si l'utilisateur change le nombre des barres d'outils
après l'ouverture de ton fichier, il sera remis dans la configuration
qui précédait l'ouverture de ton fichier lors de l'venementement
Deactovate de ton fichier.
Voilà, j'espère avoir répondu à tes questions. Si après ça , tu ressens
encore le besoin de m'nevoyer ton fichier, n'hésites pas.

A+

si tu veux que je regarde ton classeur, envoie le à
mais fais le pour que j'ai le temps de le regarder
avant Lundi soir car après je fais comme beaucoup, je pars en vacances
et je vais , sinon oublier excel , mais oublier le forum pendant 3
semaines.

A+


bonsoir,

mille merci de suivre un pauvre novice comme moi.

voilà j'ai retrouvé où j'ai eu ce code. c'est le classeur fs.excelstate.
http://www.excelabo.net/moteurs/multixl.php?pge=2&f_motºrre

la seule chose que j'ai modifié dans ce code, c'est d'utilisé
l'activate au lieu du open et deactivate au lieu de beforeclose.
j'avoue ne pas tout comprendre à ton 1), ceci dit l'erreur est
immédiate et systématique avec cette modif.

pour le 2), je pourrais te faire parvenir mon classeur, mais je ne
sais pas comment faire et en plus l'erreur n'est pas systématique
il y a juste que quand ça se produit, les utilisateurs sont un peu ...
énervé

encore une fois merci du temps que tu me consacres
A+

"anonymousA" a écrit dans le message de news:
42e131fe$0$25042$

re,

1) je ne pense pas que l'explication que tu me donnes soit juste. En
effet, tel que je comprends le programme, on va chercher dans les
éléments d'un tableau ( déclaré comme Array vraisemblablement quoique
d'autres possibilités soient offertes) les numéros des commandbars.
Or un array sauf s'il a été explicitementd éclaré comme de base 1 est
par défaut de base 0. Donc TabBO(0) vaut quelque chose. Or d'evidence
0 étant l'indice de départ , Lbound(TabBO) doit renvoyer 0 et si
TabBO(0) est un numéro valide ce qu'il parait être puisque
l'instruction Application.CommandBars(tabBO(0)).Enabled = OnOff
existe dans ton programme, il ne devrait pas y avoir plus de
difficulté que ça à effectuer une boucle de Lbiound à Ubound. Ceci
dit, il me manque peut-être une info.

2)Le fait de gérer la validation/invalidation de menus par les
evenements Activate et Deactivate de Thisworkbook n'est pas de nature
à priori à poser problème sauf si le code qui est sous-jacent de ces
evenements pose problème lui-même.Pour se prononcer, il faudrait en
avoir le contenu.

A+


Merci pour ta réponse,

je tiens à préciser que ce code n'est pas de moi (de mémoire, je
l'ai trouvé sur excelabo, merci à son auteur)

1°) si je fais la modif que tu proposes j'ai une autre erreur
d'éxécution et je crois que c'est parce que la commandBars(0)
n'existe pas (je découvre à taton) (dommage, c'était bien vu)

2°) est-il possible que cette erreur ne survienne que lorsque je
fais des modifs dans VBA. Je m'explique : ma Sub est appelée sur
activate/desactivate de thisworbook pour que si l'utilisateur a un
autre fichier ouvert et qu'il jongle entre les deux, il puisse
utiliser son environnement même si mon fichier est ouvert. Je me
disais donc que des menus VBA vers les menus Excel, il pouvait y
avoir des interférences ( ce qui expliquerait que l'erreur n'est pas
systématique)

Merci




bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde
du côté du tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle
entre le 1er élément du TabBO et les autres, autrement dit pourquoi
ne pas écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+




Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de
remettre les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de
retrouver mon environnement normal à la fermeture de ce fichier.

Merci
















Avatar
Combory
un très grand merci à toi.
je te souhaite de très très bonnes vacances.
je vais tenter d'exploiter tes infos dès demain matin (c'est un fichier du
boulot).

milles merci et je reviens vers toi au cas où ....
moi le ch'ti du grand nord je comprend très bien les aléas du SUN

"anonymousA" a écrit dans le message de news:
42e2413f$0$30247$
OK, une fois vu le fichier je comprends. En fait, pour l'explication 1
c'est parce que le 1er commandbar ( en fait WorksheetMenubar) ne peut être
invalidé par visible. Il faut lui passer la propriété Enable pour
l'invalider. C'est d'ailleurs la particularité de ce Commandbar.
Ce commandbar ne supporte pas la propriété visible à false ce qui explique
le plantage.

pour le 2eme item, la proc suivante effectivement valide ou invalide les
menus initiaux de l'utiliateur

Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
End Sub

En conséquence, pour lui permettre à l'utilisateur de récupérer ses menus
dans le cas où il passe de ton fichier aux autres fichiers ouverts, il
convient d'écrire dans ton fichier dans le module Thisworkbook,

Private Sub Workbook_Deactivate()

MenuEtBO True

End Sub

Private Sub Workbook_Activate()

MenuEtBO False

End Sub

en supposant bien sur que dans le workbook_open de ton fichier tu aies
fait exécuter la proc

Sub Ouverture()
Application.ScreenUpdating = False
InitTablos
MenuEtBO False
Classeurs_Ouverts False
Desactive_Options
End Sub

Il va de soi que si l'utilisateur change le nombre des barres d'outils
après l'ouverture de ton fichier, il sera remis dans la configuration qui
précédait l'ouverture de ton fichier lors de l'venementement Deactovate de
ton fichier.
Voilà, j'espère avoir répondu à tes questions. Si après ça , tu ressens
encore le besoin de m'nevoyer ton fichier, n'hésites pas.

A+

si tu veux que je regarde ton classeur, envoie le à
mais fais le pour que j'ai le temps de le regarder avant Lundi soir car
après je fais comme beaucoup, je pars en vacances et je vais , sinon
oublier excel , mais oublier le forum pendant 3 semaines.

A+


bonsoir,

mille merci de suivre un pauvre novice comme moi.

voilà j'ai retrouvé où j'ai eu ce code. c'est le classeur fs.excelstate.
http://www.excelabo.net/moteurs/multixl.php?pge=2&f_motºrre

la seule chose que j'ai modifié dans ce code, c'est d'utilisé l'activate
au lieu du open et deactivate au lieu de beforeclose.
j'avoue ne pas tout comprendre à ton 1), ceci dit l'erreur est immédiate
et systématique avec cette modif.

pour le 2), je pourrais te faire parvenir mon classeur, mais je ne sais
pas comment faire et en plus l'erreur n'est pas systématique
il y a juste que quand ça se produit, les utilisateurs sont un peu ...
énervé

encore une fois merci du temps que tu me consacres
A+

"anonymousA" a écrit dans le message de news:
42e131fe$0$25042$

re,

1) je ne pense pas que l'explication que tu me donnes soit juste. En
effet, tel que je comprends le programme, on va chercher dans les
éléments d'un tableau ( déclaré comme Array vraisemblablement quoique
d'autres possibilités soient offertes) les numéros des commandbars.
Or un array sauf s'il a été explicitementd éclaré comme de base 1 est
par défaut de base 0. Donc TabBO(0) vaut quelque chose. Or d'evidence 0
étant l'indice de départ , Lbound(TabBO) doit renvoyer 0 et si TabBO(0)
est un numéro valide ce qu'il parait être puisque l'instruction
Application.CommandBars(tabBO(0)).Enabled = OnOff existe dans ton
programme, il ne devrait pas y avoir plus de difficulté que ça à
effectuer une boucle de Lbiound à Ubound. Ceci dit, il me manque
peut-être une info.

2)Le fait de gérer la validation/invalidation de menus par les
evenements Activate et Deactivate de Thisworkbook n'est pas de nature à
priori à poser problème sauf si le code qui est sous-jacent de ces
evenements pose problème lui-même.Pour se prononcer, il faudrait en
avoir le contenu.

A+


Merci pour ta réponse,

je tiens à préciser que ce code n'est pas de moi (de mémoire, je l'ai
trouvé sur excelabo, merci à son auteur)

1°) si je fais la modif que tu proposes j'ai une autre erreur
d'éxécution et je crois que c'est parce que la commandBars(0) n'existe
pas (je découvre à taton) (dommage, c'était bien vu)

2°) est-il possible que cette erreur ne survienne que lorsque je fais
des modifs dans VBA. Je m'explique : ma Sub est appelée sur
activate/desactivate de thisworbook pour que si l'utilisateur a un
autre fichier ouvert et qu'il jongle entre les deux, il puisse
utiliser son environnement même si mon fichier est ouvert. Je me
disais donc que des menus VBA vers les menus Excel, il pouvait y avoir
des interférences ( ce qui expliquerait que l'erreur n'est pas
systématique)

Merci




bonjour,

erreur 9, c'est l'indice n'appartient pas à la selection. regarde du
côté du tableau et de ses éléments
D'ailleurs au passage pourquoi faire une distinction dans la boucle
entre le 1er élément du TabBO et les autres, autrement dit pourquoi
ne pas écrire ?

For i = Lbound(tabBO) To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next


A+




Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de
remettre les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de
retrouver mon environnement normal à la fermeture de ce fichier.

Merci


















Avatar
Combory
Merci ça marche et j'ai très bien compris le cheminement.
heureusement que tu es là pour nous aider dans nos galère.

encore une p'tite dernière : comment fait-on pour valider que c'est résolu
sur le forum ??

A+ et encore bonnes vacances


Bonjour,

voici le code que j'utilise pour afficher/masquer les barres :
' Montre ou cache les barres d'outils de l'environnement utilisateur
Sub MenuEtBO(OnOff As Boolean)
Dim i%
Application.CommandBars(tabBO(0)).Enabled = OnOff
For i = 1 To UBound(tabBO)
Application.CommandBars(tabBO(i)).Visible = OnOff
Next
Application.CommandBars("worksheet menu bar").Enabled = True
End Sub

j'ai quelques fois une erreur d'éxécution 9 et je suis obligé de remettre
les barres en manu lorsque j'ouvre un autre classeur.
comment être sur de ne pas avoir cette erreur et être sur de retrouver mon
environnement normal à la fermeture de ce fichier.

Merci


1 2