{Access} Condition sur macro

Fermé
pierrea4564 - 6 nov. 2009 à 08:58
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 13 nov. 2009 à 15:20
Bonjour,

Je souhaite créer une macro qui afficherait un message si une certaine valeur est présente dans un champs défini, lorsque que j'importe un fichier excel.
Dans mon exemple, j'ai une table Questionnaire, plusieurs champs dont QuestionTypeID. Je souhaite que la macro affiche un message si un QuestionTypeID est égal à 7.

Voici ma macro :
Condition : ("[QuestionTypeID]";"Questionnaire")=7
Macro : BoîteMsg
Argument : Attention, ce questionnaire contient des questions à choix multiples; Oui; Aucun;

Dans n'importe quel cas =7, ou =22= même =toto, le message s'affiche.
Quelqu'un pourrait me dire quelle est l'erreur dans ma condition?

Merci d'avance,
Bonne journée,
A voir également:

6 réponses

OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
6 nov. 2009 à 15:22
Non, ce n'est pas possible comme ça. Il faut que tu affiches le code de ta fonction que tu appelles dans ta macro, on y verra plus clair.
0
Merci pour ta réponse. Voici le code ma macro :


Option Compare Database

'------------------------------------------------------------
' MacroImport
'
'------------------------------------------------------------
Function MacroImport()
On Error GoTo MacroImport_Err

DoCmd.RunSavedImportExport "ImportationQuestions_Automatisation"
DoCmd.RunSavedImportExport "ImportationReponsesAutomatisation"
If (("[QuestionTypeID]" , "[Questionnaire]" )= 7) Then
Beep
MsgBox "Votre questionnaire comporte des questions à choix multiples. Si vous utilisez ce fichier Access, vous n'aurez qu'une seule réponse par question. Veuillez utiliser le fichier suivant :", vbCritical, "Attention. Des questions des type ChekBox ont été détectées."
End If
MsgBox "Opération réalisée avec succès !", vbOKOnly, ""


MacroImport_Exit:
Exit Function

MacroImport_Err:
MsgBox Error$
Resume MacroImport_Exit

End Function
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
10 nov. 2009 à 10:21
C'est quoi ce "truc" :-) ? "If (("[QuestionTypeID]" , "[Questionnaire]" )= 7) Then "

tu devrais avoir quelque chose comme : If MA_FONCTION (Param1, Param2) = 7 Then ...

tu n'oublieras pas de passer ces paramètres également dans ta macro pour l'appel à MA_FONCTION fonctionne:

dans ta macro, la où tu indiques le nom de la fonction que tu appelles avec RunCode, tu auras quelque chose comme : MacroImport Param1, Param2

bàt
0
pierrea4564
12 nov. 2009 à 14:30
Merci, mais le problème est justement que je ne sais pas quelle fonction utiliser. J'ai besoin d'une fonction qui dit "si au moins une des valeurs contenue dans ce champs est égal à 7, alors tu fais l'action... J'ai vraiment cherché mais je ne trouve pas.
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
12 nov. 2009 à 15:54
C'est simple, si tu veux absolument passer par une macro, utilise une variable Public.
1) Tu crées un module que tu appelles par exemple : MesFonctions.
2) En tête de module tu tapes : Public gResultatDeMaFonction1 As Integer
3) Tu crées MaFonction1
Function MaFonction1
'Exemple / Tu peux évidement mettre autre chose comme condition
gResultatDeMaFonction1 = 7
End Function

4) Tu crées MaFonction2
Function MaFonction2
If gResultatDeMaFonction1 = 7 Then
'Code a exécuter ...
End If
End Function

Dans ta macro :
1) Tu appelles MaFonction1, qui affectera la valeur que tu veux à ta variable Public
2) Tu appelles MaFonction2, qui tiendra compte de la variable Public et qui exécutera le code selon les conditions écrites.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pierrea4564
13 nov. 2009 à 09:42
J'ai essayé mais j'ai visibmement des erreurs (message d'erreur, la syntaxe n'est pas valide...) :

Voici mon code :

Public gResultatDeMaFonction1 As Integer
Function MaFonction1()
'gResultatDeMaFonction1 = 7
End Function
Function MaFonction2()
If gResultatDeMaFonction1 = 7 Then
'Beep
'MsgBox "Votre questionnaire comporte des questions à choix multiples. Si vous utilisez ce fichier Access, vous n'aurez qu'une seule réponse par question. Veuillez utiliser le fichier suivant :", vbCritical, "Attention. Des questions des type ChekBox ont été détectées."
End If
End Function

J'ai créé une macro, action executercode, et dans argument, j'appelle mes 2 fonctions.
Merci d'avance
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
13 nov. 2009 à 15:20
Recopie textuellement le code ci-dessous :

Public gResultatDeMaFonction1 As Integer

' Attention Il y a un apostrophe enlevé !
Function MaFonction1()
gResultatDeMaFonction1 = 7
End Function

Function MaFonction2()
If gResultatDeMaFonction1 = 7 Then
Beep

MsgBox "Votre questionnaire comporte des questions à choix multiples. " & vbcrlf & _
"Si vous utilisez ce fichier Access, vous n'aurez qu'une seule réponse par question. " & VbCrLf & _
"Veuillez utiliser le fichier suivant :", vbCritical, _
"Attention. Des questions des type ChekBox ont été détectées."
End If
End Function

'Le code s'arrête ici

Attention !
Tu dois avoir DEUX lignes "ExecuterCode" ! La première fait appel à ta première fonction
La seconde à la deuxième fonction
0