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

probleme avec l'evenement change d'une combobox

7 réponses
Avatar
Fan
Bonjour,

Mon problème est le suivant :
Quand je faisais "enregistrer sous", j'avais des lettres ou chiffres qui
apparaissaient dans des cellules de l'onglet d'où était executer
l'enregistrement.
Après quelques recherche on constatait que le code vba du classeur possède
plusieurs formulaires dont 3 d'entres eux possèdent des combobox distinctes
avec l'événement "change" qui a pour but de renseigner des cellules d'une
information X.

On peut donc en conclure que lorque je fais "enregistrer sous" les 3
événement sont executés et mettent à jour les cellules concernées dans
l'onglet actif lors de l'enregistrement.

Mes questions sont :
Est-ce normal ?, le problème peut-il etre remédier pour que au minimum, des
informations n'apparaissent pas dans des onglets qui ne sont pas destinés à
recevoir ces informations voire que le code ne soit pas executé n'importe
quand ?.

Merci

7 réponses

Avatar
Youky
Un exemple.........
'Cet exemple montre comment désactiver des événements avant l'enregistrement
d'un fichier de telle sorte que l'événement BeforeSave n'ait pas lieu.
Application.EnableEvents = False 'ici on désactive les événements
ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
Application.EnableEvents = True 'et on réactive les événements

Youky

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

Bonjour,

Mon problème est le suivant :
Quand je faisais "enregistrer sous", j'avais des lettres ou chiffres qui
apparaissaient dans des cellules de l'onglet d'où était executer
l'enregistrement.
Après quelques recherche on constatait que le code vba du classeur possède
plusieurs formulaires dont 3 d'entres eux possèdent des combobox
distinctes
avec l'événement "change" qui a pour but de renseigner des cellules d'une
information X.

On peut donc en conclure que lorque je fais "enregistrer sous" les 3
événement sont executés et mettent à jour les cellules concernées dans
l'onglet actif lors de l'enregistrement.

Mes questions sont :
Est-ce normal ?, le problème peut-il etre remédier pour que au minimum,
des
informations n'apparaissent pas dans des onglets qui ne sont pas destinés
à
recevoir ces informations voire que le code ne soit pas executé n'importe
quand ?.

Merci




Avatar
Fan
Cette exemple est fait pour un enregistrement sous vba

Mais dans le cas d'un enregistrement manuel comment faire.
Je précise que le probleme n'intervient uniquement lorsque je fais
"enregistrer sous" et non lors d'un simple enregistrement.

Merci


"Youky" a écrit dans le message de
news:
Un exemple.........
'Cet exemple montre comment désactiver des événements avant


l'enregistrement
d'un fichier de telle sorte que l'événement BeforeSave n'ait pas lieu.
Application.EnableEvents = False 'ici on désactive les événements
ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
Application.EnableEvents = True 'et on réactive les événements

Youky

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

> Bonjour,
>
> Mon problème est le suivant :
> Quand je faisais "enregistrer sous", j'avais des lettres ou chiffres qui
> apparaissaient dans des cellules de l'onglet d'où était executer
> l'enregistrement.
> Après quelques recherche on constatait que le code vba du classeur


possède
> plusieurs formulaires dont 3 d'entres eux possèdent des combobox
> distinctes
> avec l'événement "change" qui a pour but de renseigner des cellules


d'une
> information X.
>
> On peut donc en conclure que lorque je fais "enregistrer sous" les 3
> événement sont executés et mettent à jour les cellules concernées dans
> l'onglet actif lors de l'enregistrement.
>
> Mes questions sont :
> Est-ce normal ?, le problème peut-il etre remédier pour que au minimum,
> des
> informations n'apparaissent pas dans des onglets qui ne sont pas


destinés
> à
> recevoir ces informations voire que le code ne soit pas executé


n'importe
> quand ?.
>
> Merci
>
>





Avatar
Fan
Je peux toutefois intervenir sur le code en nommant expressement l'onglet
concerné.

Mais comment cela se fait-t-il qu'à l'enregistrement cet évenement se
déclenche ?


Merci


"Fan" a écrit dans le message de
news:eBvQY$
Cette exemple est fait pour un enregistrement sous vba

Mais dans le cas d'un enregistrement manuel comment faire.
Je précise que le probleme n'intervient uniquement lorsque je fais
"enregistrer sous" et non lors d'un simple enregistrement.

Merci


"Youky" a écrit dans le message de
news:
> Un exemple.........
> 'Cet exemple montre comment désactiver des événements avant
l'enregistrement
> d'un fichier de telle sorte que l'événement BeforeSave n'ait pas lieu.
> Application.EnableEvents = False 'ici on désactive les événements
> ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
> Application.EnableEvents = True 'et on réactive les événements
>
> Youky
>
> "Fan" a écrit dans le message de news:
>
> > Bonjour,
> >
> > Mon problème est le suivant :
> > Quand je faisais "enregistrer sous", j'avais des lettres ou chiffres


qui
> > apparaissaient dans des cellules de l'onglet d'où était executer
> > l'enregistrement.
> > Après quelques recherche on constatait que le code vba du classeur
possède
> > plusieurs formulaires dont 3 d'entres eux possèdent des combobox
> > distinctes
> > avec l'événement "change" qui a pour but de renseigner des cellules
d'une
> > information X.
> >
> > On peut donc en conclure que lorque je fais "enregistrer sous" les 3
> > événement sont executés et mettent à jour les cellules concernées dans
> > l'onglet actif lors de l'enregistrement.
> >
> > Mes questions sont :
> > Est-ce normal ?, le problème peut-il etre remédier pour que au


minimum,
> > des
> > informations n'apparaissent pas dans des onglets qui ne sont pas
destinés
> > à
> > recevoir ces informations voire que le code ne soit pas executé
n'importe
> > quand ?.
> >
> > Merci
> >
> >
>
>
>





Avatar
Youky
Il faut plus de précision , est-ce bien un combobox qui se vide et la
cellule liée avec...
Si c'est ça il faut écrire du code au lieu de mettre une cell liée..
Je ne vois pas autre chose.
Youky
"Fan" a écrit dans le message de news:
%
Je peux toutefois intervenir sur le code en nommant expressement l'onglet
concerné.

Mais comment cela se fait-t-il qu'à l'enregistrement cet évenement se
déclenche ?


Merci


"Fan" a écrit dans le message de
news:eBvQY$
Cette exemple est fait pour un enregistrement sous vba

Mais dans le cas d'un enregistrement manuel comment faire.
Je précise que le probleme n'intervient uniquement lorsque je fais
"enregistrer sous" et non lors d'un simple enregistrement.

Merci


"Youky" a écrit dans le message de
news:
> Un exemple.........
> 'Cet exemple montre comment désactiver des événements avant
l'enregistrement
> d'un fichier de telle sorte que l'événement BeforeSave n'ait pas lieu.
> Application.EnableEvents = False 'ici on désactive les événements
> ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
> Application.EnableEvents = True 'et on réactive les événements
>
> Youky
>
> "Fan" a écrit dans le message de news:
>
> > Bonjour,
> >
> > Mon problème est le suivant :
> > Quand je faisais "enregistrer sous", j'avais des lettres ou chiffres


qui
> > apparaissaient dans des cellules de l'onglet d'où était executer
> > l'enregistrement.
> > Après quelques recherche on constatait que le code vba du classeur
possède
> > plusieurs formulaires dont 3 d'entres eux possèdent des combobox
> > distinctes
> > avec l'événement "change" qui a pour but de renseigner des cellules
d'une
> > information X.
> >
> > On peut donc en conclure que lorque je fais "enregistrer sous" les 3
> > événement sont executés et mettent à jour les cellules concernées
> > dans
> > l'onglet actif lors de l'enregistrement.
> >
> > Mes questions sont :
> > Est-ce normal ?, le problème peut-il etre remédier pour que au


minimum,
> > des
> > informations n'apparaissent pas dans des onglets qui ne sont pas
destinés
> > à
> > recevoir ces informations voire que le code ne soit pas executé
n'importe
> > quand ?.
> >
> > Merci
> >
> >
>
>
>









Avatar
Fan
Voici une partie du code du formulaire ou se trouve la combobox

Private sub combobox1_change()
Cells(1, 5).value = ComboBox1.ListIndex +1
End sub

Donc si je suis dans l'onglet X lorsque je fais enregister sous il me
renseigne la cellule (1, 5) de la valeur + 1 de la combo.
Idem si j'étais sur l'onglet Y.

La solution serait de nommer l'onglet uniquement concerné le changement ?

Et d'autres part est-ce normal ce problème ?
Merci

"Youky" a écrit dans le message de
news:%
Il faut plus de précision , est-ce bien un combobox qui se vide et la
cellule liée avec...
Si c'est ça il faut écrire du code au lieu de mettre une cell liée..
Je ne vois pas autre chose.
Youky
"Fan" a écrit dans le message de news:
%
> Je peux toutefois intervenir sur le code en nommant expressement


l'onglet
> concerné.
>
> Mais comment cela se fait-t-il qu'à l'enregistrement cet évenement se
> déclenche ?
>
>
> Merci
>
>
> "Fan" a écrit dans le message de
> news:eBvQY$
>> Cette exemple est fait pour un enregistrement sous vba
>>
>> Mais dans le cas d'un enregistrement manuel comment faire.
>> Je précise que le probleme n'intervient uniquement lorsque je fais
>> "enregistrer sous" et non lors d'un simple enregistrement.
>>
>> Merci
>>
>>
>> "Youky" a écrit dans le message de
>> news:
>> > Un exemple.........
>> > 'Cet exemple montre comment désactiver des événements avant
>> l'enregistrement
>> > d'un fichier de telle sorte que l'événement BeforeSave n'ait pas


lieu.
>> > Application.EnableEvents = False 'ici on désactive les événements
>> > ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
>> > Application.EnableEvents = True 'et on réactive les événements
>> >
>> > Youky
>> >
>> > "Fan" a écrit dans le message de news:
>> >
>> > > Bonjour,
>> > >
>> > > Mon problème est le suivant :
>> > > Quand je faisais "enregistrer sous", j'avais des lettres ou


chiffres
> qui
>> > > apparaissaient dans des cellules de l'onglet d'où était executer
>> > > l'enregistrement.
>> > > Après quelques recherche on constatait que le code vba du classeur
>> possède
>> > > plusieurs formulaires dont 3 d'entres eux possèdent des combobox
>> > > distinctes
>> > > avec l'événement "change" qui a pour but de renseigner des cellules
>> d'une
>> > > information X.
>> > >
>> > > On peut donc en conclure que lorque je fais "enregistrer sous" les


3
>> > > événement sont executés et mettent à jour les cellules concernées
>> > > dans
>> > > l'onglet actif lors de l'enregistrement.
>> > >
>> > > Mes questions sont :
>> > > Est-ce normal ?, le problème peut-il etre remédier pour que au
> minimum,
>> > > des
>> > > informations n'apparaissent pas dans des onglets qui ne sont pas
>> destinés
>> > > à
>> > > recevoir ces informations voire que le code ne soit pas executé
>> n'importe
>> > > quand ?.
>> > >
>> > > Merci
>> > >
>> > >
>> >
>> >
>> >
>>
>>
>>
>
>





Avatar
Youky
>>il me renseigne la cellule (1, 5) de la valeur + 1 de la combo.




Non ......le + 1 de la combo est que listindex commence à zéro donc si tu
veux avoir le 1er élément de la liste il faut ajouter 1
Une solution pour ton PB
If ActiveSheet.Name="onglet Y" Then exit sub
If ActiveSheet.Name="onglet K" Then exit sub
Cells(1, 5).value = ComboBox1.ListIndex +1

ou encore si tu veux que la macro s'exécute que sur l'onglet X
Sheets(X).Cells(1, 5).value = ComboBox1.ListIndex +1
ou mieux encore regarde en fenetre des projets en haut à gauche
Utilise le codename de la feuille c'est mieux car si on renomme l'onglet la
macro plante
exemple
Feuil1 (toto)
Feuil2 (X)
Il est préférable d'utiliser Feuil1.Cells(1,5) que Sheets("toto").Cells(1,5)
Je vois rien d'autres, mes essais n'ont pas fait broncher la cells(1,5) même
en enregistrer sous
Youky


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

Voici une partie du code du formulaire ou se trouve la combobox

Private sub combobox1_change()
Cells(1, 5).value = ComboBox1.ListIndex +1
End sub

Donc si je suis dans l'onglet X lorsque je fais enregister sous il me
renseigne la cellule (1, 5) de la valeur + 1 de la combo.
Idem si j'étais sur l'onglet Y.

La solution serait de nommer l'onglet uniquement concerné le changement ?

Et d'autres part est-ce normal ce problème ?
Merci

"Youky" a écrit dans le message de
news:%
Il faut plus de précision , est-ce bien un combobox qui se vide et la
cellule liée avec...
Si c'est ça il faut écrire du code au lieu de mettre une cell liée..
Je ne vois pas autre chose.
Youky
"Fan" a écrit dans le message de news:
%
> Je peux toutefois intervenir sur le code en nommant expressement


l'onglet
> concerné.
>
> Mais comment cela se fait-t-il qu'à l'enregistrement cet évenement se
> déclenche ?
>
>
> Merci
>
>
> "Fan" a écrit dans le message de
> news:eBvQY$
>> Cette exemple est fait pour un enregistrement sous vba
>>
>> Mais dans le cas d'un enregistrement manuel comment faire.
>> Je précise que le probleme n'intervient uniquement lorsque je fais
>> "enregistrer sous" et non lors d'un simple enregistrement.
>>
>> Merci
>>
>>
>> "Youky" a écrit dans le message de
>> news:
>> > Un exemple.........
>> > 'Cet exemple montre comment désactiver des événements avant
>> l'enregistrement
>> > d'un fichier de telle sorte que l'événement BeforeSave n'ait pas


lieu.
>> > Application.EnableEvents = False 'ici on désactive les événements
>> > ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
>> > Application.EnableEvents = True 'et on réactive les événements
>> >
>> > Youky
>> >
>> > "Fan" a écrit dans le message de news:
>> >
>> > > Bonjour,
>> > >
>> > > Mon problème est le suivant :
>> > > Quand je faisais "enregistrer sous", j'avais des lettres ou


chiffres
> qui
>> > > apparaissaient dans des cellules de l'onglet d'où était executer
>> > > l'enregistrement.
>> > > Après quelques recherche on constatait que le code vba du classeur
>> possède
>> > > plusieurs formulaires dont 3 d'entres eux possèdent des combobox
>> > > distinctes
>> > > avec l'événement "change" qui a pour but de renseigner des
>> > > cellules
>> d'une
>> > > information X.
>> > >
>> > > On peut donc en conclure que lorque je fais "enregistrer sous" les


3
>> > > événement sont executés et mettent à jour les cellules concernées
>> > > dans
>> > > l'onglet actif lors de l'enregistrement.
>> > >
>> > > Mes questions sont :
>> > > Est-ce normal ?, le problème peut-il etre remédier pour que au
> minimum,
>> > > des
>> > > informations n'apparaissent pas dans des onglets qui ne sont pas
>> destinés
>> > > à
>> > > recevoir ces informations voire que le code ne soit pas executé
>> n'importe
>> > > quand ?.
>> > >
>> > > Merci
>> > >
>> > >
>> >
>> >
>> >
>>
>>
>>
>
>









Avatar
Fan
Merci pour tes recherches et réponses, j'essaye des aujourd'hui

merci


"Youky" a écrit dans le message de
news:
>>il me renseigne la cellule (1, 5) de la valeur + 1 de la combo.
Non ......le + 1 de la combo est que listindex commence à zéro donc si tu
veux avoir le 1er élément de la liste il faut ajouter 1
Une solution pour ton PB
If ActiveSheet.Name="onglet Y" Then exit sub
If ActiveSheet.Name="onglet K" Then exit sub
Cells(1, 5).value = ComboBox1.ListIndex +1

ou encore si tu veux que la macro s'exécute que sur l'onglet X
Sheets(X).Cells(1, 5).value = ComboBox1.ListIndex +1
ou mieux encore regarde en fenetre des projets en haut à gauche
Utilise le codename de la feuille c'est mieux car si on renomme l'onglet


la
macro plante
exemple
Feuil1 (toto)
Feuil2 (X)
Il est préférable d'utiliser Feuil1.Cells(1,5) que


Sheets("toto").Cells(1,5)
Je vois rien d'autres, mes essais n'ont pas fait broncher la cells(1,5)


même
en enregistrer sous
Youky


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

> Voici une partie du code du formulaire ou se trouve la combobox
>
> Private sub combobox1_change()
> Cells(1, 5).value = ComboBox1.ListIndex +1
> End sub
>
> Donc si je suis dans l'onglet X lorsque je fais enregister sous il me
> renseigne la cellule (1, 5) de la valeur + 1 de la combo.
> Idem si j'étais sur l'onglet Y.
>
> La solution serait de nommer l'onglet uniquement concerné le changement


?
>
> Et d'autres part est-ce normal ce problème ?
> Merci
>
> "Youky" a écrit dans le message de
> news:%
>> Il faut plus de précision , est-ce bien un combobox qui se vide et la
>> cellule liée avec...
>> Si c'est ça il faut écrire du code au lieu de mettre une cell liée..
>> Je ne vois pas autre chose.
>> Youky
>> "Fan" a écrit dans le message de news:
>> %
>> > Je peux toutefois intervenir sur le code en nommant expressement
> l'onglet
>> > concerné.
>> >
>> > Mais comment cela se fait-t-il qu'à l'enregistrement cet évenement se
>> > déclenche ?
>> >
>> >
>> > Merci
>> >
>> >
>> > "Fan" a écrit dans le message de
>> > news:eBvQY$
>> >> Cette exemple est fait pour un enregistrement sous vba
>> >>
>> >> Mais dans le cas d'un enregistrement manuel comment faire.
>> >> Je précise que le probleme n'intervient uniquement lorsque je fais
>> >> "enregistrer sous" et non lors d'un simple enregistrement.
>> >>
>> >> Merci
>> >>
>> >>
>> >> "Youky" a écrit dans le message de
>> >> news:
>> >> > Un exemple.........
>> >> > 'Cet exemple montre comment désactiver des événements avant
>> >> l'enregistrement
>> >> > d'un fichier de telle sorte que l'événement BeforeSave n'ait pas
> lieu.
>> >> > Application.EnableEvents = False 'ici on désactive les événements
>> >> > ActiveWorkbook.Save 'on fait ce qu'on veux sans les événements
>> >> > Application.EnableEvents = True 'et on réactive les événements
>> >> >
>> >> > Youky
>> >> >
>> >> > "Fan" a écrit dans le message de news:
>> >> >
>> >> > > Bonjour,
>> >> > >
>> >> > > Mon problème est le suivant :
>> >> > > Quand je faisais "enregistrer sous", j'avais des lettres ou
> chiffres
>> > qui
>> >> > > apparaissaient dans des cellules de l'onglet d'où était executer
>> >> > > l'enregistrement.
>> >> > > Après quelques recherche on constatait que le code vba du


classeur
>> >> possède
>> >> > > plusieurs formulaires dont 3 d'entres eux possèdent des combobox
>> >> > > distinctes
>> >> > > avec l'événement "change" qui a pour but de renseigner des
>> >> > > cellules
>> >> d'une
>> >> > > information X.
>> >> > >
>> >> > > On peut donc en conclure que lorque je fais "enregistrer sous"


les
> 3
>> >> > > événement sont executés et mettent à jour les cellules


concernées
>> >> > > dans
>> >> > > l'onglet actif lors de l'enregistrement.
>> >> > >
>> >> > > Mes questions sont :
>> >> > > Est-ce normal ?, le problème peut-il etre remédier pour que au
>> > minimum,
>> >> > > des
>> >> > > informations n'apparaissent pas dans des onglets qui ne sont pas
>> >> destinés
>> >> > > à
>> >> > > recevoir ces informations voire que le code ne soit pas executé
>> >> n'importe
>> >> > > quand ?.
>> >> > >
>> >> > > Merci
>> >> > >
>> >> > >
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >>
>> >
>> >
>>
>>
>>
>
>