Bonjour
lagratteCchouette,
J'obtiens exactement le même numéro d'erreur lorsque le nom du contrôle associé au sous-formulaire n'est pas correct.
Voila comment je procède dans un tel cas de figure.
1ere possibilité
Quand le debogger est actif, j'ajoute un espion sur Forms("frmDvCmdPrefa")
Si tout va bien j'ajoute le membre suivant avec un nouvel espion: Forms("frmDvCmdPrefa").frmDvCmdPrefaDetail_sub, et ainsi de suite.
Quand je dis tout va bien cela signifie que dans la colonne 'Type' j'ai bien le type correspondant à l'expression, et que dans la colonne 'valeur' je n'ai pas de message d'erreur (<.......>)
Tu peux aussi explorer l'expression lorsqu'elle est valide.
Tu cliques sur le +.
Pour un formulaire ce qui est intéressant c'est la collection Controls. Les éléments de la collection sont Item1, Item2, Item3, ... etc.
La aussi tu peux explorer les 'Item' en cliquant sur +, et notament voir la propriété Name d'un contrôle (Item).
2eme possibilité
Quand le debogger est actif, dans la fenêtre d'exécution, tester les expression en tapant par example :
? Forms("frmDvCmdPrefa").Name
? Forms("frmDvCmdPrefa").frmDvCmdPrefaDetail_sub.Name
Si la propriété Name s'imprime bien dans la fenêtre d'exécution c'est que tout ce qui est écrit avant Name est correct
Citation:
? Forms("frmDevis").Name
frmDevis
? Forms("frmDevis").frmDevis_sub2.name
frmDevis_sub2
? Forms("frmDevis").frmDevis_sub2.Form.Qte
0
La méthode 1 est de loin la plus pratique.
Concernant d'autres méthodes de passage de valeurs entre formulaire, on peut envisager de passer par une variable globale déclarée 'Public' dans un module de code. Le danger c'est que n'importe bout de code peut modifier cette variable avant que tu n'en récupère le contenu.
Bon courage, je pense que tu es tout près de la solution.
LedZeppII
Partager