{Access} Condition sur macro

pierrea4564 -  
OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   36
     
    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
  2. pierrea4564
     
    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
  3. OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   36
     
    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
  4. pierrea4564
     
    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
    1. OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   36
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pierrea4564
     
    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
  7. OlivrT Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   36
     
    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