Macro à déclencher sous conditionS

Bonjour à tous et Joyeuses Fêtes,

Je travaille sur un fichier excel qui est régulièrement alimenté en données par un logiciel tierce (avec une fréquence irrégulière toutes les 4 à 10 secondes).

J'ai reproduit le fonctionnement de base de ce fichier dans l'exemple ci-joint :

1. le logiciel colle des valeurs dans les cellules B2, B3, B4, B5

2. le logiciel indique dans la cellule B6 par un "Yes" le moment où les données sont complètes

3. normalement, une fois que le logiciel a réalisé 1/ et 2/, il lance dans le fichier excel la macro dataupdate() qui va stocker les valeurs dans une autre feuille

Mon problème :

Il semble que parfois le logiciel tierce ne lance pas la macro dataupdate().

Les conditions de ce "raté" ne sont pas claires, et je n'ai pas la possibilité de retoucher le code du logiciel tierce.

Mon besoin vise donc à mettre en place une procédure de contrôle dans mon fichier excel dont le fonctionnement serait le suivant :

a/ à chaque fois que la macro dataupdate() est lancée (soit par le logiciel soit par tout autre moyen), le timing doit être stocké dans une cellule du feuillet 3 (AAAA/MM/JJ/HH/mm/SS). Appelons ce timing T1. L'insertion de ce timing T1 peut être ajoutée à la fin de la macro dataupdate().

b/ à chaque fois que "Yes" est collé dans B6 par le logiciel tierce, le timing doit être stocké dans une autre cellule du feuillet 3 (AAAA/MM/JJ/HH/mm/SS). Appelons ce timing T2. Cette insertion doit être réalisée automatiquement lorsque la valeur de B6 passe de vide (ou tout autre suite de caractères) à "Yes".

c/ Permettons de paramétrer manuellement dans une troisième cellule du feuillet 3 un délai (en secondes par exemple). Appelons ce délai D.

d/ à T2+D, si dataupdate() n'a pas été lancée, alors le fichier lancera de lui-même cette macro 1 fois.

Attention : en aucun cas il ne doit être possible que la macro dataupdate() soit lancée plusieurs fois d'affilée pour un même jeu de données (c'est à dire plusieurs fois après que le logiciel tierce ait collé une seule et même fois "Yes" dans B6).

Par exemple, il ne doit pas être possible :

  • que dataupdate() soit déclenchée une première fois par le logiciel tierce, et une deuxième fois par le fichier excel pour un même jeu de données (pour un même "Yes")
  • que dataupdate() soit déclenchée plusieurs fois par le fichier excel pour un même jeu de données (pour un même "Yes")
  • que dataupdate() soit déclenchée sans que "Yes" ne soit présent dans B6

Informations supplémentaires :

Entre 2 jeux de données, les données du feuillet "Data" sont forcément différentes donc cela (en plus de la présence de "Yes" dans B6) peut être utilisé s'il on veut s'assurer que le jeu de données est bien nouveau.

Pour tout cela, on ne peut pas utiliser de formules volatiles ou matricielles ou de systèmes qui ralentiraient trop le fonctionnement du fichier.

Merci d'avance pour votre aide!

Nicole

9exemple.xlsm (15.31 Ko)
Rechercher des sujets similaires à "macro declencher conditions"