Quelle est mon erreur...

Ajt67 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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   Statut Membre Dernière intervention  
 
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention  
 
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Sans le code complet, difficile d'aller au-delà !!!
0
Ajt67 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention  
 
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 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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