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 :

Enum Type dans paramètres de Sub


Sujet :

VBA Access

  1. #1
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut Enum Type dans paramètres de Sub
    Bonjour,

    J'essaie d'utiliser un type lors d'une Sub (shellExecute en l'occurence).

    Début de mon 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Option Compare Database
    Option Explicit
     
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, _
            ByVal lpOperation As String, _
            ByVal lpFile As String, _
            ByVal lpParameters As String, _
            ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As Long
     
    Public Enum TypeOuverture
     
        impression = 1
        ouverture = 2
     
    End Enum
     
    Public Sub OuvrirDocument(strCheminFichier As String, strTypeOuverture As TypeOuverture)
     
    '--------------------------------------------------------------------------------------------
    ' Projet          : Interface Windows
    ' Auteurs         : Romain Puyfoulhoux - http://access.developpez.com
    '                   Christophe Warin (Tofalu) - http://access.developpez.com
    '                   pour la gestion des erreurs
    ' Version / Date  : 1.0 / 01.01.2008
    ' Révision / Date : -
    ' Commentaires    : Permet d'ouvrir un fichier sans déclarer l'application a utiliser
    '
    '                   Exemple d'appel OuvrirDocument ("C:\Projets Access\Exemple.doc")
    '
    ' Lien            : http://access.developpez.com/faq/?page=Automation#shellexecute
    '--------------------------------------------------------------------------------------------
     
        'Déclaration des variables
        Dim strDescriptionErreur As String
     
        'Select Case ShellExecute(0, "open", strCheminFichier, vbNullString, vbNullString, 1)
        Select Case ShellExecute(0, strTypeOuverture, strCheminFichier, vbNullString, vbNullString, 1)
    Le but étant bien entendu de passer le paramètre impression ou ouverture.

    Lorsque je veux appeler ma sub, l'éditeur me propose bien mon Type, ça c'est ok, mais j'ai une erreur à la compilation : Attendu : =

    Voici l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OuvrirDocument("C:\Projets Access\Test.doc", ouverture)
    Merci de votre aide.

    Domi2

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    Ton appel doit référer à une valeur de format texte

    alors essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Enum TypeOuverture
        impression = "1"
        ouverture = "2"
    End Enum

  3. #3
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

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

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

    Malheureusement, même résultat...

    Merci de ton aide.

    Domi2

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    Faudrait peut-être reconsidérer la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Sub OuvrirDocument(strCheminFichier As String, strTypeOuverture As TypeOuverture)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Sub OuvrirDocument(strCheminFichier As String, strTypeOuverture As String)
    car le 2ième argument de la fonction ShellExecute exige une valeur de type String et non de type TypeOuverture ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, _
            ByVal lpOperation As String, _
            ByVal lpFile As String, _
            ByVal lpParameters As String, _
            ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As Long

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

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

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

    Merci de te pencher sur mon problème...

    Je vais faire des tests sur une sub plus simple pour vérifier les valeurs obtenues...

    Domi2

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Par défaut
    Au lieu de déclarer un Enum,

    je déclarerais deux constantes ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public Const IMPRESSION As String = "1"
    Public Const OUVERTURE As String = "2"
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public Sub OuvrirDocument(strCheminFichier As String, strTypeOuverture As String)
    Finalement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OuvrirDocument("C:\Projets Access\Test.doc", OUVERTURE)

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut
    Je pense que le problème vient du fait que les énumérations sont en réalité des long et comme ta fonction attend un string ça marche pas :-(.

    L'aide dit ceci à propos des valeurs :

    constantexpression Facultatif.

    Valeur de l'élément (correspond à valeur de type Long). Si aucun élément constantexpression est spécifié, la valeur affectée est soit zéro (s'il s'agit du premier élément membername), soit la valeur de l'élément membername précédent plus 1.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

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

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

    j'ai fait quelques essais. En fait, le problème venait déjà de l'appel (manquait le Call). Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call OuvrirDocument("C:\Projets Access\Test.doc", imprimer)
    Puis, effectivement, le Type est un long alors que la Sub attend une string. Correction :

    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
    Option Compare Database
    Option Explicit
     
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, _
            ByVal lpOperation As String, _
            ByVal lpFile As String, _
            ByVal lpParameters As String, _
            ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As Long
     
    Public Enum TypeOuverture
     
        imprimer = 1
        ouvrir = 2
     
    End Enum
     
    Public Sub OuvrirDocument(strCheminFichier As String, intTypeOuverture As TypeOuverture)
     
    '--------------------------------------------------------------------------------------------
    ' Projet          : Interface Windows
    ' Auteurs         : Romain Puyfoulhoux - http://access.developpez.com
    '                   Christophe Warin (Tofalu) - http://access.developpez.com
    '                   pour la gestion des erreurs
    ' Version / Date  : 1.0 / 01.01.2008
    ' Révision / Date : -
    ' Commentaires    : Permet d'ouvrir un fichier sans déclarer l'application a utiliser
    '
    '                   Exemple d'appel OuvrirDocument ("C:\Projets Access\Exemple.doc")
    '
    ' Lien            : http://access.developpez.com/faq/?page=Automation#shellexecute
    '--------------------------------------------------------------------------------------------
     
        'Déclaration des variables
        Dim strTypeOuverture As String
        Dim strDescriptionErreur As String
     
        'Action selon valeur de intTypeOuverture
        If intTypeOuverture = 1 Then
     
            strTypeOuverture = "print"
     
        Else
     
            strTypeOuverture = "open"
     
        End If
     
        'Select Case ShellExecute(0, "open", strCheminFichier, vbNullString, vbNullString, 1)
        Select Case ShellExecute(0, strTypeOuverture, strCheminFichier, vbNullString, vbNullString, 1)
    Comme ceci, le Type m'est bien proposé lors de l'appel de la sub, c'est ce que je désirais obtenir.

    Encore que je me passerais bien de faire la conversion, mais je ne pense pas que cela soit possible.

    Merci à tous les deux pour votre aide.

    Domi2

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

Discussions similaires

  1. [Débutant] Paramètre Type dans une fonction
    Par noftal dans le forum VB.NET
    Réponses: 1
    Dernier message: 07/12/2013, 14h54
  2. Réponses: 3
    Dernier message: 18/09/2009, 10h20
  3. type doublement paramétré dans une fonction
    Par merill dans le forum Langage
    Réponses: 2
    Dernier message: 08/04/2009, 13h54
  4. Type de paramètre dans une fonction
    Par preempalver dans le forum Flash
    Réponses: 1
    Dernier message: 22/11/2007, 15h06
  5. type de paramètre dans une procédure stockée
    Par shirya dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/03/2007, 20h08

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