Détecter un changement de valeur de cellule d'un autre classeur Excel
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 :
For Each W In Workbooks
If W.Name <> my_filename Then
match_filename = W.Name
End If
Next W
3) Copier les donner du classeur #1 et les coller les liens dans une feuille "Live_data" de mon classeur #1
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
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"
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.
Bonjour,
Je voudrais bien vous aider mais j'ai vraiment du mal à saisir ce que vous voulez dire ici :
"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."
Si vous avez fait plein de variables, considérez faire une liste plutot.
Quant à vos userforms, pourquoi ne pas en faire un générique, qui s'adapte via certains paramètres ?
Sans exemples plus concrets je ne vois pas trop comment vous aider, envoyer un fichier si possible.