Classeur qui s'ouvre seul

bonsoir à tous,

dans le fichier Visu ci-joint ( mot de passe: Charel), j'utilise dans le module 2 la fonction Application.OnTime pour lancer toutes les minutes la sub ligne_actu.

Dans This Workbook, j'ai tapé un code dans la sub StopHorloge pour empêcher le classeur de s'ouvrir seul après sa fermeture.

Mais, ça ne marche pas: le classeur s'ouvre au bout d'une minute sans que je le lui demande.

Je ne vois vraiment pas pourquoi.

La seule solution que j'ai trouvée, c'est de fermer complètement excel.

Si quelqu'un pouvait m'aider.

Merci d'avance.

Jojo la frite

20visu.xlsm (346.68 Ko)
28charge-planifiee.xlsm (950.98 Ko)

Bonjour,

Et en mettant fin à toutes les macros en cours avec l'instruction brutale : End

Serait-ce acceptable ?

Public Sub StopHorloge_vi()
On Error Resume Next

Application.OnTime EarliestTime:=TimeValue(Now()), Procedure:="ligne_actu", LatestTime:=nextime + TimeSerial(0, 5, 0), Schedule:=False
End

End Sub

ric

Bonsoir Ric,

merci pour votre aide, mais malheureusement, ça ne marche pas..

Jojo la frite

Rebonjour,

Sous Excel 2016, ceci fonctionne ...

De la macro horloge_vi, j'ai enlevé : Dim Nexttime As Variant pour le mettre tout en haut : Public Nexttime As Variant afin de pouvoir passer la valeur de Nexttime dans la macro StopHorloge_vi

Puis, j'ai modifié cette dernière pour :

Public Sub StopHorloge_vi()
On Error Resume Next

'''Application.OnTime EarliestTime:=TimeValue(Now()), Procedure:="ligne_actu", LatestTime:=nextime + TimeSerial(0, 5, 0), Schedule:=False
Application.OnTime EarliestTime:=TimeValue(Nexttime), procedure:="ligne_actu", LatestTime:=TimeSerial(0, 0, 0), schedule:=False

End Sub

ric

Bonjour,

Pour moi le problème est que nextime n'est pas défini dans la procédure.

Public Sub StopHorloge_vi()
On Error Resume Next

Application.OnTime EarliestTime:=TimeValue(Now()), Procedure:="ligne_actu", LatestTime:=nextime + TimeSerial(0, 5, 0), Schedule:=False

End Sub

soit on passe la définition de nextime en public, soit on reprend la même définition que dans Sub horloge_vi()

Bonjour ric et Steelson,

Merci pour votre aide.

Seule la solution de ric fonctionne. Je n'ai plus le soucis d'ouvertures intempestives.

Bon weekend et encore merci beaucoup !

Jojo la frite

Sujet intéressant Jojo la Frite

Quel est le rôle de min dans cette procédure ?

Public Sub horloge_vi()
Dim min As Integer
Dim nexttime As Variant

   nexttime = TimeSerial(Hour(Now), Minute(Now) + 1 - min, 0)

   If Hour(nexttime) = 0 And Minute(nexttime) = 0 Then nexttime = nexttime + TimeSerial(0, 1, 0)

Application.OnTime EarliestTime:=TimeValue(nexttime), Procedure:="ligne_actu", LatestTime:=nextime + TimeSerial(0, 5, 0)

End Sub

De la macro horloge_vi, j'ai enlevé : Dim Nexttime As Variant pour le mettre tout en haut : Public Nexttime As Variant

Ah ben cela me conforte !

@ Jojo

il me semble que tu utilises tantôt nextime, tantôt nexttime, notamment dans la même procédure

Public Sub horloge_vi()
Dim min As Integer
Dim nexttime As Variant

   nexttime = TimeSerial(Hour(Now), Minute(Now) + 1 - min, 0)

   If Hour(nexttime) = 0 And Minute(nexttime) = 0 Then nexttime = nexttime + TimeSerial(0, 1, 0)

Application.OnTime EarliestTime:=TimeValue(nexttime), Procedure:="ligne_actu", LatestTime:=nextime + TimeSerial(0, 5, 0)

End Sub

pas en option explicit pour tout accorder

Pour le rôle de min, il s'agit d'une variable que j'utilise dans le code d'origine pour que la macro démarre et tombe toutes les 10 minutes sur l'horloge. Je ne voulais pas que la macro s'exécute toutes les 10minutes après l'ouverture du fichier.

( Ceci dit, j'aurais aimé que ce soit chaque quart d'heure de l'horloge mais je n'y arrive pas...)

N'étant pas chez moi, je vous enverrai le code d'origine plus tard .

Concernant nexttime et nextime, il s'agit d'une erreur. Les 2 doivent être identiques.

À bientôt.

Jojo la frite

Voici donc le code d'origine permettant de démarrer la macro toutes les 10 minutes sur l'horloge.

min est la variable à laquelle est attribué le restant de la division: ( minutes actuelles+10)/10

(J'ajoute 10 sinon, pour les 9 premières minutes sur l'horloge, ça ne marche pas.)

donc en déduisant min des minutes actuelles, dans la variable nexttime, je tombe pile poil sur la dizaine de minute.( exemple: 13h10, 13h20, 13h30....)

Public Sub horloge_vi()

End Sub

Dim min As Integer

   min = (Minute(Now) + 10) Mod 10
   nexttime = TimeSerial(Hour(Now), Minute(Now) + 10 - min, 0)

   If Hour(nexttime) = 0 And Minute(nexttime) = 0 Then nexttime = nexttime + TimeSerial(0, 1, 0)

Application.OnTime EarliestTime:=TimeValue(nexttime), Procedure:="ligne_actu", LatestTime:=nexttime + TimeSerial(0, 5, 0)

End Sub

Si quelqu'un pouvais trouver la solution pour que la macro démarre chaque quart d'heure sur l'horloge, je suis preneur

Jojo la frite

Bonjour,

il y a souvent des pertes de précisions avec les temps.

Arrondi-les partout où tu les utilises :

round(ton_temps, 7)

Sinon je suis d'accord avec Steelson : on annule une programmation en indiquant son heure (+ date éventuellement) que l'on a sauvegardée.

eric

Si quelqu'un pouvais trouver la solution pour que la macro démarre chaque quart d'heure sur l'horloge, je suis preneur

nexttime = TimeSerial(Hour(Now), Minute(Now) + 15 - (Minute(Now) Mod 15), 0)

La preuve en image !

capture d ecran 106

Génial, c'est exactement ce que j'attendais.

J'aurais quand même pu trouver la solution tout seul

Pour la solution d'Eriic, j'y réfléchirai plus tard.

Merci pour votre aide précieuse !

Jojo la frite

Si ton problème était de comment le calculer ma précédente proposition ne te sert à rien.

Je pensais que tu avais des aléas de fonctionnement.

Tu peux aussi le calculer de façon plus courte ainsi :

nexttime = Int(Time() * 96 + 1) / 96

eric

J'aurais quand même pu trouver la solution tout seul

Ben oui Jojo

pour ta punition, tu me livreras une frite

@Steelson : tu as écrit : « tu me livreras une frite » ; une seule frite ? ça fait un peu léger, comme repas ! j'espère que t'as voulu dire « une portion de frites » ou « une barquette de frites » ! moi aussi, j'en veux bien une ! et même une double portion !


@jojo la frite : j'suis un peu fatigué, ce soir, et j'ai la flemme d'ouvrir mon classeur Excel ; tu veux pas m'passer le tien qui s'ouvre tout seul ? y'en a qui sont vernis, quand même ! ils ont leur classeur qui s'ouvre tout seul ... et après, v'là qu'ils trouvent encore le moyen d'se plaindre !

dhany

Désolé les gars, j'ai pas pu résister ! J'ai mangé toutes les frites ! Du coup, j'n'ai plus la patate !

. Ok, je sors , je la ferme et surtout je le l'ouvre plus, comme mon classeur !

oh le gourmand ! il a rien laissé pour nous !!! j'ai faim, moi ! on va devoir jeûner, alors ? c'est carême ?

Rechercher des sujets similaires à "classeur qui ouvre seul"