Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête VBA

9 réponses
Avatar
Marie-Claire
Bonjour,
En parcourant le news, j'ai vu cette solution que donnait Raymond:
Dim Msg As String
Msg = "[COMPETENCE]=""" & [Forms]![Commandes2].[Qualification] & """" & "and
" & strWhere
If Nz(Me.WORD_1, "") <> "" Then
Msg = Msg & " And [WORD_1]>= " & [Forms]![Commandes2].[WORD_1] & "" & "and "
& strWhere
End If
If Nz(Me.EXEL_1, "") <> "" Then
Msg = Msg & " And [EXEL_1]>= " & [Forms]![Commandes2].[EXEL_1] & "" & "and "
& strWhere
End If
Je vous la livre telle quelle.
J'ai voulu utiliser le principe sur Select Case

Par exemple:

Case 10011
DoCmd.OpenForm "Form1", acNormal, , ("Champ1=" &
[Forms]![MonForm].[MonChamp]) and Msg"

Pour ne pas réécrire le code à chaque Case.
Mais j'ai une Boîte de dialogue qui me demande la valeur de Msg.
Comment faire pour que 'Msg' soit lue comme requête?
Je vous remercie tous pour votre aide.
Marie-Claire


--
Marie-Claire

9 réponses

Avatar
Eric
Bonjour,

Essaies:
DoCmd.OpenForm "Form1", acNormal, , "Champ1=" &
[Forms]![MonForm].[MonChamp] & " and " & Msg

en supposant que Champ1 est de type numérique.
Si ce n'est pas le cas, mettre:
DoCmd.OpenForm "Form1", acNormal, , "Champ1=" & chr(34) &
[Forms]![MonForm].[MonChamp] & chr(34) & " and " & Msg
où chr(34) représente un guillemet

D'autre part, il te manque des espaces
Msg = "[COMPETENCE]=""" & [Forms]![Commandes2].[Qualification] & """" &
" and " & strWhere
Msg = Msg & " And [WORD_1]>= " & [Forms]![Commandes2].[WORD_1] & " and
" & strWhere
Msg = Msg & " And [EXEL_1]>= " & [Forms]![Commandes2].[EXEL_1] & " and
" & strWhere

en supposant que [Forms]![Commandes2].[WORD_1]/[EXEL_1] sont numériques


Bonjour,
En parcourant le news, j'ai vu cette solution que donnait Raymond:
Dim Msg As String
Msg = "[COMPETENCE]=""" & [Forms]![Commandes2].[Qualification] & """" & "and
" & strWhere
If Nz(Me.WORD_1, "") <> "" Then
Msg = Msg & " And [WORD_1]>= " & [Forms]![Commandes2].[WORD_1] & "" & "and "
& strWhere
End If
If Nz(Me.EXEL_1, "") <> "" Then
Msg = Msg & " And [EXEL_1]>= " & [Forms]![Commandes2].[EXEL_1] & "" & "and "
& strWhere
End If
Je vous la livre telle quelle.
J'ai voulu utiliser le principe sur Select Case

Par exemple:

Case 10011
DoCmd.OpenForm "Form1", acNormal, , ("Champ1=" &
[Forms]![MonForm].[MonChamp]) and Msg"

Pour ne pas réécrire le code à chaque Case.
Mais j'ai une Boîte de dialogue qui me demande la valeur de Msg.
Comment faire pour que 'Msg' soit lue comme requête?
Je vous remercie tous pour votre aide.
Marie-Claire




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Marie-Claire
Bonjour,
Je suis vraiment désolée mais j'ai mal écris au lieu de:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , ("Champ1=" &
[Forms]![MonForm].[MonChamp]) and Msg"

c'est

Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1 [Forms]![MonForm].[MonChamp]) and Msg"

car au départ c'est:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1 [Forms]![MonForm].[MonChamp])"

à laquelle je veux ajouter 'Msg'

Donc ça ne marche pas.
Si tu veux bien regarder à nouveau?
Marie-Claire

--
Marie-Claire



Bonjour,

Essaies:
DoCmd.OpenForm "Form1", acNormal, , "Champ1=" &
[Forms]![MonForm].[MonChamp] & " and " & Msg

en supposant que Champ1 est de type numérique.
Si ce n'est pas le cas, mettre:
DoCmd.OpenForm "Form1", acNormal, , "Champ1=" & chr(34) &
[Forms]![MonForm].[MonChamp] & chr(34) & " and " & Msg
où chr(34) représente un guillemet

D'autre part, il te manque des espaces
Msg = "[COMPETENCE]=""" & [Forms]![Commandes2].[Qualification] & """" &
" and " & strWhere
Msg = Msg & " And [WORD_1]>= " & [Forms]![Commandes2].[WORD_1] & " and
" & strWhere
Msg = Msg & " And [EXEL_1]>= " & [Forms]![Commandes2].[EXEL_1] & " and
" & strWhere

en supposant que [Forms]![Commandes2].[WORD_1]/[EXEL_1] sont numériques


Bonjour,
En parcourant le news, j'ai vu cette solution que donnait Raymond:
Dim Msg As String
Msg = "[COMPETENCE]=""" & [Forms]![Commandes2].[Qualification] & """" & "and
" & strWhere
If Nz(Me.WORD_1, "") <> "" Then
Msg = Msg & " And [WORD_1]>= " & [Forms]![Commandes2].[WORD_1] & "" & "and "
& strWhere
End If
If Nz(Me.EXEL_1, "") <> "" Then
Msg = Msg & " And [EXEL_1]>= " & [Forms]![Commandes2].[EXEL_1] & "" & "and "
& strWhere
End If
Je vous la livre telle quelle.
J'ai voulu utiliser le principe sur Select Case

Par exemple:

Case 10011
DoCmd.OpenForm "Form1", acNormal, , ("Champ1=" &
[Forms]![MonForm].[MonChamp]) and Msg"

Pour ne pas réécrire le code à chaque Case.
Mais j'ai une Boîte de dialogue qui me demande la valeur de Msg.
Comment faire pour que 'Msg' soit lue comme requête?
Je vous remercie tous pour votre aide.
Marie-Claire




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

J'ai du mal à comprendre ce que tu veux faire avec ces parenthèses.
Le 4eme argument de la commande OpenForm est une restriction SQL sans le
mot Where, donc avec ce que je t'ai donné

DoCmd.OpenForm "Form1", acNormal, , "Champ1=" & [Forms]![MonForm].[MonChamp] & " and " & Msg


tu ne devrais plus avoir le message indiqué dans ton 1er post (Boite de
dialogue demandant la valeur du paramètre Msg).

Pourrais-tu me passer le lien où Raymond donne cette information ?


Bonjour,
Je suis vraiment désolée mais j'ai mal écris au lieu de:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , ("Champ1=" &
[Forms]![MonForm].[MonChamp]) and Msg"

c'est

Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1 > [Forms]![MonForm].[MonChamp]) and Msg"

car au départ c'est:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1 > [Forms]![MonForm].[MonChamp])"

à laquelle je veux ajouter 'Msg'

Donc ça ne marche pas.
Si tu veux bien regarder à nouveau?
Marie-Claire



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Marie-Claire
Aïe!!!
Pour y retrouver, ça ne va pas être facile puisque c'est en parcourant le
News que je suis tombée dessus. Mais j'avais recopié la solution sur un
document Word que je copie/colle:
Dim Msg As String
Msg = "[COMPETENCE]=""" & [Forms]![Commandes2].[Qualification] & """" & "and
" & strWhere
If Nz(Me.WORD_1, "") <> "" Then
Msg = Msg & " And [WORD_1]>= " & [Forms]![Commandes2].[WORD_1] & "" & "and "
& strWhere
End If
If Nz(Me.EXEL_1, "") <> "" Then
Msg = Msg & " And [EXEL_1]>= " & [Forms]![Commandes2].[EXEL_1] & "" & "and "
& strWhere
End If

DoCmd.OpenForm "StablesCommandes2", acNormal, , Msg

Tel quel ça fonctionne très bien, simplement moi j'aimerai ajouter cette
condition 'Msg' à des événement qui existent avec Select Case pour ne pas
réécrire à chaque fois le code contenu qui correspond à 'Msg'

Si tu veux au départ j'ai par exemple:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1=
[Forms]![MonForm].[MonChamp])"

Case 100101
DoCmd.OpenForm "Form2", acNormal, , "(Champ1=
[Forms]![MonForm].[MonChamp]) and (Champ2=[Forms]![MonForm].[MonChamp2]) "

Et à chaque sélection j'aimerai ajouter la condition supplémentaire qui se
trouve sous 'Msg'
C'est pour cette raison que je pensais faire:
Case 100101
DoCmd.OpenForm "Form2", acNormal, , "(Champ1=
[Forms]![MonForm].[MonChamp]) and (Champ2=[Forms]![MonForm].[MonChamp2]) and
Msg"

Je ne sais pas si j'ai réussi à être claire, j'espère que tu me comprends.
Marie-Claire
--
Marie-Claire



re,

J'ai du mal à comprendre ce que tu veux faire avec ces parenthèses.
Le 4eme argument de la commande OpenForm est une restriction SQL sans le
mot Where, donc avec ce que je t'ai donné

DoCmd.OpenForm "Form1", acNormal, , "Champ1=" & [Forms]![MonForm].[MonChamp] & " and " & Msg


tu ne devrais plus avoir le message indiqué dans ton 1er post (Boite de
dialogue demandant la valeur du paramètre Msg).

Pourrais-tu me passer le lien où Raymond donne cette information ?


Bonjour,
Je suis vraiment désolée mais j'ai mal écris au lieu de:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , ("Champ1=" &
[Forms]![MonForm].[MonChamp]) and Msg"

c'est

Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1 > > [Forms]![MonForm].[MonChamp]) and Msg"

car au départ c'est:
Case 10011
DoCmd.OpenForm "Form1", acNormal, , "(Champ1 > > [Forms]![MonForm].[MonChamp])"

à laquelle je veux ajouter 'Msg'

Donc ça ne marche pas.
Si tu veux bien regarder à nouveau?
Marie-Claire



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
../...
ce que je t'ai proposé doit faire le traitement que tu veux.
Tu as essayé et quelle erreur as-tu ?


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Marie-Claire
Bonjour,
L'erreur que j'ai en essayant comme tu me dis est:

Erreur d’exécution ‘13’ :
Incompatibilité de type

Lorsque je clique sur l'aide j'ai une page grise sans texte.

Si tu vois le problème et peut-être la solution?
Marie-Claire
--
Marie-Claire



.../...
ce que je t'ai proposé doit faire le traitement que tu veux.
Tu as essayé et quelle erreur as-tu ?


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
re,

Cette erreur doit provenir d'un problème avec un champ numérique qui
reçoit une valeur Texte.
Si tu fais afficher dans la fenêtre exécution la variable Msg, est-elle
correcte ?
Voire même avant le docmd.openform, fais un Debug.Print "Champ1=" &
[Forms]![MonForm].[MonChamp] & " and " & Msg pour voir si cela est bon.

Bonjour,
L'erreur que j'ai en essayant comme tu me dis est:

Erreur d’exécution ‘13’ :
Incompatibilité de type

Lorsque je clique sur l'aide j'ai une page grise sans texte.

Si tu vois le problème et peut-être la solution?
Marie-Claire


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Marie-Claire
Bonjour,
Si je fais un Debug.Print "Champ1=" &
[Forms]![MonForm].[MonChamp] & " and " & Msg j'ai le même message d'erreur
c'est-à dire:
Erreur d’exécution ‘13’ :
Incompatibilité de type

Rafraichi-moi la mémoire comment faire pour faire afficher dans la fenêtre
exécution la variable Msg?
Marie-Claire
--
Marie-Claire



re,

Cette erreur doit provenir d'un problème avec un champ numérique qui
reçoit une valeur Texte.
Si tu fais afficher dans la fenêtre exécution la variable Msg, est-elle
correcte ?
Voire même avant le docmd.openform, fais un Debug.Print "Champ1=" &
[Forms]![MonForm].[MonChamp] & " and " & Msg pour voir si cela est bon.

Bonjour,
L'erreur que j'ai en essayant comme tu me dis est:

Erreur d’exécution ‘13’ :
Incompatibilité de type

Lorsque je clique sur l'aide j'ai une page grise sans texte.

Si tu vois le problème et peut-être la solution?
Marie-Claire


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour,

Tout simplement Debug.Print Msg (ou Debug.? Msg), non ?
Tu dois aussi avoir des valeurs NULL là-dedans. Il faut que tu
décomposes pas à pas, du genre :
Debug.? [Forms]![MonForm].[MonChamp]
Debug.? Msg (voire lors de la construction de la chaine Msg)
Champ1 est-il numérique ? , ...


Bonjour,
Si je fais un Debug.Print "Champ1=" &
[Forms]![MonForm].[MonChamp] & " and " & Msg j'ai le même message d'erreur
c'est-à dire:
Erreur d’exécution ‘13’ :
Incompatibilité de type

Rafraichi-moi la mémoire comment faire pour faire afficher dans la fenêtre
exécution la variable Msg?
Marie-Claire


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr