{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
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
A voir également:
- Docmd.runsavedimportexport
- Excel cellule couleur si condition texte - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
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
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.
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
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
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
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
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
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.
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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
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