|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Inscription : mars 2006 Messages : 166 ![]() |
Bonjour,
Je déclare une variable frm de type Form. Je boucle sur la collection Forms et pour chaque frm ouvert, j'appelle une fonction setLangue(frm as Form). Selon la fenêtre espion, frm est bien initialisé à un formulaire. J'obtiens une erreur 13 Incompatibilité de type dont je n'arrive pas à m'expliquer. Quand je copie le code de setLangue directement dans setLangueAll, j'obtiens ce à quoi je m'attends. Je ne vois pas où regarder d'autres pour trouver ce qui est incompatible. Des idées? Merci. Caroline Code :
Code :
|
||||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Pierre GONZALEZDéveloppeur Office VBA Inscription : août 2005 Messages : 3 412 ![]() |
Bonsoir,
Je ne suis pas sûr qu'on puisse passer ce genre d'objet en argument. Tu pourais essayer de passer plutôt le nom du form. du style Code :
Bon courage, pgz[/code] |
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : mars 2006 Messages : 166 ![]() |
Passer un string à la place devrait marcher, oui.
Pourtant, j'utilise "setLangue Me" à l'ouverture de chaque formulaire multilingue et ça fonctionne très bien. Si c'était un problème de form en argument qu'Access n'aime pas, ça planterait aussi. EDIT : Ça fonctionne effectivement. C'est mieux que de recopier la fonction! Par contre, je ne comprends toujours pas pourquoi mon SetLangue(frm as Form) fonctionnait quand on l'appelait d'un form_Open avec SetLangue(me) et pas à partir de la boucle For Each frm in Forms... |
|
|
00
|
|
|
#4 | ||
|
En attente de confirmation mail
Inscription : février 2005 Messages : 1 731 ![]() |
Bonjour Caroline,
Je pense que le Pb se situe au niveau du passage de paramètre à la procédure setLangue. Il s'agit d'une procédure Sub, qui n'a pas besoin de parenthèses autour des paramètres. Ou bien, il faut utiliser la syntaxe d'appel: Code :
Call <nom procédure Sub> (<arg1>,...<arg n>) Et VBA ne sait pas évaluer une expression comme (<object>). Alors choisis... Code :
|
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Inscription : juin 2002 Messages : 3 882 ![]() |
Hello,
on peut parfaitement passer en argument, un objet / collection / variant / form / controle ... ce qui atteste que le problème se situe ailleurs. je pense que le post de JBO est une bonne piste.
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème ![]() Développez une application de gestion des comptes bancaires dans Access de A à Z ![]() |
|
|
00
|
|
|
#6 | ||||
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Comme cafeine, je pense que JBO a mis le doigt là où il fallait.
Faut quand même avouer que le passage d'argument à une sub est un peu tordu en VB6. Tant qu'on est dans la manipulation de objets, je vais donner deux petites astuces. Code :
En VB on peut déclarer les objets de deux façon : Imaginons, une classe nommé clToto possédant une méthode mamethode. Je peux déclarer ainsi : ou bien Code :
|
||||
|
|
00
|
|
|
#7 | |||
|
Membre habitué
![]() Inscription : mars 2006 Messages : 166 ![]() |
Citation:
J'ai tout remis comme le premier code et j'ai enlevé les parenthèses. Je trouve bien plus "élégant" de passer l'objet. Pour l'instant, je n'ai pas plusieurs instances du même formulaire mais ça pourrait arriver. Merci JBO! Citation:
Citation:
Caroline |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com