Macro worksheet change qui attend la fin d une autre avant de demarrer

PATPOWER

Habitué
Bonjour,
J ai une macro qui envois des valeurs dans des cell sur une autre page, et dans cette autre page, quand la valeur de ces cellules la change, une macro demarre!

Le probleme est que j aimerais que la premiere macro soit terminée avant que la macro automatique demarre...des idées?
Merci a l avance!
 

zeb

Modérateur
Salut Pat'

Je vois une solution.

Supposons que ta macro qui démarre inopinément soit Worksheet_Change().
Je propose de modifier cette macro en y ajoutant la lecture d'un flag.

Code:
' // Code de la feuille "Autre Page"

Public flg_loading As Boolean

Sub Worksheet_Change()
    If flg_loading Then Exit Sub
    ....
End Sub

Lors de ta copie, initiée dans la première feuille, lève le flag avant de commencer, et baisse-le à la fin.
Code:
' // Code de la feuille "Première Page"

Sub Copie_Donnees()
    Worksheets("Autre Feuille").flg_loading = True
    ' // Copie de cellule
    ....
    Worksheets("Autre Feuille").flg_loading = False
End Sub

Et voilà ! :sol:
 

PATPOWER

Habitué
Merci, je comprend le principe..mais je n arrive pas a mettre les elements aux bonnes places!

dans mon code je met le flag true au debut et false a la fin...ca semble aller
mais ensuite dans le code de la feuille, dans l ordre je met quoi?
le code va comme suit

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$3" Then
rest du code....
End If
End Sub
si j insere ton code il me sort un message d erreur a la ligne sub worksheet change..

je sais..je suis débutant, j ai encore du mal avec les codes!
 

zeb

Modérateur
Il ne faut pas le faire dans Worksheet_Change() mais dans la macro-automatique-qui-démarre.
Worksheet_Change() n'était qu'un exemple basé sur une supposition.

-------------

Utilise la balise [code] pour présenter du code [:zeb:4]
[:zeb:6]
 

PATPOWER

Habitué
Ok...c est que je me servais de worksheetchange, c etais ca ma macro automatique si on veut.. alors dans le code la la feuille je devrais faire worksheetchange si a1 change lance la macro et dans cette macro toncode.. si j ai bien compris!
 

zeb

Modérateur
Eh, eh, eh... Donc je supposais bien. :sol:

Donc tu mets à la première ligne de ta fonction la première ligne que je proposais, à savoir :
Code:
If flg_loading Then Exit Sub
Puis à la place de mes petits points, tu mets ton code.

------------

Que je daigne te répondre ne te dispense pas d'utiliser la balise [code] pour présenter du code [:zeb:4]
 

PATPOWER

Habitué
maintenant c est a la premiere ligne de la premiere macro qui me sort une erreur..il me dit runtime error..ne supporte pas la methode.. (ligne qui ouvre le flag). Autre chose que j ai pu mal faire? :(
 

zeb

Modérateur
De quelle première ligne de quelle première macro parles-tu ?

Je te demanderais bien d'en poster le code, mais ça fais maintenant trois fois que je te demande de modifier en respect du règlement un de tes messages précédents. Alors je n'ose... :sarcastic:
 

PATPOWER

Habitué
désolé, je suis nouveau et je ne sais pas trop comment avec les codes..
en resumé ma macro commence par lever le flag selon ta ligne de code et se termine en baissant ce dernier selon ta ligne de code. entre les 2 elle donne a des cell de l autre page des valeur.

l autre page dans le code de la feuille, j ai le code worksheetchange qui quand les cell en question change lance une macro. cette macro contien ta ligne de code pour s arreter si le flag est levé.

le probleme est que des que uje lance la premiere macro, un message d erreur apparait et me dit methode incorrect...et la premiere ligne est surlignée, celle qui lève le flag! donc je ne comprend pas trop ce qui se passe..en attendant j essais d autre combinaison mais rien ne marche!

je vais faire une macro test que je vais pouvoir te fournir le code..car la macro d origine est compliquée avec des userform et tout.. le but pour moi est de comprendre la facon de faire avec le code et de le reproduire dans la grande macro...pour l instant je fait donc des test avec une macro facile de 4 ou 5 ligne..
 

zeb

Modérateur
Merci pour l'édition de ton message. Je n'en demande pas plus. :merci:
Mais tu peux ajouter =VB dans la première balise pour faire encore plus joli :D

Faire un petit code pas compliqué pour mieux comprendre : +1 - Excellente idée. :o

Juste un détail. Lever un drapeau, en programmation, c'est mettre Vrai dans sa valeur. Le baisser, c'est y mettre Faux. Vérifier la valeur du drapeau, ce n'est pas le lever.
cette macro contien ta ligne de code pour s arreter si le flag est levé.
Il semble que tu ais compris :)

le probleme est que des que uje lance la premiere macro, un message d erreur apparait et me dit methode incorrect...et la premiere ligne est surlignée, celle qui lève le flag!
Ou pas ? :heink:

---------------------

J'espère que tu utilises l'Option Explicit !
(Pour les programmeurs confirmés, 10 coups de fouet en cas de manquement. Pour les novices, passage obligatoire par la documentation, puis 10 coups de fouet en cas de récidive !)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 132
Messages
6 718 001
Membres
1 586 388
Dernier membre
mery2005
Partager cette page
Haut