Private sub (intersect TARGET - changement de lignes)

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

  • sequence_RH.xls
    48.5 KB · Affichages: 26

Dranreb

XLDnaute Barbatruc
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 …
 

zebanx

XLDnaute Accro
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:

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 871
dernier inscrit
Maïmanko