[Catégorie modifiée VB6 --> VBA] Pb autoload Combobox activeX ???

Ericbzc Messages postés 17 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 13 décembre 2010 - 7 juil. 2010 à 01:06
Ericbzc Messages postés 17 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 13 décembre 2010 - 7 juil. 2010 à 12:54
Bonjour à tous et merci d'avance pour votre aide

le contexte : je suis sous excel 2003. et j'ai un programme qui à partir d'un tableau de donnée me permet de générer un calendrier individuel.

La structure du fichier : Onglet_1/ une série de Noms. J'ai appelé cette plage List_Pers. Onglet_2/ Tableau de donnée + controle ComboBox - ActiveX qui fait réf. à List_Pers et à une macro

Le PB : dès que je modifie les noms dans onglet_1, (sans toucher à la combobox) la macro associée à ComboBox se lance... et comme elle s'exécute sur l'onglet actif, elle ne trouve évidemment pas les bonnes données et renvoie un mess. d'erreur.

D'où ma question : Pourquoi une modification de List_Pers entraine l'exécution de la macro ?

Pour info, j'ai essayé de recopier avec Liaison List_pers dans l'onglet_2, créant ainsi une List_pers2 locale.
Même pb : un changement de List_pers => exécution de la macro.

Je souhaite que cette macro ne s'exécute que lorsque je change la valeur de la combobox...

J'espère avoir été clair.
Merci d'avance
Eric

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 juil. 2010 à 09:57
Salut
Ce que tu appelles "fichier" est un Classeur
Ce que tu appelles "Onglet" est une Feuille

Je n'ai pas tout compris à ton histoire de Combo, mais il est vrai que les évènements du genre maCombo_Change peuvent se déclencher alors que insères ou modifies le contenu par programme.
Pour éviter cela pendant la préparation des données, il te suffit de faire ceci :
Dans la partie Déclaration d'un module, tu ajoutes une variable :
Public bPrepaEnCours As Boolean
Dans ton code, juste avant de toucher à tes données, tu passes cette variable à True et tu la remettras à False quand tu auras terminé.
Dans les évènements du genre maCombo_Change, tu ajoutes, en tête du code :
If bPrepaEnCours Then Exit Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Ericbzc Messages postés 17 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 13 décembre 2010
7 juil. 2010 à 12:54
Super idée. ca va régler le pb effectivement...
Merci.

ps : juste au cas où, voici le pb en plus simple (j'espère... ) : dès que je change une cellule dans la feuille, quelle qu'elle soit, ca lance la macro ***_change ()

Le pb est le même avec worksheet_change :
[i]Set Rng1 = Application.Intersect(Target, Range("H6:BD43"))
If Not Rng1 Is Nothing Then/i
Le changement de n'importe quelle cellule dans la feuille, lance la macro...

Enfin bref, ta solution va régler le pb !
Merci
0
Rejoignez-nous