Exécution macro masqueligne en fonction de l'heure

Bonjour le forum

Je viens solliciter vos lanternes sur deux macros:

  • la 1ère dans la fin du module 1 me permet de masquer les lignes vides de mon tableau.
  • la 2è macro dans thisworkbook définit l'heure à laquelle le masque des lignes vides doit se réaliser.
Voici mes observations sur lesquelles je viens vers vous:

* Normalement, à chaque 18h00 (lundi à vendredi) et 13h pour les samedi, la macro masqueligne devrait s'exécuter mais tel n'est pas le cas. mais si je procède manuellement ca fonctionne.

Comment faire pour qu'elle fonctionne conformement au temps définit.

Je voulais ajouter des conditions :

Je veux que chaque jour (08H00), le tableau se réinitialise c'est à dire que les données du jour précédent doivent être effacées et les lignes masquées doivent s'afficher. donc j'ai à nouveau un tableau vide prêt à recevoir les données du jour j.

Je reste à votre disposition pour des éclaircissements.

Salut Zombe,

Bien que tu ne sois pas très doué pour donner suite à tes messages une fois que tu as la réponse désirée – et ceci bien que je t’en ai déjà fait la remarque – je veux bien t’aider encore. J’espère toutefois que tu modifies ta manière d’agir à l’avenir et que tu te conformes à la charte du Forum. Ainsi, si tu désires conclure les fils « en attente » pour lesquels je suis concerné, j’en serais très heureux.

Je pense que ton problème présenté ici vient du fait qu’une macro ne peut pas être lancée si le fichier n’est pas ouvert. Selon moi, tu dois donc modifier ton code afin qu’il s’active lors d’un événement possible, par exemple lors de l’ouverture du fichier. Lors de cet événement, tu pourrais alors lancer une macro qui contrôle si une certaine heure est déjà passée et – selon le résultat - si la macro « masqueligne » doit être lancée ou non.

Je ne peux pas t’aider beaucoup plus pour l’instant car je n’ai pas la version 2007 à disposition jusqu’à lundi, mais si tu essaies déjà d’appliquer mon idée et que tu as besoin d’aide complémentaire, je suis bien volontiers à ta disposition.

Cordialement.

Bonsoir Zombe, Yvouille

Comme le dis si bien Yvouille une macro ne peut pas s'exécuter si le fichier n'est pas ouvert

Donc pour ça il te faut créer une tache planifiée dans windows

=> Panneau de configuration => Tâches planifiées

Et tu lances l'ouverture de ton fichier 2 minutes avant l'heure d'exécution

Il est évident qu'il faut que l'ordinateur soit allumé pour cela

Une case à cochée est prévue pour ça, si ton ordinateur est en veille

A+

Bonsoir Yvouille et BrunoM45

Je vous remercie pour l'interêt que vous avez voulu accordé à mon problème.

J'ai certainement oublié de vous dire que le fichier est ouvert à l'heure ou la macro devrait s'exécuter mais qui ne se déclenche pas.

Yvouille a écrit :

Bien que tu ne sois pas très doué pour donner suite à tes messages une fois que tu as la réponse désirée – et ceci bien que je t’en ai déjà fait la remarque – je veux bien t’aider encore. J’espère toutefois que tu modifies ta manière d’agir à l’avenir et que tu te conformes à la charte du Forum. Ainsi, si tu désires conclure les fils « en attente » pour lesquels je suis concerné, j’en serais très heureux.

Je t'assure que je donne suite aux bonnes volontés. je deplore le faite que quand je clic sur le bouton résolu, le V ne s'affiche pas comme chez les autres que ca été résolu. Je vais revoir les sujets concernés pour revoir cela.

Je joins une version 2003 pour vous permettre de voire mon cas ci-possible.

Bonjour

Je viens de tester en modifiant légèrement la macro afin qu'elle s'exécute ce Dimanche et pas de problème

Voici la modification

Private Sub Workbook_Open()
  If Weekday(Date, vbMonday) = 6 Then
    Application.OnTime TimeValue("13:10:00"), "MasqueLignes"
  ElseIf Weekday(Date, vbMonday) < 6 Then
    Application.OnTime TimeValue("18:00:00"), "MasqueLignes"
  ElseIf Weekday(Date, vbMonday) = 7 Then
    Application.OnTime TimeValue("01:56:00"), "MasqueLignes"
  End If
End Sub

J'enregistre le fichier

Je ferme le fichier

J'ouvre le fichier et quelques instants plus tard la macro s'exécute et masque les lignes

Je ne vois pas où est le problème chez toi

Salut Banzai¨64

Merci de me donner main forte comme d'habitude.

J'apprécie beaucoup tes interventions.

Je vais tester chez moi également et vous revenir.

En attendant, j'avais ajouter une condition je sais pas si vous l'avez lu (voir ci-dessous):

Je veux que chaque jour, à l'ouverture du fichier, le tableau se réinitialise c'est à dire que les données du jour précédent doivent être effacées et les lignes masquées doivent s'afficher. donc j'ai à nouveau un tableau vide prêt à recevoir les données du jour j.

Bonne compréhension

Bonjour

Comment fait-on pour savoir que les données sont anciennes ?

Ton fichier est ouvert 24h/24 ?

Je pense (pas testé donc pas sur à 100%) que l'on peut programmer deux macros

Mais tant que tu n'as pas résolu le problème de la macro MasqueLigne, ce n'est pas la peine d'avancer

Edit : Après 1 test la programmation de deux macros fonctionne

Salut Banzaï64

effectivement ca marche.

Le fichier n'est pas ouvert 24h/24 mais je pourrais trouver 2cellules: une qui comportera la date du jour et l'autre la date de J-1.

Je pense que sur cette base tu pourra concocter quelque chose. Si les dates des 2cellules sont fifférentes, que la macro s'exécute.

Si cela n'est pas faisable, je reviendra avec une autre solution.

Bonjour

zombe a écrit :

2cellules: une qui comportera la date du jour et l'autre la date de J-1.

La date du jour ce n'est pas la peine on la connait

Ce qu'il faudrait c'est la date de copie des données dans le tableau, et a partir de là on peut envisager la macro

Je te laisse y réfléchir, moi j'ai rendez-vous avec Morphée

Bonne nuit

Salut Banzaï64

J'ai refflechis et j'ai trouvé une autre piste.

Je vais l'exposer et vous aller l"apprécier.

Ce qui m'a motivé à demander les masques de lignes, c'est pour éviter d'éditer un tableau avec des lignes vides qui entrainerait une consommation de l'encre.

Dans la même logique je me suis dis pourquoi faire un tableau à 36 lignes tout en sachant que ces 36 lignes ne seront pas toutes remplies.

N'est-il pas possible de faire un tableau au fur et à mesure du collage?

Donc voici la maquette de mon idée que vous verrez dans la pièce jointe:

Je fais une en tête avec une 1ère ligne avec le format souhaité (ligne et couleur du tableau).

Au collage, le système reproduit la mise en forme de la 1ère ligne et ainsi de suite.

Aussi l'expression suivante qui permet d'appeler 2 macros est-elle correcte?

Application.OnTime TimeValue("18:00:00"), "MasqueLignes", "Masquesesame"

Bonjour

Tu veux refaire ton tableau mais la problématique est toujours là : Comment savoir si les données sont anciennes

En plus la formule en case B11 sera différente de la case B12 et des suivantes : On complique ce qui était simple

Application.OnTime TimeValue("18:00:00"), "MasqueLignes", "Masquesesame"

Essayes et dis-moi

Sans tester ce n'est pas bon

Quelle idée d'appeler 2 macros différentes à la même heure : Il suffit d'appeler la 1ère qui appelle la seconde

Dans l'éditeur VB tu as une aide extraordinaire : Tu places le curseur sur un mot (exemple sur OnTime) ensuite tu appuies sur F1

Mon avis que je partage avec moi, il faut inclure la date de recopie des données dans une case afin que l'on puisse tester cette cellule et agir en conséquence

Ok pour la prise en compte de la date du jour.

En supposante que B15 de la feuille DONNE contient la date du jour.

On copie la date dans la cellule C2 de la feuille STATSE.

Lorsque la date du jour sera differente de la date en C2 de la feuille STATSE, cela signifie que nous sommes en J+1

Pouvez-vous revoir dans ce cas le code initial que vous m'aviez proposé pour intégrer la valeur date du jour.

Je reste dispo pour vous apporter des éclaircissements.

Bonjour

A vérifier

Merci Banzaï64. ca me convient parfaitement.

Je refais tous les test et te confirme.

Encore merci pour tout ce que ta déjà fait et que DIEU te bénisse.

Rechercher des sujets similaires à "execution macro masqueligne fonction heure"