Private sub (intersect TARGET - changement de lignes)

  • Initiateur de la discussion Initiateur de la discussion zebanx
  • 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 !

zebanx

XLDnaute Accro
Bonjour à tous,

Sur le fichier ci-joint, j'ai un problème de RANGE de déclenchement suite changement de valeurs dans la feuille "E".

En résumé et en essayant d'être clair:

Objectif de la macro principale :
ajouter ou supprimer dans le tableau en C les lignes non reconnues sur le tableau E :
- Si code colonne "A" dans tableau C non retrouvée dans col. "A" tableau E, la ligne est supprimée
- Si code col. "A" dans tableau E non retrouvée colonne "A" dans tableau C, on la copie après la dernière ligne dans le tableau "C"

Les codes fonctionnent et une privatesub, actuellement "calée" sur la colonne "F", permet de lancer les macros (tri + principale) qui font ce travail mais sur une ligne de travail sur le tableau E, les cellules (TARGET) des colonnes A à F peuvent être modifiées (donc entre 1 et potentiellement 6 modifications) et je souhaiterai donc que les macros ne se lancent qu'après avoir changé de ligne par exemple.

Actuellement, le code est lancé uniquement si changement sur colonne en colonne "F" et cela ne convient pas.
Comment dans ce cas modifier la ligne en rouge svp pour ne faire agir ce code qu'après changement de ligne (ce qui me parait être une bonne approche) ?

Vous remerciant pour vos remarques / modifications, bonne journée

zebanx

------
Private Sub Worksheet_Change(ByVal Target As Range)
aw = ActiveSheet.Name
ac = ActiveCell.Address(0, 0)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("F:F")) Is Nothing Then '--E1
Call tri_tableau_sheetsCE
Call compare_liste_tableaux
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Sheets(aw).Activate
Range(ac).Select
'--E1 : attendre que la ligne soit remplie
End Sub
 

Pièces jointes

Bonjour.
Essayez comme ça :
VB:
Option Explicit
Private Ligne As Long
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Application.Intersect(Target, Range("F:F")) Is Nothing Then Ligne = Target.Row
   End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Ligne = 0 Or Ligne = Target.Row Then Exit Sub
   Application.EnableEvents = False
   tri_tableau_sheetsCE
   compare_liste_tableaux
   Application.EnableEvents = True
   Ligne = 0
   End Sub
Mais j'ai l'impression qu'au final tout ça ne fait rien …
 
Merci Dranreb pour ta réponse

C'est déjà une piste. Je continue de chercher de mon côté.
Et peut-être qu'un bouton qui lance les deux macros serait la solution la plus acceptable...vos remarques me sont utiles, n'hésitez pas !

@+
zebanx
 
Dernière édition:
- 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 worksheet_change
Réponses
29
Affichages
482
Réponses
7
Affichages
620
Retour