Bonjour,
Je vais essayé d'être le plus précis possible...
Classeur #1 = fichier xls où je ne veux/peux pas accéder au code VBA
Classeur #2 : mon fichier, où je veux détecter un changement de valeur de certaines cellules sur une feuille portant toujours le même nom.
Ce que j'ai déjà fait dans mon fichier (Workbook_Open) :
1) connaitre le nom de mon fichier => my_filename = ThisWorkbook.Name
2) Connaitre le nom du classeur #1 également ouvert :
3) Copier les donner du classeur #1 et les coller les liens dans une feuille "Live_data" de mon classeur #1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For Each W In Workbooks If W.Name <> my_filename Then match_filename = W.Name End If Next W
4) Mon classeur "Feuil1", j'ai lié manuellement via formule (=Live_data!E10 (etc...)), chaque cellule avec les cellules correspondantes de la feuille "Live_data"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Workbooks(match_filename).Activate Call SHEET_EQUIPE_MATCH Range("B1:AB52").Select Selection.Copy Workbooks(my_filename ).Activate Sheets("Live_data").Select Range("A1").Select ActiveSheet.Paste Link:=True
Du coup, ça fonctionne : à chaque changement de valeur du fichier #1, mes cellules de la "Feuil1" ont bien les valeurs souhaitées.
Je veux générer des ouvertures d'Userform selon les valeurs de ces cellules, si la valeur de cette cellule est égale à un certain nombre, mais uniquement la première fois.
Cela fonctionne également, via l'évenement "Worksheet_Calculate"...mais pour se faire j'ai dû créé une variable type Integer pour chaque cellule que je mets à 1 dès que la valeur à ouvert l'Userform, et qu'il ne lance plus l'userform au prochain changement d'une autre cellule.
Je souhaiterais alléger et simplifier tout ça...dans l'idéal je pensais utiliser l'évènement "Change" en utilisant Target...mais comme j'ai des formules dans mes cellules ("=Live_data!E10") il n'y a pas de target change...et du coup cela ne fonctionne pas.
D'où ma question : comment puis-je détecter un changement de valeur d'un autre classeur ?
J'espère que tout cette explication reste compréhensible...
Merci d'avance à ceux qui prendrons le temps de me répondre.
Partager