Enchainement de procedures au changement d'1 combobox inutile !!

  • Initiateur de la discussion Creepy
  • Date de début
C

Creepy

Guest
Hello,

Merci pour vos réponses à mon message "au secour".

@+thierry, non je lacherais pas l'affaire, je suis borné comme gars tu sais. Effectivement j'ai repris des morceaux de tes procedures !!

Voila ma question j'ai deux combobox et plusieurs labels.

Lorsque je choisis un item de ma combobox 1 : Mise à jour de la combobox2 et de tous les labels avec les bonnes données en rapport au choix de la combobox1.

Pareil pour ma combobox 2.

Quand j'execute pas à pas ma procedure combobox1_change, j'ai bien tout mes updates de labels, etc ...

Par contre quand la procedure est finie, il bascule automatiquement sur combobox2_change() (forcement puisque je l'ai updaté avec des données), mais ce n'est pas nécéssaire !!

Comme eviter que Excel passse à la procedure change de la combobox non changée par l'utilisateur.

Merci

Creepy
 
@

@+Thierry

Guest
Re Creepy

Il faudrait voir le code, mais UpDater une combobox par un code la procédure précédante est très courant dans les manipulations de UserForms...

...Ce qui l'est moins c'est d'appliquer un 2vènement Change à cette ComboBox UpDatée par Macro...

Méthode Recommandée
Soit tu changes d'évènement... En faveur de "Click" par exemple... et là tu seras sûr que le Update se fera par le User et non un Code... Comme il s'agit d'une Combo l'évènement "KeyPress" peut (ou doit) être surveillé... (Tu peux renvoyer le même code à plusieurs évènement si tu le mets en Private Sub)

Méthode Alternative
Application.EnableEvents = False... Mais là tu entres dans une rigueur absolue... faut savoir jouer avec les boolean sans y perde son latin...


Ceci dit, je vois que tu as vu mon post, mais mis à part ma remarque sur les récupérations de mes codes (ils sontsur ce forum pour ça!) as-tu vu aussi toutes mes autres remarques et as-tu commencé a corriger et à remarquer des progrès ???

Je ne voulais pas du tout te décourager (bien au contraire)... mais tu devrais essayer de faire la même chose en plus petit rien que pour assimiler... c'est tout... Sinon c'est pas 50 heures de plus qui seront suffisantes....

Bonne fin de journée
@+Thierry




Bonne Fin de Journée
 
@

@+Thierry

Guest
C'est re Moi

En me lisant, je n'ai pas assez insisté pour décourager... pour la méthode alternative... car il ne suffit pas de faire comme pour ScreenUpdating False au Début et True à la fin...

C'est vite un casse tête... Car Application.EnableEvents = False devient très vite un vrai casse-tête... En finction de la complication et de la logique du code et de l'orde d'activations des Controls ActiveX...

Voilà, en clair, je n'utilise pas cette instruction que si vraiment on ne peut pas faire autrement (souvent dans les évènements de Sheet, comme Worksheet_Calculate]

@+Thierry
 
C

Creepy

Guest
Lu,

Alors oui j'ai bien vu tes remarques et j'ai modifié plusieurs choses pour faire plus propre. Et pour te repondre oui je fais la difference entre ton toto & zaza !!

Merci d'ailleur.

Ensuite j'ai lu avec interet ton message et ai changé ma procedure _change en _click.

Cependant ma fonction passe quand même par cette procedure, alors qu'il ne s'agit pas d'un clique, je ne comprends pas bien pourquoi mais bon

chose bizarre que je viens de remarquer est que ma procedure btnmodifier_click() est appellée ici & là, alors que je ne fais pas appel au combobox de ma feuil1 ?? !! ??

with sheets("BdeD")
.Range("A" & NomLBindex).Value = ModClient.Value <- ICI
.Range("B" & NomLBindex).Value = ModMarche.Value <- ET LA
.Range("C" & NomLBindex).Value = ModNMR.Value
.Range("D" & NomLBindex).Value = ModPeriode.Value
.Range("E" & NomLBindex).Value = ModUnite.Value

End With
End If
With Feuil1
.Clientbox.Text = ModClient.Text <- Ca devrais etre ICI plutot non ?
.MarcheBox.Value = ModMarche.Value
.Nmr.Caption = ModNMR.Value
.Periode.Caption = ModPeriode.Value

Merci

Creepy
 
@

@+Thierry

Guest
RE Creepy, le forum

Heuf là vraiment impossible de te répondre sans l'appli entière, mais dis-toi bien que sans raison, VBA ne va pas "fureter" dans des ligne de code si il n'en a pas besoin...

C'est pas comme quand on rentre dans un Supermarché pour acheter une brosse à dent et qu'on ressort avec un Cadi plein !! (lol)

ModMarch (Mod = ComBoBox, je suppose).... Ben il s'arrete au pas à pas sur le With Sheets("BdeD")... car il doit avor déjà lu le With Feuil1... Mais ton code est assez embrouillé et difficile de savoir ooù on est de loin comme moi... (enfin si çà marche...)

Par contre une autre remarque qui me vient à l'esprit en écrivant... Il faut rester cohérant (pour toi-même aussi si dans six mois tu dois corriger et/ou faire evoluer ce truc...

Si tu veux employer les noms d'Objet de Feuilles (With Feuil1) fait le de manière homogène... pas un coup sur deux... (with sheets("BdeD"))

Bonne Soirée
@+Thierry
 
@

@+Thierry

Guest
Re Creepy, le Forum

Ben oui vaut mieux que ce ne soit pas la même feuille j'ai déjà remarqué que tu étais un peu embrouillé mais si en prime tu cafouilles !!! ou va-t'on !! :)

Je te parlais de la façon d'avoir une homogènéité dans tes méthodes... Car ce sont deux manières bien différentes Nom d'Objet et Nom d'Onglet.

C'est tout
@+Thierry
 

Statistiques des forums

Discussions
312 755
Messages
2 091 726
Membres
105 058
dernier inscrit
axcelle