IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

erreur d'exécution 94 sur variable date [AC-97]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 120
    Points : 56
    Points
    56
    Par défaut erreur d'exécution 94 sur variable date
    Bonjour à tous et merci d'avance pour votre aide.

    Une table CDCLI contient la variable date DELAICLI.

    Je veux tester si cette variable est vide pour demander à l'opérateur de rentrer une valeur, mais dès que je lis cette variable, l'erreur d'exécution 94 apparait et mon code s'arrête

    Par exemple, ce simple test suffit à suspendre VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande252_Click()
    MsgBox (Forms!CDCLI!DELAICLI)
     End Sub
    J'ai essayé de faire ceci avant de solliciter la variable, en définissant F comme Variant mais c'est ma même chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDate(Forms!CDCLI!DELAICLI) = False Then
    F = ""
    Else
    F = Forms!CDCLI!DELAICLI
    End If
    Je ne vois pas bien ....

    Merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    C'est plus tôt dans ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande252_Click()
    If IsNull(Me.DELAICLI) Then
        MsgBox "veuillez remplir le champ date !"
        Me.DELAICLI.SetFocus
    End If
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Merci de ton retour Hyperion

    J'ai essayé ton code en test : l'erreur n'apparait plus, mais même si DELAICLI est renseigné, la msgbx s'affiche ...

    Ceci qui correspond plus à mon besoin, me renvoie à nouveau l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If IsNull(Me.DELAICLI) Then
    MsgBox ("Impossible d'envoyer le Mail : Le Délai n'est pas renseigné" & Chr(13) & Chr(13) & "Veuillez corriger et recommencer")
    Exit Sub
    End If
    Si je comprend pourquoi pourquoi déjà ceci ne marche pas, je pourrais régler le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande252_Click()
    MsgBox (Forms!CDCLI!DELAICLI)
     End Sub
    Dans ce petit code, rien de plus commun pourtant ...

    Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    La syntaxe que j'ai proposé est fonctionnelle. Que la textbox soit indépendante ou non.
    Si pas de valeur dans la textbox, voir img. Si une valeur est saisie il n'y a plus de message.
    Date commande = DELAICLI

    Pour votre erreur 94, lire ceci svp. C'est dans l'aide VBA.
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Bonsoir. Merci pour ta réponse.
    Je ne doute pas que ta syntaxe fonctionne parfaitement, mais mon application est différente et je dois donc l'adapter.

    Dans mon cas, pas de textbox : si champ du formulaire n'est pas renseigné, on sort de la macro et on ne renseigne pas le champ par une textbox.

    J'ai pris l'exemple du msgbox car je comprend as pourquoi, ce simple msgbox ne fonctionne pas ...

    Pour être certain qu'on se comprenne, voici la totalité de mon code actuel (qui marchait pourtant avant une mise à jour Windows ...). Il envoi un email lorsque les champs du formulaire sont renseignés

    C'est clairement la ligne 38 qui provoque l'erreur : j'ai essayé de déclaré ma variable F en date, string ou variant : ça ne change rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    Private Sub Commande192_Click()
    ''''''''''''''''''''''''''''''''
    ' ENVOI AR par EMAIL VIA CDO
    ''''''''''''''''''''''''''''''''
     
    ' ====================================================
    ' Impirmer la pièces avant de la traiter par email :
    ' ====================================================
     
    Me.DATECH.SetFocus
     
    imprim
     
    DoCmd.OpenReport "AR Auto"
     
    ' ====================================================
    ' Pour être certain que le fichier est crée
    ' ====================================================
     
    Do While DIR("D:\Gescom\Temp\AR Auto.pdf") = ""
    DoEvents
    Loop
     
    ' ====================================================
    ' Déclaration des Variables
    ' ====================================================
     
    Dim A As String, B As String, C As String, D As String, e As String, F As String, X As String, AL As String, CL As String, VL As String
    Dim REMA As Variant
    Dim G As Currency, h As Currency, I As Currency
    Dim AA As String, AB As String, AC As String, AD As String, AE As String, af As String, AG As String, ZA As String, ZZ As String
     
    A = Forms!CDCLI!FAX
    B = Forms!CDCLI!NUMCLI
    C = Forms!CDCLI!ARNO
    D = Forms!CDCLI!DATECDE
    e = Forms!CDCLI!CDREG
    F = Forms!CDCLI!DELAICLI
    G = Format(Forms!CDCLI!TOTALTTC, "0.00")
    X = Forms!CDCLI!SOCIETE
    AL = Forms!CDCLI![SOCIETE-LIV]
    CL = Forms!CDCLI![CD-LIV]
    VL = Forms!CDCLI![VILLE-LIV]
     
    If Forms!CDCLI![REMARQ] = "" Then
    REMA = ""
    Else
    REMA = "Remarques complémentaires figurant sur l'AR joint : <br/>" & Forms!CDCLI![REMARQ]
    End If
     
    MsgBox (F)
     
    ' ====================================================
    ' Verif présence email puis délais
    ' Si sortie du msg box, on supprime le fichier créé
    ' ====================================================
     
    If A = "" Then
     
    MsgBox (Chr(13) & "Impossible d'envoyer le Mail : Il n'y a pas d'adresse email dans la case correspondante" & Chr(13) & Chr(13) & "Veuillez corriger et recommencer")
    Kill ("D:\Gescom\Temp\AR Auto.pdf")
    Exit Sub
    End If
     
    If Len(F) = 0 Then
    MsgBox ("Impossible d'envoyer le Mail : Le Délai n'est pas renseigné" & Chr(13) & Chr(13) & "Veuillez corriger et recommencer")
    Kill ("D:\Gescom\Temp\AR Auto.pdf")
    Exit Sub
    End If
     
    ' ====================================================
    ' COnfirmer l'envoi ou Supprime le fichier créé
    ' ====================================================
     
    If MsgBox("Confirmez l'envoi de l'AR de Commande au client " & X & " ?", vbYesNo, "Demande de confirmation") = vbNo Then
    Kill ("D:\Gescom\Temp\AR Auto.pdf")
    Exit Sub
    End If
     
     
    ' ====================================================
    ' Génére le fichier avec le chrono dans le nom
    ' ====================================================
     
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.CopyFile "D:\Gescom\Temp\AR Auto.pdf", "D:\Gescom\Temp\AR " & C & ".pdf", True
    Set FSO = Nothing
     
    ' ====================================================
    ' Génère le corps du mail
    ' ====================================================
    DoEvents
    AA = "Ceci est un message Automatique." & "<br/><br/>" & "Madame, Monsieur,<br/><br/>Nous vous remercions vivement pour votre ordre dont nous en accusons réception. Les principales informations sont rappelées ci-dessous :<br/><br/>"
    AB = "N/REF : " & C & "<br/><br/>"
    AC = "Votre commande N° " & B & " du " & D & "<br/>Montant TTC : " & G & " EUR<br/>Règlement : " & e
     
    AD = "<br/>==========================<br/>Date de Livraison initiale : " & F & "<br/>==========================<br/><br/> Lieu de Livraison : " & AL & " - " & CL & " " & VL & "<br>"
     
    DoEvents
    AE = "<br/><U/>Le délai ci-dessus est théorique (délai maximum constaté). En cas de modification, vous receverez alors un nouvel AR.<br/></U><br/>Votre interlocuteur commercial est à votre disposition pour vous apporter toute précision complémentaire.<br/>"
    AG = "<br/>Cordiales Salutations<br/>"
    DoEvents
     
    DoEvents
    On Error GoTo Error_send
        Dim oCdo As Object
     
        Set oCdo = CreateObject("CDO.Message")
     
        With oCdo
            With .Configuration.Fields
    DoEvents
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'nom ou IP du serveur SMTP
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = "25" 'port utilisé
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "administratif@toto.fr"
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxxx"
    DoEvents
    .Update
    DoEvents
            End With
     
    ' ====================================================
    ' Envoi du mail
    ' ====================================================
            .Subject = "AR de votre Commande N° " & B
            .From = "administratif@toto.fr"
            .To = A
            .HTMLBody = ZZ & "<br><br><img src=https://i.goopics.net/xx.png>"                                                                 ' corps du message en format texte brut
     
            .MDNRequested = True
            .AddAttachment "D:\Gescom\Temp\AR " & C & ".pdf"
            DoEvents
            .Send
     
        End With
     
    ' ====================================================
    ' Index OK pour indiqué que le mail est envoyé
    ' ====================================================
     
    MsgBox "AR de Commande envoyé à " & X & " !"
    Dim ZAR1 As String
    ZAR1 = "O"
    Form!AR1 = ZAR1
     
    ' ====================================================
    ' Sortie de CDO + Suppression des Pdf créés
    ' ====================================================
    fin:
        Set oCdo = Nothing
     
            If "D:\Gescom\Temp\AR Auto.pdf" <> "" Then
            Kill ("D:\Gescom\Temp\AR Auto.pdf")
            End If
     
     
        If "DD:\Gescom\Temp\AR " & C & ".pdf" <> "" Then
        Kill ("D:\Gescom\Temp\AR " & C & ".pdf")
        End If
     
        Exit Sub
     
    ' ====================================================
    ' Affichage erreur pour Débug
    ' ====================================================
     
    Error_send:
        MsgBox "Erreur d'envoi " & Err.Number & "  " & Err.Description
        Resume fin
    End Sub

  6. #6
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    C'est pour ça que je suis revenu à ce simple test avec ce simple code pour tenter de comprendre ce qui ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande252_Click()
    MsgBox (Forms!CDCLI!DELAICLI)
     End Sub
    Me provoque également l'erreur 94 ... le champ et la variable DELAICLI existe bien pourtant

    Merci d'avance

  7. #7
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    En cliquant sur ton btn de commande, tu n'as plus le focus sur tes textbox
    Donc il faudrait passer en L38 F = Forms!CDCLI!DELAICLI.Value.

    Un truc, ton formulaire est-il attaché à une source (tbl/qry) ou est-ce un form indépendant?
    Si ton form est rattaché à une source, il est tout à fait possible que lorsque le champ est "vide", il ne soit pas nul mais vide.
    Donc en L65 If Len(Nz(F,"")) < 1 Then.

    Si on a le focus sur la textbox F = Forms!CDCLI!DELAICLI.Text,
    Si on n'a pas le focus sur la txtbox F = Forms!CDCLI!DELAICLI.Value
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  8. #8
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Merci pour ton aide.

    Ca ne marche pas alors que ça marchait avant la mise à jour Windows... incompréhensible

    Ca marche si je bascule la variable dans la table en texte et pas en date et j'utilise si xx ="" ... sans doute une histoire d'initialisation

    Tant que ceci me renvoie l'erreur, je ne pourrais pas avancer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande252_Click()
    MsgBox (Forms!CDCLI!DELAICLI)
     End Sub
    Donc, je reste en variable texte même si ce n'est pas satisfaisant

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] erreur d'automation : l'objet invoqué s'est déconnecté de ses clients - sur variable date
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/02/2016, 01h35
  2. Problème sur variable date [BO 5.1.9]
    Par LOPEZ dans le forum Deski
    Réponses: 6
    Dernier message: 06/06/2014, 08h23
  3. [AC-2007] Requete SQL sur variables date avec #
    Par KIK83 dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/10/2009, 06h31
  4. VBA Erreur d'exécution '459' sur un userform
    Par micom59 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/02/2009, 20h12
  5. erreur d'exécution '48' sur windows 98 SE
    Par florenzo28 dans le forum Windows 2000/Me/98/95
    Réponses: 1
    Dernier message: 18/02/2006, 22h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo