Quelle est mon erreur...

Fermé
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018 - Modifié par Chris 94 le 10/05/2016 à 20:55
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 11 mai 2016 à 21:13
Voilà, j'ai un code écrit comme suit :

Private Sub Woorkbook_BeforeClose(Cancel As Boolean)
    Application.OnTime SaisieTimerSaveAuto, "Sauvegarde-Auto",  ,  False
    If Me.Saved = False Then Me.Save
    If Me Saved = False Then Cancel = True
End Sub


Le soucis que j'ai c'est que cela fonctionne sur un ordinateur et lorsque j'installe le fichier sur un autre ordinateur, cela ne fonctionne pas. J'ai une boite de dialogue qui s'affiche :
"Erreur de compilation dans le module caché : ThisWoorkbook"
Quand on clic "OK" une nouvelle boite souvre et on a :
"Erreur d'exécution '1004':
La méthode 'OnTime' de l'objet '_Application' a échoué.

J'ai bien compris en cherchant à déboguer que c'est la ligne :
"Application.OnTime SaisieTimerSaveAuto, "Sauvegarde-Auto", , False"
qui pose problème. Je n'ai pas écrit ce code et je n'arrive pas à trouver la solution...

Merci pour votre aide.

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 10/05/2016 à 14:21
Bonjour,

Je suis très surpris que « cela fonctionne sur un ordinateur » !!!

Pourrais-tu nous indiquer sur quel type d'ordinateur, avec quel OS et quelle version d'Excel ???

A ma connaissance le VBA n'accepte pas de nom de variable contenant un tiret !!!!

Cordialement
Patrice
0
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018
10 mai 2016 à 15:27
Bonjour, je crois que tu as mal interprété la ligne contenant "_Application", ceci fait parti de la message box "Erreur d'exécution '1004'
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
10 mai 2016 à 16:46
Je répète :
A ma connaissance le VBA n'accepte pas de nom de variable contenant un tiret !!!!

c'est-à-dire : Sauvegarde-Auto
0
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
10 mai 2016 à 18:34
Houla............ mille excuses !!! Je devais pas avoir les bonnes lunettes :-(

c'est effectivement faux il fallait lire, ou plutôt écrire :

Application.OnTime SaisieTimerSaveAuto, "Sauvegarde_Auto", , False

Mais le code était écrit juste dans le programme, c'est dans ma demande que c'était mal rédigé. Donc le problème persiste et cet après-midi, je me suis mis à un autre poste............. ça fonctionne. Je reprend la clé USB, je retourne au poste précédent, ça fonctionne pas. Est-ce lié à la version d'Excel ??? Est-ce une différence d'installation d'Excel.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
10 mai 2016 à 22:53
Sans le code complet, difficile d'aller au-delà !!!
0
Ajt67 Messages postés 10 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 4 novembre 2018 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
11 mai 2016 à 13:46
Voilà le code complet dans ThisWorkBook :

Private Sub Workbook_Open()
If (Val(Application.Version) < 12 Or Val(Application.Version) >= 14) Then
Rep = MsgBox("Ce cahier n'est compatible qu'avec Excel 2007 et 2013", vbCritical + vbOKOnly, "Cahier de saisie des bateaux")
ThisWorkbook.Close
Else
UserForm9.Show
Sauvegarde_Auto
End If
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Il est déconseillé de COPIER/COLLER ou COUPER/COLLER dans cette application!!!", vbCritical + vbOKOnly
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime SaisieTimerSaveAuto, "Sauvegarde_Auto", , False
If Me.Saved = False Then Me.Save
If Me.Saved = False Then Cancel = True
End Sub

Ensuite, dans un module j'ai une macro :

Sub Sauvegarde_Auto()
' Rep = MsgBox("On est à " & FormatDateTime(SaisieTimerSaveAuto, vbGeneralDate), vbOKOnly)
ThisWorkbook.Save
SaisieTimerSaveAuto = DateAdd("n", 10, Now)
' Rep = MsgBox("Prochaine sauvegarde à " & FormatDateTime(SaisieTimerSaveAuto, vbGeneralDate), vbOKOnly)
Application.OnTime SaisieTimerSaveAuto, "Sauvegarde_Auto", , True
End Sub

Voilà le code complet.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 11/05/2016 à 21:13
Bonjour,

Si c'est là, la totalité du code, c'est normal que ça ne fonctionne pas.

Le premier conseil que je donnes aux débutants VBA c'est de commencer tous leurs modules (standard, de feuille ou de classe) par Option Explicit.

Tu devrais essayer, ça te permettra de comprendre ton erreur.

Cordialement
Patrice
0