Quelle est mon erreur...

Ajt67 Messages postés 10 Statut Membre -  
Patrice33740 Messages postés 8400 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

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