Bonjour
Un question concernant le passage d'arguments entre Sub :
J'ai une Sub (privée) qui doit être appelée par 5 autres Sub activées par des événements. Elle comporte une requete de mise à jour (enfin comprise grâce à Kiki.Gaby - merci encore !).
code de la Sub appelante:
Code de la Sub appelée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part MySub(MonChamp)
Egalement essayé avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub MySub(MonChamp) Dim db As Database Dim sql As String DoCmd.SetWarnings False ' pour ne pas avoir de message lors mise à jour sql = "UPDATE [SER] SET [SER].SER_COMNum = [Forms]![CLI]![COM]![COM_Num] WHERE [SER].SER_ID = MonChamp" DoCmd.RunSQL sql DoCmd.SetWarnings True End Sub
Et en codant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Private Sub MySub(ByVal MonChamp)
Ayant mis des MsgBox après "sql = ..." pour vérifier que le contenu soit bien ce que je voulais, j'obtiens bien dans le message que MonChamp soit le contenu désiré dans le deuxième code. Le premier ne remplaçant pas "MonChamp" par sa valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sql = "UPDATE [SER] SET [SER].SER_COMNum = [Forms]![CLI]![COM]![COM_Num] WHERE [SER].SER_ID =" & MonChamp
J'ai donc simplement copié 5 fois les lignes dans les Sub appelantes. Cela fonctionne très bien... mais c'est carrément agricole.
Je préfererais passer un argument à une seule Sub appelée par les 5 autres. J'aurais tendance à penser que l'erreur vient de la manière d'écrire ce "MonChamp" (Syntaxe ?).
Ai essayé entre crochet, pas plus de résultat.
L'un de vous voit-il où est l'erreur ?
Merci
Partager