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 :

Problème code VBA


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Problème code VBA
    Bonjour,

    J'ai le code Visual Basic ci dessous que j'ai appliqué à un formulaire.

    Ce que je voudrais faire c'est qu'après la fermeture de ce fomulaire un autre formulaire s'ouvre directement.

    J'ai essayé DoCmd.OpenForm (z) mais cela ne marche pas.

    (z) faisant référence à mon formulaire qui doit s'ouvrir après la fermeture de l'autre formulaire.

    Merci d'avance pour vos réponses.





    Private Sub Valider_Click()
    On Error GoTo err
    Dim Db As DAO.Database
    Dim QryModele As DAO.QueryDef
    Dim strSQLModele As String
    Set Db = CurrentDb
    Set QryModele = Db.QueryDefs("Requête61 pour formulaire61 pour formualire72")
    strSQLModele = QryModele.SQL
    'Effectue le remplacement du critere par la valeur
    strSQLModele = Replace(strSQLModele, "[saisir le nom salarié]", Chr(34) & Nz(Nom) & Chr(34))
    'Si la requête existe déjà alors
    If TesteExistenceRequete("rt") Then
    'alors modifier le code de la requête
    Db.QueryDefs("rt").SQL = strSQLModele
    'Sinon
    Else
    'Créer la nouvelle requête
    Db.CreateQueryDef "rt", strSQLModele
    End If
    'Ferme le formulaire
    DoCmd.Close acForm, Me.Name
    Exit Sub
    err:
    MsgBox "Une erreur est survenue", vbCritical, "Sélection nom"
    End Sub

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    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
    Private Sub Valider_Click()
    'On Error GoTo err
    Dim Db As DAO.Database
    Dim QryModele As DAO.QueryDef
    Dim strSQLModele As String
        Set Db = CurrentDb
        Set QryModele = Db.QueryDefs("Requête61 pour formulaire61 pour formualire72")
        strSQLModele = QryModele.SQL
        'Effectue le remplacement du critere par la valeur
        strSQLModele = Replace(strSQLModele, "[saisir le nom salarié]", Chr(34) & Nz(Nom) & Chr(34))
        'Si la requête existe déjà alors
        If TesteExistenceRequete("rt") Then
            'alors modifier le code de la requête
            Db.QueryDefs("rt").SQL = strSQLModele
            'Sinon
        Else
            'Créer la nouvelle requête
            Db.CreateQueryDef "rt", strSQLModele
        End If
        DoCmd.OpenForm z
        'Ferme le formulaire
        DoCmd.Close acForm, Me.Name
        Exit Sub
    err:
        MsgBox "Une erreur est survenue", vbCritical, "Sélection nom"
    End Sub
    Ca le fait pas ?

  3. #3
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Moi j'utilise la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "MonFormulaire"
    P.S : Tu peux utiliser la balise [CODE] (clic sur le # dans la barre d'outils d'édition) pour présenter ton code, ça sera mieux qu'en vert fluo

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Kloun, j'ai déja appliqué ce code au même endroit que toi pour DoCmd.OpenForm (z) mais cela ne marche pas.

    Cette commande ne réagit pas.
    Peut être que ce bout de code est mal placé dans mon code.

    Je vais faire des tentatives mais si vous avez des idées, je suis preneur

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Je ne vois aucun endrois où Z est renseigné dans ton code mais probablement que le code ne passe même pas par là car tu aurais un message d'erreur disant qu'il ne trouve pas le formulaire demandé.

    Fait une execution pas à pas de ton code tu devrais localiser facilement le problème.

    A+

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Je ne vois aucun endrois où Z est renseigné dans ton code mais probablement que le code ne passe même pas par là car tu aurais un message d'erreur disant qu'il ne trouve pas le formulaire demandé.

    Fait une execution pas à pas de ton code tu devrais localiser facilement le problème.

    A+
    Je ne l'ai pas mis marot_r car cela ne marchait pas mais je l'ai mis à cet endroit là avant (en rouge)

    J'ai en fait appliqué ce code :

    Private Sub Valider_Click()
    On Error GoTo err
    Dim Db As DAO.Database
    Dim QryModele As DAO.QueryDef
    Dim strSQLModele As String
    Set Db = CurrentDb
    Set QryModele = Db.QueryDefs("Requête61 pour formulaire61 pour formualire72")
    strSQLModele = QryModele.SQL

    'Effectue le remplacement du critere par la valeur
    strSQLModele = Replace(strSQLModele, "[saisir le nom salarié]", Chr(34) & Nz(Nom) & Chr(34))

    'Si la requête existe déjà alors
    If TesteExistenceRequete("rt") Then

    'alors modifier le code de la requête
    Db.QueryDefs("rt").SQL = strSQLModele

    'Sinon
    Else

    'Créer la nouvelle requête
    Db.CreateQueryDef "rt", strSQLModele
    End If
    DoCmd.OpenForm (z)
    'Ferme le formulaire
    DoCmd.Close acForm, Me.Name
    Exit Sub
    err:
    MsgBox "Une erreur est survenue", vbCritical, "Sélection nom"
    End Sub

  7. #7
    Membre actif Avatar de psykodumarteau
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 184
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Si la fonction ne retourne pas d'erreur c'est quelle marche. Essaie de force l'ouverture en mode normal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "monform", acNormal, , , acFormPropertySettings, acWindowNormal
    Il se peut que ton formulaire s'ouvre en mode "hidden"

  8. #8
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Pour moi, z est une variable, d'où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.openform z 'sans parenthèse
    Enlève la gestion d'erreur et déroule pas à pas.

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    J'ai sans doute mal exprimé mon point, nul part dans ton code je ne vois de déclaration ni d'assignation d'une valeur à z. Des instructions du type dim z as et z=. Z est une variable globale ?

    Je maintient qu'un exécution pas à pas te permettra de trouver le problème.

    De plus si tu tiens à l'usage des parenthèses dans DoCmd.OpenForm tu peux écrire call DoCmd.OpenForm() sinon la syntaxe classique, mentionnée par Kloun est DoCmd.OpenForm z.

    A+

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par psykodumarteau Voir le message
    Bonjour,

    Si la fonction ne retourne pas d'erreur c'est quelle marche. Essaie de force l'ouverture en mode normal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "monform", acNormal, , , acFormPropertySettings, acWindowNormal
    Il se peut que ton formulaire s'ouvre en mode "hidden"
    Citation Envoyé par Kloun Voir le message
    Pour moi, z est une variable, d'où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.openform z 'sans parenthèse
    Enlève la gestion d'erreur et déroule pas à pas.
    Citation Envoyé par marot_r Voir le message
    J'ai sans doute mal exprimé mon point, nul part dans ton code je ne vois de déclaration ni d'assignation d'une valeur à z. Des instructions du type dim z as et z=. Z est une variable globale ?

    Je maintient qu'un exécution pas à pas te permettra de trouver le problème.

    De plus si tu tiens à l'usage des parenthèses dans DoCmd.OpenForm tu peux écrire call DoCmd.OpenForm() sinon la syntaxe classique, mentionnée par Kloun est DoCmd.OpenForm z.

    A+
    J'ai fait comme a dit Kloun, j'ai tout d'abord enlevé la gestion des erreurs puis j'ai décidé de mettre z entre "" comme psykodumarteau :
    DoCmd.OpenForm "z"
    Quand j'ai mis entre guillemets z cela a marché alors qu'avec les parenthèses et sans les paranthèses cela ne marche pas.

    Cependant, après j'ai decidé de mettre la gestion des erreurs et là cela m'affiche bien mon formulaire z mais avec un message d'erreur.

    Bref, je ne sais pas pourquoi mais cela n'est pas trop grave, je vais enlever la gestion des erreurs.

  11. #11
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    z est donc bien le nom de ton formulaire et non pas une variable ?
    C'est quoi ton message d'erreur ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Kloun Voir le message
    z est donc bien le nom de ton formulaire et non pas une variable ?
    C'est quoi ton message d'erreur ?
    Lors de mon 1er message, j'ai bien indiqué que z etait mon formulaire que je devais ouvrir et je ne jamais indiqué que c'étais une variable

    En ce qui concerne le message d'erreur c'est une fênetre qui m'affiche "une erreur est survenue"

    Cela est du au bout de code que j'ai appliqué en cas d'erreur :

    On Error GoTo err

    err:
    MsgBox "Une erreur est survenue", vbCritical, "Sélection nom"

    Cependant, je ne vois pas d'erreur.

    Lorsque j'enleve la gestion d'erreur, cela est parfait.

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par nanot Voir le message
    Bref, je ne sais pas pourquoi mais cela n'est pas trop grave, je vais enlever la gestion des erreurs.
    Ça c'est pas une bonne idée. Normalement il faut gadrer la gestion d'erreur et faire en sorte qu'il n'y ai pas d'erreur pas simplement ignorer l'erreur.

    A+

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Ça c'est pas une bonne idée. Normalement il faut gadrer la gestion d'erreur et faire en sorte qu'il n'y ai pas d'erreur pas simplement ignorer l'erreur.

    A+
    Je sais mais je ne vois pas pourquoi cela m'affiche un message d'erreur car le formulaire qui s'affiche est bon

  15. #15
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Enlève le OnError, mets le SetWarnings à True et cherche à résoudre ton erreur, c'est la meilleure solution.
    Si tu ne trouve pas d'où vient ton erreur, poste-la ici, avec la ligne de code concernée, et nous tâcherons de taider

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par nanot Voir le message
    Je sais mais je ne vois pas pourquoi cela m'affiche un message d'erreur car le formulaire qui s'affiche est bon
    Alors probalement que l'erreur vient d'ailleur. Quel est ton message d'erreur ?

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Je vais partir de mon stage maintenant.

    Je vais y reflechir ce soir et normalement je devrais trouver l'erreur.

    Merci à vous, si je coince, j'enverrais un message

  18. #18
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    En utilisant le débugueur et en passant la souris sur les différents éléments de ton code, ça peut t'aider à comprendre d'où vient ton erreur

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Bonjour à tous,

    Me revoila.

    Je viens de plonger il y a une dizaine de minutes sur le problème de la gestion d'erreurs.

    Je viens de la résoudre.

  20. #20
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Points : 939
    Points
    939
    Par défaut
    Pense à cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Problème code VBA
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/10/2009, 16h41
  2. Problème Code VBA, ajout non désiré sur bouton
    Par vivicente dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/06/2008, 17h33
  3. Problème code vba
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2008, 12h03
  4. Problème code VBA :)
    Par Freygolow dans le forum Access
    Réponses: 4
    Dernier message: 17/05/2007, 15h43

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