La solution
Quand on veut avoir des données contextuelles, il faut mettre les macros dans le fichier et non dans les macros communes.
Voir l'avant dernier post.
Un autre code possible dans le dernier post.
EM
Le problème posé
J'essaye de passer d'un formulaire à l'autre par bouton en utilisant les macros trouvées dans le suprème de code ici
La méthode marche avec les fichiers exemples qui sont donnés, il n'y a pas de problèmes d'environnement
Par contre je n'y arrive pas avec mon fichier.
Les paramètres de contrôle du bouton ont l'air d'être corrects, les fichiers à ouvrir et fermer sont justes, les msgbox le confirme.
Le code de mon dernier essais est
Code : Tout sélectionner
Sub OuvrirFormulaire(evt As Object) '*** assignée au déclenchement du bouton
Dim lesFormulaires As Object, leFormulaire As Object
Dim bouton As Object, appel As String, courant as String
bouton = evt.Source
appel = split(bouton.Model.tag,";",2)(0)
if instr(1,bouton.Model.tag,";") then courant = split(bouton.Model.tag,";",2)(1)
msgBox("Formulaire à ouvrir : " & appel , 0)
msgBox(" à fermer : " & courant , 0)
if lesFormulaires.hasByName(appel) then
leFormulaire = lesFormulaires.getByName(appel)
leFormulaire.open
else
MsgBox("Formulaire inconnu : " & appel, 16)
exit sub
end if
if thisDatabaseDocument.FormDocuments.hasByName(courant) then FermerFormulaire(courant)
End Sub
Sub FermerFormulaire(nomFormulaire) '*** appelée par OuvrirFormulaire
thisDataBaseDocument.FormDocuments.getByName(nomFormulaire).close
End sub
Code : Tout sélectionner
if lesFormulaires.hasByName(appel) then
- la variable lesFormulaires est indéfinie, je trouve null en débugant
- d'autre part thisDatabaseDocument est out of scope.
Merci d'avance de votre aide
EM