Ericbzc
Messages postés17Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention13 décembre 2010
-
7 juil. 2010 à 01:06
Ericbzc
Messages postés17Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention13 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...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Ericbzc
Messages postés17Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention13 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...