Boucle pour executer une macro

alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006 - 11 mai 2006 à 15:40
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 15 mai 2006 à 22:49
bonjour a tous ,
voila mon probleme ,je débute en vba pour access


Je voudrais faire une boucle qui a l'ouverture d'un formulaire execute une macro(nettoyage) ,sur chaque enregistrement un apres l'autre jusqu'au dernier
voila ce que j'ai essaye mais ca ne marche pasFunction cmdnett2()<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Dim monform As Form


Dim ctrl As Control


Set monform = Forms![Toutes les locations archivées]


For Each ctrl In monform


DoCmd.RunMacro ("nettoyage")


Next ctrl


End Function


je ne sais pas si c'est une bonne solution ,j'ai voulu que pour chaque control(champ je crois) la macro s'execute mais ca ne fait rien pas de message et pas de resultat attendu pour la macro nettoyage
Merci de votre aide

14 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2006 à 15:42
Bonjour

Question pourquoi tu fais :
For Each ctrl In monform

DoCmd.RunMacro ("nettoyage")

Next ctrl

Alors que dans
DoCmd.RunMacro ("nettoyage")


Tu n'utilise pas ctrl

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 15:59
merci de repondre
comment faire pour faire intervenir ctrl dans la commande

DoCmd.RunMacro ("nettoyage")
c'est peut etre pour ca que ca ne donne rien<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Je ne sais pas si ma question etait compréhensible
La macro nettoyage doit s'executer sur chaque ligne du formulaire
je ne sais pas si c'est faisable
0
Alboure Messages postés 42 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 21 juin 2006
11 mai 2006 à 16:12
Salut, en gros tu veux faire quoi ? Vider des textbox?

Si c'est le cas, tu peux faire:

dim ctl as control

For Each ctl In Me.Controls
If Left(ctl.Name, 3) = "zs_" Then
ctl = ""
End If
Next

"zs_" est ce que je met à chaque debut de nom de textbox

Alboure
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2006 à 16:16
Bonjour

Sinon, tu peux éviter l'appel de DoCmd.RunMacro, il s'agit d'une fonction, tu peux l'appeller comme tu veux, et lui adjoindre des paramètres.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0

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

Posez votre question
alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 16:28
non pas textbox


j'ai un formulaire avec les champs [date d'entrée] [date départ] et [nett] ,
j'ai une macro qui s'appelle nettoyage ,cette macro compare la date départ d'un enregistrement avec la date d'entrée de l'enregistrement suivant et si la date est la même ,écrit dans le champ nett "urgent"
je voudrais que tout s'execute a l'ouverture du formulaire
0
alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 16:29
quelqu'un a ecrit
"Sinon, tu peux éviter l'appel de DoCmd.RunMacro, il s'agit d'une fonction, tu peux l'appeller comme tu veux, et lui adjoindre des paramètres"
mais j'ai pas compris la signification de la phrase
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2006 à 16:38
Bonjour

Ta fonction nettoyage est bien une sub,

Donc tu peux utiliser Call nettoyage()

Tu peux aussi ajouter des paramètres :
public Sub Nettoyage(byrefpCtrl as control)
et utiliser pCtrl dans ta méthode.

Pour l'appellé dans ta méthode :
call Nettoyage(ctrl)

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 16:50
nettoyage est une macro
voila les détails
condition:CpteDom("[Date de départ]";"Archive dates";"[date de départ]=formulaires![toutes les locations archivées]![date d'entrée] and [nomchalet]=Formulaires![toutes les locations archivées]![nomchalet]")>0
action: DéfinirValeur [nett] urgent


je ne sais pas si c'est une sub


dans ma boucle je doit enlever ou laisser quoi?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2006 à 16:58
Bonjour

nettoyage, tu l'a créé comment ?
Sous access, je ne suis pas au top.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 17:07
je suis sous access 2002
j'ai crée la macro ,sans vba ,cette macro fonctionne bien ,si je la met sur un des champs d'un enregistrement ,par exemple sur date d'entree ,evenement sur clic ,si je clic sur chaque date d'entrée de chaque enregistrement ,j'ai le résultat attendu mais si 50 enregistrements ,je doit clicker 50 fois
c'est pourquoi j'ESSAYE de l'automatiser mais c'est pas évident quand on connait rien en vba
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2006 à 17:17
Bonjour

Et pas mieux quand on n'a jamais utiliser VBA access.
Si c'est réellement ton code, là je ne sais pas comment l'utiliser.
Si tu peux voir ta macro par l'éditeur de macro Access (VBA), il faut qu'il y ait une instruction Sub de la forme :
Public Sub Nettoyage()
...
End Sub
Si ce n'est pas le cas, je sèche.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
alain105d Messages postés 7 Date d'inscription jeudi 11 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 17:29
voila ,elle n'apparait dans les modules code que si elle est convertie(automatiquement) en vba
peut etre est ce que je peux l'utiliser en vba tel quel?
Function nettoyage()
On Error GoTo Nettoyage_Err


With CodeContextObject
If (DCount("[Date de départ]", "Archive dates", "[date de départ]=formulaires![toutes les locations archivées]![date d'entrée] and [nomchalet]=Formulaires![toutes les locations archivées]![nomchalet]") > 0) Then
.nettoyage = "URGENT"
End If
End With


Nettoyage_Exit:
Exit Function


Nettoyage_Err:
MsgBox Error$
Resume Nettoyage_Exit


End Function
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
12 mai 2006 à 08:33
Bonjour

Heu là g capte plus rien, cela dépasse mes connaissances.
Si cette macro n'est pas VBA, je ne peux pas t'aider.
désolé.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
15 mai 2006 à 22:49
Salut 771386 alain105d, salut =177355 Alboure, salut 68514 NHenry,

=771386 alain105d, je soupçonne, dans ta macro Access, au moins un problème possible de syntaxe : urgent devrait être écrit "urgent" me semble-t-il.

Pour le vérifier, assures-toi que la macro est fermée, et choisis, dans le menu Outils>>Macros, l'élément de menu Convertir les macros en Visual Basic.

Access va ainsi créer un module VBA, qui contiendra l'équivalent, en code, de ta macro Access (ce qui est plus lisible pour nous). Trouves le module créé, et postes ici le contenu de la macro VBA, s'il te plait, que l'on vérifie ensemble.

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
Rejoignez-nous