{Access} Condition sur macro

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,
Configuration: Windows XP Internet Explorer 7.0

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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
      1. 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
        1. 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.
          1. 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.
        2. 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
          1. 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