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 :

Module VBA pour ouvrir différents états


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Module VBA pour ouvrir différents états
    Bonjour,

    Je débute dans la conception de base de données Access, et je souhaiterai savoir si quelqu'un pourrait m'aider.
    J'ai concu une base dont une des tables est nommée "Contact", et un des champs "contact_type" peut prendre la valeur 'Personne' ou 'Société'.
    Je souhaiterai désormais créer un formulaire qui permet de choisir un des contacts par un menu déroulant, puis qui permet en cliquant sur un bouton de commande de visualiser un état correspondant à ce contact.
    Jusque ici rien de compliquer...
    Par contre la subtilité est que en fonction de la valeur du champ contact_type, ce bouton de commande doit ouvrir soit l'état "Fiche_personne" si c'est une personne ou l'état "Fiche_société" si c'est une société.
    Je ne pense pas pouvoir faire cela grâce à une macro, je pensais donc créer un module VBA et c'est là que j'ai du mal.
    Voici ce que j'ai comme code :

    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
     
    '------------------------------------------------------------
    ' Fiche_contact
    '
    '------------------------------------------------------------
    Function Fiche_contact()
    On Error GoTo Fiche_contact_Err
     
    	If ([Contact].[Contact_type]="Person") Then
    		DoCmd.OpenReport "Fiche_personne", acViewPreview, "", "", acNormal
    		Else
    			DoCmd.OpenReport "Fiche_société", acViewPreview, "", "", acNormal
    		End If
     
    Fiche_contact_Exit:
    	Exit Function
     
    Fiche_contact_Err:
    	MsgBox Error$
    	Resume Fiche_contact_Exit
     
    End Function
    De plus, je ne sais pas quelles variables déclarées.

    Merci pour votre aide, une solution ou à défaut des liens utiles ou je pourrai me documenter.
    Bonne journée à tous.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 028
    Points : 24 579
    Points
    24 579
    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
    Option Compare Database
     
    '------------------------------------------------------------
    ' Fiche_contact
    '
    '------------------------------------------------------------
    Function Fiche_contact()
    On Error GoTo Fiche_contact_Err
     
    	If me!Contact_type="Person" Then
    	   DoCmd.OpenReport "Fiche_personne", acViewPreview, "", "", acNormal
    	Else
    	   DoCmd.OpenReport "Fiche_société", acViewPreview, "", "", acNormal
    	End If
     
    Fiche_contact_Exit:
    	Exit Function
     
    Fiche_contact_Err:
    	MsgBox Error$
    	Resume Fiche_contact_Exit
     
    End Function

    ou encore en une seule ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport iif(me!Contact_type="Person","Fiche_personne","Fiche_société"), acViewPreview, "", "", acNormal
    On peut varier encore.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Salut,

    Merci pour ta réponse et pour les liens fournis, c'est bien utile!

    Par contre pour mon module VBA j'ai toujours un souci concernant son exécution.

    Le message suivant est affiché : "The expression you entered has a function name that Company List can't find" ('Company List' est le nom de ma base bien évidemment)

    Pourtant pour t'expliquer un peu plus, j'ai créer un formulaire "View_contact" avec une combo box qui liste tous les contacts et permet d'en choisir un, puis un bouton qui (lorsqu'on clique dessus) lance une macro "View_contact" dont une des lignes d'action est "RunCode", avec comme nom de fonction le module VBA "Fiche_contact()" précédement créé (et qui devrait donc ouvrir selon le type du contact sélectionné par la combo box l'état "Fiche_personne" ou l'état "Fiche_société")

    C'est cette action RunCode qui plante ma macro et je ne comprends pas pourquoi ca ne marche pas.
    Je trouve bizarre de ne pas avoir à préciser dans la macro ou le module que l'état que je souhaite visualiser est celui du contact choisi dans la combo box en question.

    Donc si quelqu'un a une idée, une piste ou voire la solution ca serait génial.
    J'espère avoir été assez clair dans mes explications.

    Merci d'avance et bonne journée à tous.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 028
    Points : 24 579
    Points
    24 579
    Par défaut
    Pourquoi passer par une macro pour lancer le code ?!

    Utilise directement la procédure événementielle Sur click de ton bouton et mets y le code.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Points : 99
    Points
    99
    Par défaut complément d'information
    Tu fais comme te l'a dit Loufab mais:

    1. si tu veux mettre directement le code sur l'événement Click du bouton qui commande l'ouverture, tu auras (en supposant que ton bouton se nomme btnOuvrirFicheContact)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private sub btnOuvrirFicheContact_Click()
     
    DoCmd.OpenReport iif(me!Contact_type="Person","Fiche_personne","Fiche_société"), acViewPreview, "", "", acNormal
     
    end sub
    2. si tu veux utiliser le code déjà écrit tu peux l'appeler comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private sub btnOuvrirFicheContact_Click()
       'Appelée la procédure écrite auparavant
       call Fiche_contact
    end sub
    Mais si pour une raison que tu es le seul à comprendre tu veux toujours passer par ta macro pour lancer le code (valable pour la solution 2), tu dois remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         If me!Contact_type="Person" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If forms!View_contact!Contact_type="Person" Then

Discussions similaires

  1. [XL-2003] Code VBA pour ouvrir Utilitaire d'analyse
    Par isteph32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/09/2010, 20h24
  2. Code Vba pour ouvrir un fichier XML
    Par nomade333 dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/03/2008, 12h38
  3. Réponses: 0
    Dernier message: 14/02/2008, 15h44
  4. Powerpoint 2003: Commande Vba pour Ouvrir le Slide Finder
    Par solipas dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 02/08/2007, 14h50
  5. Réponses: 3
    Dernier message: 28/06/2006, 14h32

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