[VBA-E] - Frm - Membre de méthode ou de données introuvable
6 réponses
XLnoob
Bonjour à tous,
j'ai un problème (a priori très simple) d'initialisation de mes textbox à
l'ouverture de mon classeur.
En fait, un seul pose problème, le dernier ; le débogueur m'indique "membre
de méthode ou de données introuvable". Pourtant il est situé sur le même form
que les autres qui s'initialisent bien.
mon code :
-----------------------------------------
Sub init()
'initialisation des textbox du form Che
Quand executé de manière "non liée à l'ouverture du classeur", ce code marche parfaitement...
je fais juste appel à la procédure ainsi : ------------------------------------------ Private Sub Workbook_Open()
Call init
End Sub -------------------------------------------
papou
Bonjour Généralement les valeurs devant être initialisées dans un Userform les sont dans la procédure évènementielle UserForm_Initialize c'est plus cohérent. Je te recommande donc d'essayer cette méthode et de modifier ton code en conséquence en intégrant notamment la modif dans l'évènement Workbook_open avec simplement ceci : Load FrmChe FrmChe.Show
Cordialement Pascal
"XLnoob" a écrit dans le message de news:
Bonjour à tous, j'ai un problème (a priori très simple) d'initialisation de mes textbox à l'ouverture de mon classeur. En fait, un seul pose problème, le dernier ; le débogueur m'indique "membre de méthode ou de données introuvable". Pourtant il est situé sur le même form que les autres qui s'initialisent bien.
mon code : ----------------------------------------- Sub init() 'initialisation des textbox du form Che
FrmChe.Show End Sub --------------------------------------
J'ai vérifié le nom de mon textbox ; et j'ai essayé en remplacant .text par .value, sans différence.
Si quelqu'un a une idée, je l'en remercie par avance, je sèche complètement...
Bonjour
Généralement les valeurs devant être initialisées dans un Userform les sont
dans la procédure évènementielle UserForm_Initialize c'est plus cohérent.
Je te recommande donc d'essayer cette méthode et de modifier ton code en
conséquence en intégrant notamment la modif dans l'évènement Workbook_open
avec simplement ceci :
Load FrmChe
FrmChe.Show
Cordialement
Pascal
"XLnoob" <XLnoob@discussions.microsoft.com> a écrit dans le message de news:
E0E4526A-A53F-4221-8EB6-17CD6D106DFA@microsoft.com...
Bonjour à tous,
j'ai un problème (a priori très simple) d'initialisation de mes textbox à
l'ouverture de mon classeur.
En fait, un seul pose problème, le dernier ; le débogueur m'indique
"membre
de méthode ou de données introuvable". Pourtant il est situé sur le même
form
que les autres qui s'initialisent bien.
mon code :
-----------------------------------------
Sub init()
'initialisation des textbox du form Che
Bonjour Généralement les valeurs devant être initialisées dans un Userform les sont dans la procédure évènementielle UserForm_Initialize c'est plus cohérent. Je te recommande donc d'essayer cette méthode et de modifier ton code en conséquence en intégrant notamment la modif dans l'évènement Workbook_open avec simplement ceci : Load FrmChe FrmChe.Show
Cordialement Pascal
"XLnoob" a écrit dans le message de news:
Bonjour à tous, j'ai un problème (a priori très simple) d'initialisation de mes textbox à l'ouverture de mon classeur. En fait, un seul pose problème, le dernier ; le débogueur m'indique "membre de méthode ou de données introuvable". Pourtant il est situé sur le même form que les autres qui s'initialisent bien.
mon code : ----------------------------------------- Sub init() 'initialisation des textbox du form Che
FrmChe.Show End Sub --------------------------------------
J'ai vérifié le nom de mon textbox ; et j'ai essayé en remplacant .text par .value, sans différence.
Si quelqu'un a une idée, je l'en remercie par avance, je sèche complètement...
XLnoob
Bonjour et merci de vous pencher sur mon problème, et pour ces (bons) conseils.
J'ai découvert l'existence de l'évenement UserForm_Initialize un peu avant votre réponse, et ainsi anticipé vos conseils. (+ exactement j'ai utilisé FrmChe.load au lieu de load FrmChe -> ce qui revient au même il me semble?)
Malheureusement cela ne règle rien. A l'ouverture, j'obtiens: "Erreur 75: Erreur d'accès chemin/fichier"
Mon Form etant dans le meme WorkBook que le code qui s'execute, ce message semble quelque peu étrange..
Après quelques recherches: [Quote] un classeur est composé de feuilles, de fiches et de modules. Lorsqu'il se construit (au sens programmation objet) en mémoire à partir du fichier XLS, il construit aussi ses feuilles, ses fiches et ses modules. Selon l'ordre dans lequel cela est fait - et tu n'as pas la main la dessus, certaines méthodes (constructeurs) sont appelées avant ou après d'autres. [/Quote]
Autrement dit, je soupconne le code présent dans ThisWorkbook de s'éxécuter alors que tous les objets du classeur ne sont pas chargés (dont FrmChe), et donc d'appeler un objet qui n'est pas considéré comme créé , provoquant le message d'erreur ci-dessus. (J'ai bon?)
Quelqu'un voit comment faire pour contourner ca? (sans changer le code-source d'Excel, hein! :)
j'essaie de garder le sourire, mais je commence à craquer, surtout quand je vois qu'en créant un UF dans un nouveau classeur, et en suivant la même méthode (UserForm_initialize et Workbook_Open), tout fonctionne à merveille...
"papou" wrote:
Bonjour Généralement les valeurs devant être initialisées dans un Userform les sont dans la procédure évènementielle UserForm_Initialize c'est plus cohérent. Je te recommande donc d'essayer cette méthode et de modifier ton code en conséquence en intégrant notamment la modif dans l'évènement Workbook_open avec simplement ceci : Load FrmChe FrmChe.Show
Cordialement Pascal
Bonjour
et merci de vous pencher sur mon problème, et pour ces (bons) conseils.
J'ai découvert l'existence de l'évenement UserForm_Initialize un peu avant
votre réponse, et ainsi anticipé vos conseils. (+ exactement j'ai utilisé
FrmChe.load au lieu de load FrmChe -> ce qui revient au même il me semble?)
Malheureusement cela ne règle rien.
A l'ouverture, j'obtiens: "Erreur 75: Erreur d'accès chemin/fichier"
Mon Form etant dans le meme WorkBook que le code qui s'execute, ce message semble quelque peu étrange..
Après quelques recherches:
[Quote]
un classeur est composé de feuilles, de fiches et de modules. Lorsqu'il se
construit (au sens programmation objet) en mémoire à partir du fichier XLS,
il construit aussi ses feuilles, ses fiches et ses modules. Selon l'ordre
dans lequel cela est fait - et tu n'as pas la main la dessus, certaines
méthodes (constructeurs) sont appelées avant ou après d'autres.
[/Quote]
Autrement dit, je soupconne le code présent dans ThisWorkbook de s'éxécuter
alors que tous les objets du classeur ne sont pas chargés (dont FrmChe), et
donc d'appeler un objet qui n'est pas considéré comme créé , provoquant le
message d'erreur ci-dessus.
(J'ai bon?)
Quelqu'un voit comment faire pour contourner ca?
(sans changer le code-source d'Excel, hein! :)
j'essaie de garder le sourire, mais je commence à craquer, surtout quand je
vois qu'en créant un UF dans un nouveau classeur, et en suivant la même
méthode (UserForm_initialize et Workbook_Open), tout fonctionne à merveille...
"papou" wrote:
Bonjour
Généralement les valeurs devant être initialisées dans un Userform les sont
dans la procédure évènementielle UserForm_Initialize c'est plus cohérent.
Je te recommande donc d'essayer cette méthode et de modifier ton code en
conséquence en intégrant notamment la modif dans l'évènement Workbook_open
avec simplement ceci :
Load FrmChe
FrmChe.Show
Bonjour et merci de vous pencher sur mon problème, et pour ces (bons) conseils.
J'ai découvert l'existence de l'évenement UserForm_Initialize un peu avant votre réponse, et ainsi anticipé vos conseils. (+ exactement j'ai utilisé FrmChe.load au lieu de load FrmChe -> ce qui revient au même il me semble?)
Malheureusement cela ne règle rien. A l'ouverture, j'obtiens: "Erreur 75: Erreur d'accès chemin/fichier"
Mon Form etant dans le meme WorkBook que le code qui s'execute, ce message semble quelque peu étrange..
Après quelques recherches: [Quote] un classeur est composé de feuilles, de fiches et de modules. Lorsqu'il se construit (au sens programmation objet) en mémoire à partir du fichier XLS, il construit aussi ses feuilles, ses fiches et ses modules. Selon l'ordre dans lequel cela est fait - et tu n'as pas la main la dessus, certaines méthodes (constructeurs) sont appelées avant ou après d'autres. [/Quote]
Autrement dit, je soupconne le code présent dans ThisWorkbook de s'éxécuter alors que tous les objets du classeur ne sont pas chargés (dont FrmChe), et donc d'appeler un objet qui n'est pas considéré comme créé , provoquant le message d'erreur ci-dessus. (J'ai bon?)
Quelqu'un voit comment faire pour contourner ca? (sans changer le code-source d'Excel, hein! :)
j'essaie de garder le sourire, mais je commence à craquer, surtout quand je vois qu'en créant un UF dans un nouveau classeur, et en suivant la même méthode (UserForm_initialize et Workbook_Open), tout fonctionne à merveille...
"papou" wrote:
Bonjour Généralement les valeurs devant être initialisées dans un Userform les sont dans la procédure évènementielle UserForm_Initialize c'est plus cohérent. Je te recommande donc d'essayer cette méthode et de modifier ton code en conséquence en intégrant notamment la modif dans l'évènement Workbook_open avec simplement ceci : Load FrmChe FrmChe.Show
Cordialement Pascal
XLnoob
Bon j'ai trouvé UNE SOLUTION, j'ai VRAIMENT hésité à la poster car c'est vraiment du bricolage et je sens que je vais m'attirer les foudres de tous les spécialistes (et des autres). Mais en attendant personne ne m'a proposé mieux! (je reste ouvert à toute explication et/ou solution plus académique).
j'ai contourné le "problème de construction des objets" soupconné ci-dessus en liant l'affichage de mon Form non pas directement à l'evenement ThisWorkbook_Open mais à Worksheet_Activate de la feuille1, elle meme activée par ThisWorkbook_Open. Mais le code Worksheet_Activate de la feuille 1 ne s'exécute pas lors de la 1ere activation....
Voilà donc ma mocheté finale : ------------------------------------------------ Private Sub Workbook_Open() '(ThisWorkbook) ActiveWorkbook.Worksheets(2).Activate ActiveWorkbook.Worksheets(1).Activate End Sub ----------------------------------------------- Private Sub Worksheet_Activate() '(Feuil1) FrmChe.load FrmChe.show End Sub ----------------------------------------------- Private Sub UserForm_Initialize() '(Formulaire Che) today = Format(Now, "d/m/yyyy")
End Sub -----------------------------------------------
Désolé pour cette hérésie mais comme on dit "aide-toi et le ciel t'aidera"... ++
Bon j'ai trouvé UNE SOLUTION, j'ai VRAIMENT hésité à la poster car c'est
vraiment du bricolage et je sens que je vais m'attirer les foudres de tous
les spécialistes (et des autres). Mais en attendant personne ne m'a proposé
mieux!
(je reste ouvert à toute explication et/ou solution plus académique).
j'ai contourné le "problème de construction des objets" soupconné ci-dessus
en liant l'affichage de mon Form non pas directement à l'evenement
ThisWorkbook_Open mais à Worksheet_Activate de la feuille1, elle meme activée
par ThisWorkbook_Open.
Mais le code Worksheet_Activate de la feuille 1 ne s'exécute pas lors de la
1ere activation....
Voilà donc ma mocheté finale :
------------------------------------------------
Private Sub Workbook_Open() '(ThisWorkbook)
ActiveWorkbook.Worksheets(2).Activate
ActiveWorkbook.Worksheets(1).Activate
End Sub
-----------------------------------------------
Private Sub Worksheet_Activate() '(Feuil1)
FrmChe.load
FrmChe.show
End Sub
-----------------------------------------------
Private Sub UserForm_Initialize() '(Formulaire Che)
today = Format(Now, "d/m/yyyy")
Bon j'ai trouvé UNE SOLUTION, j'ai VRAIMENT hésité à la poster car c'est vraiment du bricolage et je sens que je vais m'attirer les foudres de tous les spécialistes (et des autres). Mais en attendant personne ne m'a proposé mieux! (je reste ouvert à toute explication et/ou solution plus académique).
j'ai contourné le "problème de construction des objets" soupconné ci-dessus en liant l'affichage de mon Form non pas directement à l'evenement ThisWorkbook_Open mais à Worksheet_Activate de la feuille1, elle meme activée par ThisWorkbook_Open. Mais le code Worksheet_Activate de la feuille 1 ne s'exécute pas lors de la 1ere activation....
Voilà donc ma mocheté finale : ------------------------------------------------ Private Sub Workbook_Open() '(ThisWorkbook) ActiveWorkbook.Worksheets(2).Activate ActiveWorkbook.Worksheets(1).Activate End Sub ----------------------------------------------- Private Sub Worksheet_Activate() '(Feuil1) FrmChe.load FrmChe.show End Sub ----------------------------------------------- Private Sub UserForm_Initialize() '(Formulaire Che) today = Format(Now, "d/m/yyyy")
End Sub -----------------------------------------------
Désolé pour cette hérésie mais comme on dit "aide-toi et le ciel t'aidera"... ++
papou
Bonjour
FrmChe.load ??
Ceci n'est pas une syntaxe correcte de VBA et doit provoquer une erreur. Par ailleurs quel est l'intérêt de l'affichage de ton Userform à l'activation d'une feuille ?
Cordialement Pascal
"XLnoob" a écrit dans le message de news:
Bon j'ai trouvé UNE SOLUTION, j'ai VRAIMENT hésité à la poster car c'est vraiment du bricolage et je sens que je vais m'attirer les foudres de tous les spécialistes (et des autres). Mais en attendant personne ne m'a proposé mieux! (je reste ouvert à toute explication et/ou solution plus académique).
j'ai contourné le "problème de construction des objets" soupconné ci-dessus en liant l'affichage de mon Form non pas directement à l'evenement ThisWorkbook_Open mais à Worksheet_Activate de la feuille1, elle meme activée par ThisWorkbook_Open. Mais le code Worksheet_Activate de la feuille 1 ne s'exécute pas lors de la 1ere activation....
Voilà donc ma mocheté finale : ------------------------------------------------ Private Sub Workbook_Open() '(ThisWorkbook) ActiveWorkbook.Worksheets(2).Activate ActiveWorkbook.Worksheets(1).Activate End Sub ----------------------------------------------- Private Sub Worksheet_Activate() '(Feuil1) FrmChe.load FrmChe.show End Sub ----------------------------------------------- Private Sub UserForm_Initialize() '(Formulaire Che) today = Format(Now, "d/m/yyyy")
End Sub -----------------------------------------------
Désolé pour cette hérésie mais comme on dit "aide-toi et le ciel t'aidera"... ++
Bonjour
FrmChe.load
??
Ceci n'est pas une syntaxe correcte de VBA et doit provoquer une erreur.
Par ailleurs quel est l'intérêt de l'affichage de ton Userform à
l'activation d'une feuille ?
Cordialement
Pascal
"XLnoob" <XLnoob@discussions.microsoft.com> a écrit dans le message de news:
0AB1B60B-259D-40E0-8956-6239018EBE76@microsoft.com...
Bon j'ai trouvé UNE SOLUTION, j'ai VRAIMENT hésité à la poster car c'est
vraiment du bricolage et je sens que je vais m'attirer les foudres de tous
les spécialistes (et des autres). Mais en attendant personne ne m'a
proposé
mieux!
(je reste ouvert à toute explication et/ou solution plus académique).
j'ai contourné le "problème de construction des objets" soupconné
ci-dessus
en liant l'affichage de mon Form non pas directement à l'evenement
ThisWorkbook_Open mais à Worksheet_Activate de la feuille1, elle meme
activée
par ThisWorkbook_Open.
Mais le code Worksheet_Activate de la feuille 1 ne s'exécute pas lors de
la
1ere activation....
Voilà donc ma mocheté finale :
------------------------------------------------
Private Sub Workbook_Open() '(ThisWorkbook)
ActiveWorkbook.Worksheets(2).Activate
ActiveWorkbook.Worksheets(1).Activate
End Sub
-----------------------------------------------
Private Sub Worksheet_Activate() '(Feuil1)
FrmChe.load
FrmChe.show
End Sub
-----------------------------------------------
Private Sub UserForm_Initialize() '(Formulaire Che)
today = Format(Now, "d/m/yyyy")
Ceci n'est pas une syntaxe correcte de VBA et doit provoquer une erreur. Par ailleurs quel est l'intérêt de l'affichage de ton Userform à l'activation d'une feuille ?
Cordialement Pascal
"XLnoob" a écrit dans le message de news:
Bon j'ai trouvé UNE SOLUTION, j'ai VRAIMENT hésité à la poster car c'est vraiment du bricolage et je sens que je vais m'attirer les foudres de tous les spécialistes (et des autres). Mais en attendant personne ne m'a proposé mieux! (je reste ouvert à toute explication et/ou solution plus académique).
j'ai contourné le "problème de construction des objets" soupconné ci-dessus en liant l'affichage de mon Form non pas directement à l'evenement ThisWorkbook_Open mais à Worksheet_Activate de la feuille1, elle meme activée par ThisWorkbook_Open. Mais le code Worksheet_Activate de la feuille 1 ne s'exécute pas lors de la 1ere activation....
Voilà donc ma mocheté finale : ------------------------------------------------ Private Sub Workbook_Open() '(ThisWorkbook) ActiveWorkbook.Worksheets(2).Activate ActiveWorkbook.Worksheets(1).Activate End Sub ----------------------------------------------- Private Sub Worksheet_Activate() '(Feuil1) FrmChe.load FrmChe.show End Sub ----------------------------------------------- Private Sub UserForm_Initialize() '(Formulaire Che) today = Format(Now, "d/m/yyyy")
End Sub -----------------------------------------------
Désolé pour cette hérésie mais comme on dit "aide-toi et le ciel t'aidera"... ++
XLnoob
"papou" wrote:
FrmChe.load ??
Ceci n'est pas une syntaxe correcte de VBA et doit provoquer une erreur.
Mea Culpa, j'ai effectivement dit une grosse bêtise!! Seule la méthode Load(FrmChe) existe. Si j'ai bien compris, quand on utilise .show, le form est implicitement loadé en mémoire. Je ne vois pas tellement d'interet d'utiliser load en plus dans mon cas, d'autant que FrmChe n'est pas titanesque.
Quoiqu'il en soit: Load FrmCHe, FrmChe.show (dans Workbook_Open) provoque aussi une erreur : là excel plante carrément.
Par ailleurs quel est l'intérêt de l'affichage de ton Userform à l'activation d'une feuille ?
Je voudrais que mon UserForm s'affiche au démarrage. Mais si je déclenche l'affichage de mon UserForm avec l'evenement Worksheet_Open, j'ai le fameux message d'erreur #75. (ou mieux: plantage si je fais Load FrmChe avant mon FrmChe.Show). J'ai simplement nommé la feuil1 "Saisie" (elle ne sert à rien, elle est vide) ; quand elle est activée, ou si l'utilisateur clique dessus, il tombe sur le form (grâce à Worksheet_Activate)
Intellectuellement ce n'est pas pleinement satisfaisant, mais au moins le programme fonctionne.
Encore merci, a+
"papou" wrote:
FrmChe.load
??
Ceci n'est pas une syntaxe correcte de VBA et doit provoquer une erreur.
Mea Culpa, j'ai effectivement dit une grosse bêtise!! Seule la méthode
Load(FrmChe) existe.
Si j'ai bien compris, quand on utilise .show, le form est implicitement
loadé en mémoire. Je ne vois pas tellement d'interet d'utiliser load en plus
dans mon cas, d'autant que FrmChe n'est pas titanesque.
Quoiqu'il en soit:
Load FrmCHe, FrmChe.show (dans Workbook_Open) provoque aussi une erreur : là
excel plante carrément.
Par ailleurs quel est l'intérêt de l'affichage de ton Userform à
l'activation d'une feuille ?
Je voudrais que mon UserForm s'affiche au démarrage.
Mais si je déclenche l'affichage de mon UserForm avec l'evenement
Worksheet_Open, j'ai le fameux message d'erreur #75. (ou mieux: plantage si
je fais Load FrmChe avant mon FrmChe.Show).
J'ai simplement nommé la feuil1 "Saisie" (elle ne sert à rien, elle est
vide) ; quand elle est activée, ou si l'utilisateur clique dessus, il tombe
sur le form (grâce à Worksheet_Activate)
Intellectuellement ce n'est pas pleinement satisfaisant, mais au moins le
programme fonctionne.
Ceci n'est pas une syntaxe correcte de VBA et doit provoquer une erreur.
Mea Culpa, j'ai effectivement dit une grosse bêtise!! Seule la méthode Load(FrmChe) existe. Si j'ai bien compris, quand on utilise .show, le form est implicitement loadé en mémoire. Je ne vois pas tellement d'interet d'utiliser load en plus dans mon cas, d'autant que FrmChe n'est pas titanesque.
Quoiqu'il en soit: Load FrmCHe, FrmChe.show (dans Workbook_Open) provoque aussi une erreur : là excel plante carrément.
Par ailleurs quel est l'intérêt de l'affichage de ton Userform à l'activation d'une feuille ?
Je voudrais que mon UserForm s'affiche au démarrage. Mais si je déclenche l'affichage de mon UserForm avec l'evenement Worksheet_Open, j'ai le fameux message d'erreur #75. (ou mieux: plantage si je fais Load FrmChe avant mon FrmChe.Show). J'ai simplement nommé la feuil1 "Saisie" (elle ne sert à rien, elle est vide) ; quand elle est activée, ou si l'utilisateur clique dessus, il tombe sur le form (grâce à Worksheet_Activate)
Intellectuellement ce n'est pas pleinement satisfaisant, mais au moins le programme fonctionne.