Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

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.

  1. ' // Code de la feuille "Autre Page"
  2.  
  3. Public flg_loading As Boolean
  4.  
  5. Sub Worksheet_Change()
  6. If flg_loading Then Exit Sub
  7. ....
  8. 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.
  1. ' // Code de la feuille "Première Page"
  2.  
  3. Sub Copie_Donnees()
  4. Worksheets("Autre Feuille").flg_loading = True
  5. ' // Copie de cellule
  6. ....
  7. Worksheets("Autre Feuille").flg_loading = False
  8. End Sub


Et voilà ! :sol: 

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

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = "$A$3" Then
  3. rest du code....
  4. End If
  5. 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!
PATPOWER a édité ce message
Expert Programmation

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]
zeb a édité ce message

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!
Expert Programmation

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 :
  1. 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]
Expert Programmation

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: 

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..
PATPOWER a édité ce message
Expert Programmation

Merci pour l'édition de ton message. Je n'en demande pas plus. :jap: 
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.
Citation :
cette macro contien ta ligne de code pour s arreter si le flag est levé.

Il semble que tu ais compris :) 

Citation :
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 !)
Lassé par la pub ? Créez un compte