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 :

Mise en pause code sur ouverture formulaire [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut Mise en pause code sur ouverture formulaire
    Bonjour,

    J'ai un petit soucis avec mon code de pause.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.OpenForm ("fichier excel"), WindowMode:=acDialog
     
    NameExcel = DLookup("[xlname]", "excel")
    Celui ouvre un formulaire ou je saisis un nom. Jusque là pas de problème.

    Dans le cas ou aucun nom n'est saisis j'ouvre un autre formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Validation_Click()
     
    'Si aucune nom de fichier, je sors message d'alerte
                    If Nz(Me.NomExcel, "") = "" Then
     
                    DoCmd.OpenForm ("message nom fichier obligatoire"), WindowMode:=acDialog
                    Exit Sub     ' Sortie de la routine
                    'Sinon, en fonction de la case cochée, j'ouvre un formulaire
                    Else
                    End If
     
            DoCmd.Close acForm, Me.Name 'ferme le formulaire en cours
     
    End Sub
    Cela fonctionne bien. Mais quand je clique sur OK de ma boite d'alerte (qui est un formulaire, le code continue et me renvoi bien sur un message d'erreur car NameExcel est nul.

    Ma question est de savoir comment je peux à nouveau mettre en pause mon code sachant que le ACdialog n'est plus actif dès que j'ai appuyé sur le bouton valider de mon formulaire fichier excel.

    Merci d'avance d votre aide

    Marcopololo

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Ces 2 codes sont dans le même module ou dans 2 modules différents ?

    Domi2

  3. #3
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Les codes sont dans deux formulaires différents

  4. #4
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    La je suis un peu sec, j'ai l'impression qu'il va me falloir passer par une variable public pour que celle ci puisse être récupéré par une fonction do...loop.
    Formulaire Recherche client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                     Do   'permet de controler que le champ du formulaire fichier excel n'est pas vide
                                'Ouvre le formulaire de saisie du nom du fichier en windowmode attente de saisie
                                        DoCmd.OpenForm ("fichier excel"), WindowMode:=acDialog
     
                                        Loop While Xlname = ""
                                        NameExcel = DLookup("[xlname]", "excel")  'Récupération du champ du formulaire fichier excel dans la table excel pour nommer le fichier exportation
    Mais ma boucle loop faisant appel à une variable qui n'est pas encore créer, cela ne fonctionne pas.


    Merci de venir à mon secours pour cette crotte de variable public.

    Marcopololo

  5. #5
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Ta variable, il faut bien la déclarer comme "Public", dans l'entête d'un module de code standard.

    Une fois fait, s'il y a encore un problème, il faudrait poster tous tes codes en expliquant où ils se trouvent dans les différents modules, et surtout en respectant l'ordre chronologique de leur utilisation.

  6. #6
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Je vais essayé d'être le plus concis possible :

    J'ai un formulaire F1. Lorsque je clique sur un bouton Export je lance la procédure d'exportation vers Excel. Tout cela fonctionne.
    Ce que je veux c'est que l'utilisateur puisse donner lui même le nom de son fichier Excel. Cela fonctionne aussi, à un détail près, c'est que je veux contrôler que le champ du formulaire F2, ouvert par la procédure de F1, que le champ de F2 n'est pas vide, j'ouvre alors une boite d'alerte (formulaire) qui me dit que le nom est obligatoire. Je clique OK et je retourne à mon formulaire de saisie du nom.

    Mon soucis est que si le champ est vide, j'ouvre bien ma boite d'alerte (qui est un formulaire et pas une msgbox), mais comme j'ai cliqué sur Valider de F2, le ACdialog de F1 ne fait plus effet et mon code continue pour me retourner une erreur car mon nom est nul.

    CODE DU FORMULAIRE F1
    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
    Dim xlApp As excel.Application
    Dim xlSheet1 As excel.Worksheet, xlSheet2 As excel.Worksheet
    Dim xlBook As excel.Workbook
    Dim strXLFile As String, NameExcel As String
     
    DoCmd.OpenForm ("F2"), WindowMode:=acDialog
     
     
                               NameExcel = DLookup("[xlname]", "excel")  'Récupération du champ du formulaire fichier excel dans la table excel pour nommer le fichier exportation
     
     
    'Ouvre l'application Excel
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
     
    ' Nom complet du fichier excel
                    strXLFile = "d:\bases extincteurs\Access 2007\" & NameExcel & ".xls"
    'Supprimer fichier avant export
                        If Dir(strXLFile) <> "" Then Kill strXLFile
    CODE DU FORMULAIRE F2 - NomExcel étant le nom du champ du formulaire
    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
    Option Compare Database
    Option Explicit
     
    Private Sub Validation_Click()
     
    'Si aucune nom de fichier, je sors message d'alerte
                    If Nz(Me.NomExcel, "") = "" Then
     
                    DoCmd.OpenForm ("message nom fichier obligatoire"), WindowMode:=acDialog
                    Exit Sub     ' Sortie de la routine
                    'Sinon, en fonction de la case cochée, j'ouvre un formulaire
                    Else
                    End If
     
            DoCmd.Close acForm, Me.Name  'ferme le formulaire en cours
     
    End Sub
    CODE DU FORMULAIRE Message nom fichier obligatoire
    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
    Option Compare Database
    Option Explicit
     
    Private Sub Form_Close()
     
            'Fait réapparaitre le formulaire de  exportation Fichier Excel après fermeture du formulaire message
            If CurrentProject.AllForms("F2").IsLoaded Then Forms![F2].Visible = True
     
     
    End Sub
     
    Private Sub Form_Open(Cancel As Integer)
            'Rend invisible le formulaire de exportation Fichier Excel
            If CurrentProject.AllForms("F2").IsLoaded Then Forms![F2].Visible = False
     
     
    End Sub
     
    Private Sub OK_Click()
     
            DoCmd.Close acForm, Me.Name
     
    End Sub
    J'espère avoir été le plus clair possible.

    Merci d'avance

    Marcopololo

  7. #7
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Help, si quelqu'un pouvait me donner quelque pisteµ. Alors j'ai testé avec une msgbox, cela fonctionne, mais cela ne résoud pas mon problème car j'ai sur mon formulaire F2 un bouton annuler, et là mon code plante.

    Donc je crois que je ne vais pas avoir le choix que la variable public, alors si une âme charitable passait par là..

    Merci d'avance

    Marcopololo

  8. #8
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Bon je progresse lentement.

    J'arrive à ne plus avoir d'erreur sur ma variable public, sans être sur de bien l'utiliser.

    J'ai créer un module de classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Compare Database
    Option Explicit
     
    Public xlfile As String
    J'ai ensuite déclaré mes variables public de cette manière dans mes deux formulaires ou j'en ai besoin, sinon cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Compare Database
    Option Explicit
    Public xlfile As String
    Et j'utilise ma variable xlfile en la nommant.

    Alors cela fonctionne bien dans mon second formulaire (test avec Msgbox), mais pas pour le second, ma msgbox du second formulaire me donne une valeur nulle ??

    Formulaire 1 (c'est ici que la Msgbox renvoi une valeur nulle)
    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
    'Ouvre le formulaire de saisie du nom du fichier en windowmode attente de saisie
                                        DoCmd.OpenForm ("fichier excel"), WindowMode:=acDialog
     
                                        MsgBox xlfile, vbOKOnly
                                        'NameExcel = DLookup("[xlname]", "excel")  'Récupération du champ du formulaire fichier excel dans la table excel pour nommer le fichier exportation
                                        NameExcel = xlfile
     
     
    'Ouvre l'application Excel
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
     
    ' Nom complet du fichier excel
     
                    strxlfile = "d:\bases extincteurs\Access 2007\" & NameExcel & ".xls"

    Formulaire 2
    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
    Private Sub Validation_Click()
     
     
                    xlfile = Me.NomExcel
     
                    MsgBox xlfile, vbOKOnly
    'Si aucune nom de fichier, je sors message d'alerte
                    If Nz(Me.NomExcel, "") = "" Then
                    MsgBox "Nom fichier obligatoire", vbOKOnly
                    Exit Sub     ' Sortie de la routine
                    'Sinon, en fonction de la case cochée, j'ouvre un formulaire
                    Else
                    End If
     
            DoCmd.Close acForm, Me.Name  'ferme le formulaire en cours
     
    End Sub
    La je suis un peu perdu alors merci de votre aide

    Marcopololo

  9. #9
    Membre régulier Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 288
    Points : 84
    Points
    84
    Par défaut
    Bon et bien voilà j'ai trouvé mon erreur.

    J'ai tout simplement utilisé un module de classe pour créer ma variable public au lieu d'un module...

    Enfin, le tout est de trouver et comprendre sopn erreur.

    Marcopololo

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/10/2008, 15h54
  2. Code pour ouverture formulaire
    Par Truelove dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/06/2007, 15h50
  3. Valeur par défaut sur ouverture formulaire
    Par Sami Xite dans le forum IHM
    Réponses: 6
    Dernier message: 26/12/2006, 12h08
  4. Probleme sur ouverture formulaire
    Par Bass_Room dans le forum Access
    Réponses: 8
    Dernier message: 27/06/2006, 16h21
  5. pb d affichage d un champs sur ouverture formulaire
    Par student007 dans le forum Access
    Réponses: 3
    Dernier message: 16/11/2005, 23h55

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