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

Requêtes et SQL. Discussion :

Récupération variable VBA pour requête SQL [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut Récupération variable VBA pour requête SQL
    Bonjour à tous,

    Je rencontre un problème quant à l'utilisation d'une variable VBA dans une requête SQL :

    - j'ai une table nommée "T_Page_1" dont tous les champs sont en format texte,

    - j'ai créé un formulaire avec 3 combobox nommées cbocommunes, cbotitre et cbostatut. Leurs valeurs ont été entrées dans la propriété "contenu" et "liste de valeurs" a donc été activé. cbocommunes comporte 34 choix possibles, cbotitre : 5 choix et cbostatut : 9 choix possibles. Le choix fait dans chaque combobox est mémorisé dans une variable string portant le nom de sa combobox respective puis est transformé en nombre, mais toujours au format texte,

    - cbostatut comporte un événement sur clic exécutant une requête SQL SELECT en fonction des choix faits dans les 3 combobox,

    - la requête se nomme "R_Page_1",

    - j'ai également inseré des MsgBox afin de vérifier la valeur des variables après leur transformation,


    Le problème est que j'obtiens 5 champs vides après exécution de la requête SQL, je n'arrive pas apparemment à récupérer les 3 variables en question dans celle-ci.

    Voici le 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
    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
     
    Option Compare Database
     
    Private Sub cbocommunes_BeforeUpdate(Cancel As Integer)
     
     Dim cbocommunes As String
     
      MsgBox Me.cbocommunes
     
       If Me.cbocommunes = "-- Toutes --" Then cbocommunes = "00" Else
       If Me.cbocommunes = "01. Bélep" Then cbocommunes = "01" Else
       If Me.cbocommunes = "02. Boulouparis" Then cbocommunes = "02" Else
       If Me.cbocommunes = "03. Bourail" Then cbocommunes = "03" Else
       If Me.cbocommunes = "04. Canala" Then cbocommunes = "04" Else
       If Me.cbocommunes = "05. Dumbéa" Then cbocommunes = "05" Else
       If Me.cbocommunes = "06. Farino" Then cbocommunes = "06" Else
       If Me.cbocommunes = "07. Hienghène" Then cbocommunes = "07" Else
       If Me.cbocommunes = "08. Houaïlou" Then cbocommunes = "08" Else
       If Me.cbocommunes = "09. Ile des Pins" Then cbocommunes = "09" Else
       If Me.cbocommunes = "10. Kaala Gomen" Then cbocommunes = "10" Else
       If Me.cbocommunes = "11. Koné" Then cbocommunes = "11" Else
       If Me.cbocommunes = "12. Koumac" Then cbocommunes = "12" Else
       If Me.cbocommunes = "13. La Foa" Then cbocommunes = "13" Else
       If Me.cbocommunes = "14. Lifou" Then cbocommunes = "14" Else
       If Me.cbocommunes = "15. Maré" Then cbocommunes = "15" Else
       If Me.cbocommunes = "16. Moindou" Then cbocommunes = "16" Else
       If Me.cbocommunes = "17. Mont Dore" Then cbocommunes = "17" Else
       If Me.cbocommunes = "18. Nouméa" Then cbocommunes = "18" Else
       If Me.cbocommunes = "19. Ouégoa" Then cbocommunes = "19" Else
       If Me.cbocommunes = "20. Ouvéa" Then cbocommunes = "20" Else
       If Me.cbocommunes = "21. Païta" Then cbocommunes = "21" Else
       If Me.cbocommunes = "22. Poindimié" Then cbocommunes = "22" Else
       If Me.cbocommunes = "23. Ponérihouen" Then cbocommunes = "23" Else
       If Me.cbocommunes = "24. Pouébo" Then cbocommunes = "24" Else
       If Me.cbocommunes = "25. Pouembout" Then cbocommunes = "25" Else
       If Me.cbocommunes = "26. Poum" Then cbocommunes = "26" Else
       If Me.cbocommunes = "27. Poya" Then cbocommunes = "27" Else
       If Me.cbocommunes = "28. Sarraméa" Then cbocommunes = "28" Else
       If Me.cbocommunes = "29. Thio" Then cbocommunes = "29" Else
       If Me.cbocommunes = "30. Touho" Then cbocommunes = "30" Else
       If Me.cbocommunes = "31. Voh" Then cbocommunes = "31" Else
       If Me.cbocommunes = "32. Yaté" Then cbocommunes = "32" Else
       If Me.cbocommunes = "33. Kouaoua" Then cbocommunes = "33"
     
     
      MsgBox cbocommunes
     
    End Sub
     
    Private Sub cbostatut_BeforeUpdate(Cancel As Integer)
     
     Dim cbostatut As String
     
      MsgBox Me.cbostatut
     
       If Me.cbostatut = "-- Tous --" Then cbostatut = "0" Else
       If Me.cbostatut = "Compte propre" Then cbostatut = "1" Else
       If Me.cbostatut = "GIE" Then cbostatut = "2" Else
       If Me.cbostatut = "Groupement de fait" Then cbostatut = "3" Else
       If Me.cbostatut = "SCEA, SCEC, SA..." Then cbostatut = "4" Else
       If Me.cbostatut = "Autre personne morale" Then cbostatut = "5" Else
       If Me.cbostatut = "Autre personne physique" Then cbostatut = "6" Else
       If Me.cbostatut = "Pas de réponse" Then cbostatut = "" Else
       If Me.cbostatut = "Trop de réponses" Then cbostatut = "9" Else
     
      MsgBox cbostatut
     
    End Sub
     
    Private Sub cbostatut_Click()
     
     DoCmd.OpenQuery ("R_Page_1")
     
    End Sub
     
    Private Sub cbotitre_BeforeUpdate(Cancel As Integer)
     
     Dim cbotitre As String
     
      MsgBox Me.cbotitre
     
       If Me.cbotitre = "-- Tous --" Then cbotitre = "0" Else
       If Me.cbotitre = "Superficie > 1,7 ha" Then cbotitre = "1" Else
       If Me.cbotitre = "Seuil de 350 points" Then cbotitre = "2" Else
       If Me.cbotitre = "Pas de réponse" Then cbotitre = "" Else
       If Me.cbotitre = "Trop de réponses" Then cbotitre = "9" Else
     
      MsgBox cbotitre
     
    End Sub
    Et celui de la requête "R_Page_1" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Page_1.COM, Page_1.TITRE, Page_1.STATUT, Page_1.NOM, Page_1.PRENOM
    FROM Page_1
    WHERE (((Page_1.COM)='" & cbocommunes & "') AND ((Page_1.TITRE)='" & cbotitre & "') AND ((Page_1.STATUT)='" & cbostatut & "'));
    J'ai trouvé quelques réponses à ce sujet dans les FAQ mais je ne suis pas très doué car ça ne fonctionne toujours pas.

    Merci infiniment pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tes variables ont été déclarées dans les procédures, tu devrais les déclarer en entête de module.

    De plus, leur donner le même nom que les contrôles n'est pas une bonne idée, je pense que c'est la valeur du contrôle qui est prise en compte et non la variable (à voir).

    Fait une MsgBox pour avoir la chaine SQL, tu verras les valeurs qui y sont passées, et comment est lancée ta requête et où se trouve-t-elle ? Dans le module du formulaire ou un autre module (important pour la déclaration des variables)

    Philippe

  3. #3
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    J'avais fait quelque chose sur les variables, cela peut convenir à ton besoin : Utilisation de variables

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Bonjour Philippe et Zoom61,

    Tout d'abord, merci beaucoup de vous intéresser à mon cas.

    Sur vos conseils à tous les deux, j'ai donc :

    - déclaré les variables dans l'entête de module, donc tout en haut de la fenêtre si je comprends bien, sous la ligne "Option Compare Database".

    - changé les noms de variables : cbocommunes devient codecom, cbotitre devient codetitre et cbostatut devient codestatut.

    - inséré le code auquel Zoom61 fait référence, merci encore, et ai donc modifié la requête SQL en conséquence (la requête porte uniquement sur la valeur de la première combobox pour l'essai) mais ça ne fonctionne pas : au lancement de la requête j'ai le message d'erreur "Erreur d'éxecution '3085'", "Fonction "get_Valcodecom" non définie dans l'expression.

    En fait j'ai créé un nouveau module du nom de Valcodecom et y ai inséré la Public fonction Valdecom() As String. Est-ce correct ?

    Quant à la dernière remarque de Philippe : "Fait une MsgBox pour avoir la chaine SQL, tu verras les valeurs qui y sont passées, et comment est lancée ta requête et où se trouve-t-elle ? Dans le module du formulaire ou un autre module (important pour la déclaration des variables)." J'avoue ne pas savoir comment on fait cela.

    J'aimerais savoir également si les 3 lignes de séparation que j'ai indiquées dans le code par des ****** sont normales par rapport aux différentes déclarations de variables et de fonctions.

    Je vous joint le code entier ainsi que celui de la requête SQL.

    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
     
    Option Compare Database
     
    Option Explicit
     
    Dim codecom As String
    Dim codetitre As String
    Dim codestatut As String
    Dim SQL As String
    *******************************************************
    'Cette fonction permettra d'enregistrer une valeur dans une variable
    Public Function Set_Valcodecom(Valcodecom As String)
       codecom = Valcodecom
    End Function
    *******************************************************
    'Cette fonction permettra de récupérer la valeur d'une variable
    Public Function get_Valcodecom() As String
       get_Valcodecom = codecom
    End Function
    *******************************************************
     
     
    Private Sub cbocommunes_BeforeUpdate(Cancel As Integer)
     
    Dim cbocommunes As String
     
    MsgBox Me.cbocommunes
     
    If Me.cbocommunes = "-- Toutes --" Then codecom = "00" Else
    If Me.cbocommunes = "01. Bélep" Then codecom = "01" Else
    If Me.cbocommunes = "02. Boulouparis" Then codecom = "02" Else
    If Me.cbocommunes = "03. Bourail" Then codecom = "03" Else
    If Me.cbocommunes = "04. Canala" Then codecom = "04" Else
    If Me.cbocommunes = "05. Dumbéa" Then codecom = "05" Else
    If Me.cbocommunes = "06. Farino" Then codecom = "06" Else
    If Me.cbocommunes = "07. Hienghène" Then codecom = "07" Else
    If Me.cbocommunes = "08. Houaïlou" Then codecom = "08" Else
    If Me.cbocommunes = "09. Ile des Pins" Then codecom = "09" Else
    If Me.cbocommunes = "10. Kaala Gomen" Then codecom = "10" Else
    If Me.cbocommunes = "11. Koné" Then codecom = "11" Else
    If Me.cbocommunes = "12. Koumac" Then codecom = "12" Else
    If Me.cbocommunes = "13. La Foa" Then codecom = "13" Else
    If Me.cbocommunes = "14. Lifou" Then codecom = "14" Else
    If Me.cbocommunes = "15. Maré" Then codecom = "15" Else
    If Me.cbocommunes = "16. Moindou" Then codecom = "16" Else
    If Me.cbocommunes = "17. Mont Dore" Then codecom = "17" Else
    If Me.cbocommunes = "18. Nouméa" Then codecom = "18" Else
    If Me.cbocommunes = "19. Ouégoa" Then codecom = "19" Else
    If Me.cbocommunes = "20. Ouvéa" Then codecom = "20" Else
    If Me.cbocommunes = "21. Païta" Then codecom = "21" Else
    If Me.cbocommunes = "22. Poindimié" Then codecom = "22" Else
    If Me.cbocommunes = "23. Ponérihouen" Then codecom = "23" Else
    If Me.cbocommunes = "24. Pouébo" Then codecom = "24" Else
    If Me.cbocommunes = "25. Pouembout" Then codecom = "25" Else
    If Me.cbocommunes = "26. Poum" Then codecom = "26" Else
    If Me.cbocommunes = "27. Poya" Then codecom = "27" Else
    If Me.cbocommunes = "28. Sarraméa" Then codecom = "28" Else
    If Me.cbocommunes = "29. Thio" Then codecom = "29" Else
    If Me.cbocommunes = "30. Touho" Then codecom = "30" Else
    If Me.cbocommunes = "31. Voh" Then codecom = "31" Else
    If Me.cbocommunes = "32. Yaté" Then codecom = "32" Else
    If Me.cbocommunes = "33. Kouaoua" Then codecom = "33"
     
     
    MsgBox codecom
     
    End Sub
     
     
    Private Sub cbostatut_BeforeUpdate(Cancel As Integer)
     
    Dim cbostatut As String
     
    MsgBox Me.cbostatut
     
    If Me.cbostatut = "-- Tous --" Then codestatut = "0" Else
    If Me.cbostatut = "Compte propre" Then codestatut = "1" Else
    If Me.cbostatut = "GIE" Then codestatut = "2" Else
    If Me.cbostatut = "Groupement de fait" Then codestatut = "3" Else
    If Me.cbostatut = "SCEA, SCEC, SA..." Then codestatut = "4" Else
    If Me.cbostatut = "Autre personne morale" Then codestatut = "5" Else
    If Me.cbostatut = "Autre personne physique" Then codestatut = "6" Else
    If Me.cbostatut = "Pas de réponse" Then codestatut = "" Else
    If Me.cbostatut = "Trop de réponses" Then codestatut = "9" Else
     
    MsgBox codestatut
     
    End Sub
     
    Private Sub cbostatut_Click()
     
     
    DoCmd.OpenQuery ("R2_Page_1")
     
     
    End Sub
     
    Private Sub cbotitre_BeforeUpdate(Cancel As Integer)
     
    Dim cbotitre As String
     
    MsgBox Me.cbotitre
     
    If Me.cbotitre = "-- Tous --" Then codetitre = "0" Else
    If Me.cbotitre = "Superficie > 1,7 ha" Then codetitre = "1" Else
    If Me.cbotitre = "Seuil de 350 points" Then codetitre = "2" Else
    If Me.cbotitre = "Pas de réponse" Then codetitre = "" Else
    If Me.cbotitre = "Trop de réponses" Then codetitre = "9" Else
     
    MsgBox codetitre
     
    End Sub
    Et voici la requête SQL R2_Page_1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Page_1.COM, Page_1.TITRE, Page_1.STATUT, Page_1.NOM, Page_1.PRENOM
    FROM Page_1
    WHERE (((Page_1.COM)=get_Valcodecom()));

    Encore merci à vous, c'est assez difficile lorsqu'on apprend seul.

    A bientôt.

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Il faut rajouter la dernière ligne à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.cbocommunes = "32. Yaté" Then codecom = "32" Else
    If Me.cbocommunes = "33. Kouaoua" Then codecom = "33"
     
    i = Set_Valcodecom(codecom)
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Alors j'ai ajouté les lignes :

    i = Set_Valcodecom(codecom)

    à la fin comme tu me l'as dit, et la ligne de déclaration en entête (je l'avais oubliée) :

    Dim i As String

    Mais j'obtiens encore le message d'erreur 3085 : Fonction "get_Valcodecom" non définie dans l'expression, et l'éditeur me surligne en jaune la ligne :

    DoCmd.OpenQuery ("R2_Page_1")

    Vois-tu autre chose à modifier ?

    Encore merci à toi.

  7. #7
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Essaie en mettant cela au début de la fonction :
    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Salut Zoom61,

    Alors j'ai ajouté la ligne :

    i = Set Valcodecom("") juste en dessous des déclarations des variables, mais j'obtiens ce message à l'exécution du programme :

    "L'expression Avant MAJ entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. Instruction incorrecte à l'extérieur d'une procédure.
    * Le résultat de l'expression n'est pas le nom d'une macro, le nom d'une fonction définie par l'utilisateur ou [Event Procedure].
    * Une erreur a peut-être été commise lors de l'évaluation d'une fonction, d'un événement ou d'une macro."

    Ca m'a l'air bien compliqué d'utiliser une variable dans une requête SQL sous Access dis donc, lol.

    Je continue de chercher, mais si tu as d'autres propositions, n'hésite surtout.

    Et encore merci de bien vouloir me donner un coup de pouce.

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 736
    Points : 14 758
    Points
    14 758
    Par défaut
    Bonsoir,
    tu as oublié le "_" de Set_Valcodecom:Pour charger cbocommunes je ferai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         If Me.cbocommunes = "-- Toutes --" Then cbocommunes = "00" Else cbocommunes = left(Me.cbocommunes,2)
    qui récupère les 2 premiers caractères de Me.cbocommunes qui sont des chiffres.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Bonsoir Tee Grandbois, et merci de t'intéresser à mon problème.

    J'ai ajouté le "_" dans la ligne : i = Set Valcodecom("_") que j'ai donc insérée en entête sous les déclarations de variables, mais j'ai toujours le message d'erreur mentionné dans mon message précédent.

    Ton instruction : "If Me.cbocommunes = "-- Toutes --" Then cbocommunes = "00" Else cbocommunes = left(Me.cbocommunes,2)" est intéressante et elle permet de raccourcir le code. Je l'ajouterai dès que la solution à mon problème sera trouvée.

    Pour le moment j'aimerais que quelqu'un confirme que mes déclarations de variable sont au bon endroit car je n'en ai pas eu confirmation, j'ai donc joint le code.
    Par ailleurs, j'ai désactivé la ligne i = Set Valcodecom("_") en la déclarant comme commentaire.

    Merci encore pour votre aide en tout cas, je continue ma quête, lol.

    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
     
    Option Compare Database
     
    Option Explicit
     
    Dim i As String
    Dim codecom As String
    Dim codetitre As String
    Dim codestatut As String
    Dim SQL As String
    'i = Set Valcodecom("_")
    'Cette fonction permettra d'enregistrer une valeur dans une variable
    Public Function Set_Valcodecom(Valcodecom As String)
       codecom = Valcodecom
    End Function
    'Cette fonction permettra de récupérer la valeur d'une variable
    Public Function get_Valcodecom() As String
       get_Valcodecom = codecom
    End Function
     
     
    Private Sub cbocommunes_BeforeUpdate(Cancel As Integer)
     
    Dim cbocommunes As String
     
    MsgBox Me.cbocommunes
     
    'If Me.cbocommunes = "-- Toutes --" Then cbocommunes = "00" Else cbocommunes = Left(Me.cbocommunes, 2)
     
    If Me.cbocommunes = "-- Toutes --" Then codecom = "00" Else
    If Me.cbocommunes = "01. Bélep" Then codecom = "01" Else
    If Me.cbocommunes = "02. Boulouparis" Then codecom = "02" Else
    If Me.cbocommunes = "03. Bourail" Then codecom = "03" Else
    If Me.cbocommunes = "04. Canala" Then codecom = "04" Else
    If Me.cbocommunes = "05. Dumbéa" Then codecom = "05" Else
    If Me.cbocommunes = "06. Farino" Then codecom = "06" Else
    If Me.cbocommunes = "07. Hienghène" Then codecom = "07" Else
    If Me.cbocommunes = "08. Houaïlou" Then codecom = "08" Else
    If Me.cbocommunes = "09. Ile des Pins" Then codecom = "09" Else
    If Me.cbocommunes = "10. Kaala Gomen" Then codecom = "10" Else
    If Me.cbocommunes = "11. Koné" Then codecom = "11" Else
    If Me.cbocommunes = "12. Koumac" Then codecom = "12" Else
    If Me.cbocommunes = "13. La Foa" Then codecom = "13" Else
    If Me.cbocommunes = "14. Lifou" Then codecom = "14" Else
    If Me.cbocommunes = "15. Maré" Then codecom = "15" Else
    If Me.cbocommunes = "16. Moindou" Then codecom = "16" Else
    If Me.cbocommunes = "17. Mont Dore" Then codecom = "17" Else
    If Me.cbocommunes = "18. Nouméa" Then codecom = "18" Else
    If Me.cbocommunes = "19. Ouégoa" Then codecom = "19" Else
    If Me.cbocommunes = "20. Ouvéa" Then codecom = "20" Else
    If Me.cbocommunes = "21. Païta" Then codecom = "21" Else
    If Me.cbocommunes = "22. Poindimié" Then codecom = "22" Else
    If Me.cbocommunes = "23. Ponérihouen" Then codecom = "23" Else
    If Me.cbocommunes = "24. Pouébo" Then codecom = "24" Else
    If Me.cbocommunes = "25. Pouembout" Then codecom = "25" Else
    If Me.cbocommunes = "26. Poum" Then codecom = "26" Else
    If Me.cbocommunes = "27. Poya" Then codecom = "27" Else
    If Me.cbocommunes = "28. Sarraméa" Then codecom = "28" Else
    If Me.cbocommunes = "29. Thio" Then codecom = "29" Else
    If Me.cbocommunes = "30. Touho" Then codecom = "30" Else
    If Me.cbocommunes = "31. Voh" Then codecom = "31" Else
    If Me.cbocommunes = "32. Yaté" Then codecom = "32" Else
    If Me.cbocommunes = "33. Kouaoua" Then codecom = "33"
     
    i = Set_Valcodecom(codecom)
     
    MsgBox codecom
     
    End Sub
     
     
    Private Sub cbostatut_BeforeUpdate(Cancel As Integer)
     
    Dim cbostatut As String
     
    MsgBox Me.cbostatut
     
    If Me.cbostatut = "-- Tous --" Then codestatut = "0" Else
    If Me.cbostatut = "Compte propre" Then codestatut = "1" Else
    If Me.cbostatut = "GIE" Then codestatut = "2" Else
    If Me.cbostatut = "Groupement de fait" Then codestatut = "3" Else
    If Me.cbostatut = "SCEA, SCEC, SA..." Then codestatut = "4" Else
    If Me.cbostatut = "Autre personne morale" Then codestatut = "5" Else
    If Me.cbostatut = "Autre personne physique" Then codestatut = "6" Else
    If Me.cbostatut = "Pas de réponse" Then codestatut = "" Else
    If Me.cbostatut = "Trop de réponses" Then codestatut = "9" Else
     
    MsgBox codestatut
     
    End Sub
     
    Private Sub cbostatut_Click()
     
     
    DoCmd.OpenQuery ("R2_Page_1")
     
     
    End Sub
     
    Private Sub cbotitre_BeforeUpdate(Cancel As Integer)
     
    Dim cbotitre As String
     
    MsgBox Me.cbotitre
     
    If Me.cbotitre = "-- Tous --" Then codetitre = "0" Else
    If Me.cbotitre = "Superficie > 1,7 ha" Then codetitre = "1" Else
    If Me.cbotitre = "Seuil de 350 points" Then codetitre = "2" Else
    If Me.cbotitre = "Pas de réponse" Then codetitre = "" Else
    If Me.cbotitre = "Trop de réponses" Then codetitre = "9" Else
     
    MsgBox codetitre
     
    End Sub

  11. #11
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Tes variables sont bien déclarées.

    Ensuite, il faut insérer la ligne dans ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cbocommunes_BeforeUpdate(Cancel As Integer)
     
    Dim cbocommunes As String
     
    MsgBox Me.cbocommunes
     
    i = Set Valcodecom("")
     
    If Me.cbocommunes = "-- Toutes --" Then codecom = "00" Else
    ....
    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Bonjour Zoom61,

    Merci pour la vérification de mes variables et pour cette nouvelle proposition, hélàs ça ne fonctionne toujours pas : j'ai ajouté la ligne

    i = Set Valcodecom("") où tu le préconisais mais dès l'appui sur Entrée pour revenir à la ligne, le message : "Erreur de compilation : Attendu : Expression" apparaît.

    J'ai également essayé ladite ligne avec le underscore _ entre les parenthèses comme il m'a été conseillé plus haut dans ce fil : même résultat.

    Je force quand même, et à l'exécution de la procédure j'obtiens le message : "Erreur de compilation : Erreur de syntaxe" et l'éditeur me surligne les lignes :

    - en jaune : Private Sub cbocommunes_BeforeUpdate(Cancel As Integer)

    - en bleu : i = Set Valcodecom("")

    Voilà, mais ne désespérons pas, lol, si tu as d'autrs propositions je suis preneur, tout en cherchant dans mes livres et sur le web de mon côté.

    Encore merci Zoom61.

  13. #13
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    C'est :
    et pas
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Oh mince !

    Si en plus je ne fais pas attention à la syntaxe...

    Mais ça ne fonctionne toujours pas.

    J'ai encore le même message d'erreur.

  15. #15
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Pour ma part cela fonctionne correctement, voici une base qui regroupe ce que tu dois avoir.
    Pièce jointe 104168

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Désolé Zoom61,

    Chez moi ça ne fonctionne pas.

    Je te rappelle que le problème est que je n'arrive pas mener à bien ma requête SELECT une fois mes 3 combo box remplies.

    Le meilleur résultat que j'ai obtenu est une table avec les champs demandés, mais sans aucun enregistrement.

    Je te joins ma base, tu verras, j'ai toujours le message d'erreur de fonction get_Valcodecom non définie.

    Dis-moi ce que tu en penses s'il te plaît.

    Merci beaucoup.
    Fichiers attachés Fichiers attachés

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 736
    Points : 14 758
    Points
    14 758
    Par défaut
    Bonsoir,
    j'ai dû mal m'exprimer ...
    tu as oublié le "_" de Set_Valcodecom:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'i = Set Valcodecom("_")
    L°)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  18. #18
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Voici la réponse les variables doivent être déclarées dans un module et pas dans le formulaire.

    Ton fichier modifié :
    Pièce jointe 104216

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2012
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    Bonjour Zoom61,

    T'es trop fort ! Merci beaucoup, j'aurais aimé pouvoir me sortir d'affaire tout seul comme un grand mais au moins j'aurais beaucoup appris sur ces variables.

    Il ne me reste plus qu'à imbriquer les trois variables des combo box dans une requête SQL pour que mon formulaire de recherche soit opérationnel.

    Encore un grand merci, heureusement que des experts tels que toi, Tee_Grandbois et Philippe êtes là pour ceux qui apprennent dans leur coin.

    A bientôt.

  20. #20
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 909
    Points
    55 909
    Billets dans le blog
    131
    Par défaut
    Salut.

    Dans ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim codecom As String
    Dim codetitre As String
    Dim codestatut As String
    Dim SQL As String
    'i = Set Valcodecom("_")
    'Cette fonction permettra d'enregistrer une valeur dans une variable
    Public Function Set_Valcodecom(Valcodecom As String)
       codecom = Valcodecom
    End Function
    Ca sert à quoi, la fonction Set_Valcodecom(Valcodecom As String)? Strictement à rien. On peut utiliser uniquement la ligne
    pour le même résultat, sans construire de fonction. La valeur n'est même pas attribuée à la fonction en fin de code...

    Quant au code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.cbocommunes = "-- Toutes --" Then codecom = "00" Else
    If Me.cbocommunes = "01. Bélep" Then codecom = "01" Else
    If Me.cbocommunes = "02. Boulouparis" Then codecom = "02" Else
    ...
    On peut le simplifier en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Me.cbocommunes = "-- Toutes --" then
        codecom = "00"
        else
        codecom=left(me.cbocommunes,2)
    end if
    Je n'ai pas osé regarder plus loin
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. variable vba dans requête sql
    Par pasb71 dans le forum Access
    Réponses: 4
    Dernier message: 16/05/2011, 17h58
  2. Réponses: 4
    Dernier message: 14/02/2008, 09h43
  3. Récupération de variables de menus déroulants pour requète SQL
    Par Thibaut_Dupont dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/07/2006, 14h24
  4. [MySQL] Problème récupération variable pour requête SQL !!
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2006, 16h08
  5. Variable invisible pour requête SQL !?
    Par yopuke dans le forum Langage
    Réponses: 26
    Dernier message: 11/05/2006, 16h44

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