Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 macro evenementielle

  • Initiateur de la discussion Initiateur de la discussion hbb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hbb

XLDnaute Occasionnel
Bonjour à tous,
Je fais appel à vos talents concernant les macros événementielles de type "changement de valeur dans une cellule".
Mon besoin est d'avoir 3 types d'événements dans la même feuille et c'est là que ça coince....

Pour résumer le fonctionnement des tableaux :
Dès qu'on change le nombre de pièces à produire dans le tableau1 :
- les 3 lignes de totaux de ce même tableau se mettent à jour en auto => 1er événement
- le calcul du nombre d'équipes dans le tableau 2 se fait en auto => 2ème événement
- A l'inverse, quand on modifie manuellement le nombre d'équipes à produire dans le tableau2, le calcul du nombre de pièces dans le tableau1 se lance en auto (avec les totaux) => 3ème événement

J'ai beau triturer les codes dans tous les sens, je n'y arrive plus....

Si quelqu'un a une piste, ce serait super !!!

merci d'avance,
hbb
 

Pièces jointes

Bonjour Hbb,
Dans une feuille il ne peut y avoir qu'une seule macro événementielle d'un type, pas plusieurs.
Il faut différencier les plages au sein de cette macro événementielle.
Par ex avec Worksheet_Change:
VB:
Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    premLigTablo1 = 5
    premLigTablo2 = 14
    premLigTablo3 = 26
    Application.ScreenUpdating = False
    If Not Intersect(Target, Range(Cells(premLigTablo1 + 1, 7), Cells(premLigTablo2 - 4, 23))) Is Nothing Then      ' Test si plage1
        'Si modification de la quantité de pièces Tableau1, calcul auto du nombre d'équipes Tableau2
        ' Macro de traitement
    ElseIf Not Intersect(Target, Range(Cells(premLigTablo2 + 1, 7), Cells(premLigTablo3 - 4, 23))) Is Nothing Then  ' Test si plage2
        'Si modification du nombre d'équipes Tableau2, calcul auto du nombre de pièces tableau1
        ' Macro de traitement
    End If
Fin:
End Sub
 
Bonjour Sylvanu,
Merci pour ton aide, effectivement ça fonctionne mieux,
En revanche, ce qui parait logique, c'est que la boucle ne semble pas s'arrêter.
Explication : La cellule 1 est modifiée ce qui entraine la màj de la cellule 2.
La cellule 2 est donc modifiée, ce qui entraine un nouveau calcul pour la cellule 1 etc....

Y a-t-il un moyen de limiter les macros à 1 seul traitement ?

J'ai mis en pj le fichier modifié suivant ta proposition

merci d'avance,
hbb
 

Pièces jointes

C'est classique.
Pour éviter cela il faut invalider les events, en fait les interdire, et les ré autoriser à la fin avec :
Code:
Application.EnableEvents = False  ' Interdit tout event'
Application.EnableEvents = True   ' Autorise les events'
VB:
Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    premLigTablo1 = 5
    premLigTablo2 = 14
    premLigTablo3 = 26
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If Not Intersect(Target, Range(Cells(premLigTablo1 + 1, 7), Cells(premLigTablo2 - 4, 23))) Is Nothing Then      ' Test si plage1
        'Si modification de la quantité de pièces Tableau1, calcul auto du nombre d'équipes Tableau2
        ' Macro de traitement
    ElseIf Not Intersect(Target, Range(Cells(premLigTablo2 + 1, 7), Cells(premLigTablo3 - 4, 23))) Is Nothing Then  ' Test si plage2
        'Si modification du nombre d'équipes Tableau2, calcul auto du nombre de pièces tableau1
        ' Macro de traitement
    End If
Fin:
Application.EnableEvents = True
End Sub
Attention cependant, il faut absolument sortir par la fin "naturelle" de la macro, et ne pas mettre d' "exit sub" car alors les events resteraient OFF et la macro ne pourrait plus être rappelée, sauf à fermer le fichier et le ré ouvrir.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 concours pétanque
Réponses
0
Affichages
193
Réponses
15
Affichages
1 K
  • Question Question
Microsoft 365 Macro VBA
Réponses
1
Affichages
398
Réponses
7
Affichages
972
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…