Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Charger automatiquement un formulaire

6 réponses
Avatar
Joner
Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je traite avec
une macro. Comme à chaque import un nouveau fichier Excel est créé, j'ai donc
dû stocker ma macro sur le disque dur en format .bas et depuis le Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire que j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm. Avant de
lancer ma macro je dois donc aussi l'importer avec la même manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle manière que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince

6 réponses

Avatar
tissot.emmanuel
Bonsoir,

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsUserForm1.frm")
MsgBox "Importation réussie.", vbInformation
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.", vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Ceci importe le formulaire dans le classeur actif. Adapter le nom du chemin
et du formulaire.

Cordialement,

Manu/

"Joner" a écrit dans le message de news:

Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je traite
avec
une macro. Comme à chaque import un nouveau fichier Excel est créé, j'ai
donc
dû stocker ma macro sur le disque dur en format .bas et depuis le Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire que
j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm. Avant de
lancer ma macro je dois donc aussi l'importer avec la même manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle manière que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà
présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince


Avatar
Joner
Merci Emmanuel mais ce truc ne fonctionne qu'à moitié. Le formulaire se
charge bien dans la fenêtre de gauche sous "Forms" exactement comme quand je
le fais manuellement mais lorsque le code arrive sur la ligne
Formulaire.Show, un message d'erreur "Run-time error 424 - Object required"
apparaît et le code s'arrête...

C'est très bizarre car tout me semble ok et cela fonctionne très bien quand
je le fais manuellement.

Any idea ?

Merci et bonne soirée


Bonsoir,

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsUserForm1.frm")
MsgBox "Importation réussie.", vbInformation
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.", vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Ceci importe le formulaire dans le classeur actif. Adapter le nom du chemin
et du formulaire.

Cordialement,

Manu/

"Joner" a écrit dans le message de news:

Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je traite
avec
une macro. Comme à chaque import un nouveau fichier Excel est créé, j'ai
donc
dû stocker ma macro sur le disque dur en format .bas et depuis le Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire que
j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm. Avant de
lancer ma macro je dois donc aussi l'importer avec la même manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle manière que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà
présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince







Avatar
tissot.emmanuel
Bonsoir,

Désolé je n'avais pas testé l'affichage du formulaire tellement il me
semblait évident que ca allait fonctionner. Il semble que la simple
importation ne soit pas suffisante pour que l'objet soit effectivement
chargé. Il faut en plus l'ajouter explicitement à la collection des
Userforms.

Dim MonFormulaire As Object

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.", vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Il est possible de se passer de la variable et de remplacer:

Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show

Par:

UserForms.Add("Formulaire").Show

Une autre alternative dont la logique m'échappe mais qui fonctionne consiste
à afficher le formulaire dans une autre procédure.

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
AfficherFormulaire
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.", vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Sub AfficherFormulaire()
Formulaire.Show
End Sub

La première solution me semble nettement plus appropriée.

Bon courage,

Manu



"Joner" a écrit dans le message de news:

Merci Emmanuel mais ce truc ne fonctionne qu'à moitié. Le formulaire se
charge bien dans la fenêtre de gauche sous "Forms" exactement comme quand
je
le fais manuellement mais lorsque le code arrive sur la ligne
Formulaire.Show, un message d'erreur "Run-time error 424 - Object
required"
apparaît et le code s'arrête...

C'est très bizarre car tout me semble ok et cela fonctionne très bien
quand
je le fais manuellement.

Any idea ?

Merci et bonne soirée


Bonsoir,

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsUserForm1.frm")
MsgBox "Importation réussie.", vbInformation
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Ceci importe le formulaire dans le classeur actif. Adapter le nom du
chemin
et du formulaire.

Cordialement,

Manu/

"Joner" a écrit dans le message de
news:

Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je traite
avec
une macro. Comme à chaque import un nouveau fichier Excel est créé,
j'ai
donc
dû stocker ma macro sur le disque dur en format .bas et depuis le
Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire que
j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm. Avant
de
lancer ma macro je dois donc aussi l'importer avec la même manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à
Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle manière
que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà
présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince









Avatar
Joner
Merci Emmanuel, cela fonctionne bien maintenant mais du coup un nouveau
problème apparaît lorsque le code atteint la ligne

formulaire.hide

Une erreur 402 me dit que je dois d'abord fermer le formulaire qui se trouve
au sommet de la hierarchie "z-order". Etant donné que je n'ai ici qu'un seul
formulaire, cela n'est pas très clair...

J'ai essayé d'écrire une ligne de code genre:
UserForms.Add("formulaire").hide
mais cela ne fonctionne pas. En fait je ne sais pas trop quoi mettre à la
place du Add...

Merci de ton aide et bonne journée

Vincent



Bonsoir,

Désolé je n'avais pas testé l'affichage du formulaire tellement il me
semblait évident que ca allait fonctionner. Il semble que la simple
importation ne soit pas suffisante pour que l'objet soit effectivement
chargé. Il faut en plus l'ajouter explicitement à la collection des
Userforms.

Dim MonFormulaire As Object

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.", vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Il est possible de se passer de la variable et de remplacer:

Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show

Par:

UserForms.Add("Formulaire").Show

Une autre alternative dont la logique m'échappe mais qui fonctionne consiste
à afficher le formulaire dans une autre procédure.

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
AfficherFormulaire
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.", vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Sub AfficherFormulaire()
Formulaire.Show
End Sub

La première solution me semble nettement plus appropriée.

Bon courage,

Manu



"Joner" a écrit dans le message de news:

Merci Emmanuel mais ce truc ne fonctionne qu'à moitié. Le formulaire se
charge bien dans la fenêtre de gauche sous "Forms" exactement comme quand
je
le fais manuellement mais lorsque le code arrive sur la ligne
Formulaire.Show, un message d'erreur "Run-time error 424 - Object
required"
apparaît et le code s'arrête...

C'est très bizarre car tout me semble ok et cela fonctionne très bien
quand
je le fais manuellement.

Any idea ?

Merci et bonne soirée


Bonsoir,

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsUserForm1.frm")
MsgBox "Importation réussie.", vbInformation
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Ceci importe le formulaire dans le classeur actif. Adapter le nom du
chemin
et du formulaire.

Cordialement,

Manu/

"Joner" a écrit dans le message de
news:

Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je traite
avec
une macro. Comme à chaque import un nouveau fichier Excel est créé,
j'ai
donc
dû stocker ma macro sur le disque dur en format .bas et depuis le
Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire que
j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm. Avant
de
lancer ma macro je dois donc aussi l'importer avec la même manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à
Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle manière
que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà
présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince














Avatar
tissot.emmanuel
Bonsoir,

Je n'arrive pas à reproduire ton probleme. Une fois le formulaire affiché
c'est lui qui a la main sur le déroulement des opérations. Il me paraitrait
logique que ce soit lui qui décide de la rendre. En conséquence
l'instruction Hide devrait donc prendre place dans le code du formulaire.
Est ce le cas?

Essaye de remplacer ton instruction par la procédure suivante:

Sub MasquerFormulaire()
Formulaire.Hide
End Sub

Si tu ne t'en sors pas je t'invite à publier le code que tu utilise en
indiquant dans quels modules les procédures sont placées.

Cordialement,

Manu/

"Joner" a écrit dans le message de news:

Merci Emmanuel, cela fonctionne bien maintenant mais du coup un nouveau
problème apparaît lorsque le code atteint la ligne

formulaire.hide

Une erreur 402 me dit que je dois d'abord fermer le formulaire qui se
trouve
au sommet de la hierarchie "z-order". Etant donné que je n'ai ici qu'un
seul
formulaire, cela n'est pas très clair...

J'ai essayé d'écrire une ligne de code genre:
UserForms.Add("formulaire").hide
mais cela ne fonctionne pas. En fait je ne sais pas trop quoi mettre à la
place du Add...

Merci de ton aide et bonne journée

Vincent



Bonsoir,

Désolé je n'avais pas testé l'affichage du formulaire tellement il me
semblait évident que ca allait fonctionner. Il semble que la simple
importation ne soit pas suffisante pour que l'objet soit effectivement
chargé. Il faut en plus l'ajouter explicitement à la collection des
Userforms.

Dim MonFormulaire As Object

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Il est possible de se passer de la variable et de remplacer:

Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show

Par:

UserForms.Add("Formulaire").Show

Une autre alternative dont la logique m'échappe mais qui fonctionne
consiste
à afficher le formulaire dans une autre procédure.

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
AfficherFormulaire
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Sub AfficherFormulaire()
Formulaire.Show
End Sub

La première solution me semble nettement plus appropriée.

Bon courage,

Manu



"Joner" a écrit dans le message de
news:

Merci Emmanuel mais ce truc ne fonctionne qu'à moitié. Le formulaire se
charge bien dans la fenêtre de gauche sous "Forms" exactement comme
quand
je
le fais manuellement mais lorsque le code arrive sur la ligne
Formulaire.Show, un message d'erreur "Run-time error 424 - Object
required"
apparaît et le code s'arrête...

C'est très bizarre car tout me semble ok et cela fonctionne très bien
quand
je le fais manuellement.

Any idea ?

Merci et bonne soirée


Bonsoir,

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsUserForm1.frm")
MsgBox "Importation réussie.", vbInformation
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Ceci importe le formulaire dans le classeur actif. Adapter le nom du
chemin
et du formulaire.

Cordialement,

Manu/

"Joner" a écrit dans le message de
news:

Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je
traite
avec
une macro. Comme à chaque import un nouveau fichier Excel est créé,
j'ai
donc
dû stocker ma macro sur le disque dur en format .bas et depuis le
Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire
que
j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm.
Avant
de
lancer ma macro je dois donc aussi l'importer avec la même
manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à
Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle
manière
que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà
présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince
















Avatar
Joner
Ouai c'est bon. Y'avait une erreur dans mon code. J'avais mis une ligne
Formulaire.show pour revenir au formulaire après l'affichage d'une MsgBox
d'erreur. Ainsi le form était en fait affiché 2x... ce qui déclenchait le
message d'erreur au moment de le fermer...

Merci en tout cas pour tout, c'est cool.


Bonsoir,

Je n'arrive pas à reproduire ton probleme. Une fois le formulaire affiché
c'est lui qui a la main sur le déroulement des opérations. Il me paraitrait
logique que ce soit lui qui décide de la rendre. En conséquence
l'instruction Hide devrait donc prendre place dans le code du formulaire.
Est ce le cas?

Essaye de remplacer ton instruction par la procédure suivante:

Sub MasquerFormulaire()
Formulaire.Hide
End Sub

Si tu ne t'en sors pas je t'invite à publier le code que tu utilise en
indiquant dans quels modules les procédures sont placées.

Cordialement,

Manu/

"Joner" a écrit dans le message de news:

Merci Emmanuel, cela fonctionne bien maintenant mais du coup un nouveau
problème apparaît lorsque le code atteint la ligne

formulaire.hide

Une erreur 402 me dit que je dois d'abord fermer le formulaire qui se
trouve
au sommet de la hierarchie "z-order". Etant donné que je n'ai ici qu'un
seul
formulaire, cela n'est pas très clair...

J'ai essayé d'écrire une ligne de code genre:
UserForms.Add("formulaire").hide
mais cela ne fonctionne pas. En fait je ne sais pas trop quoi mettre à la
place du Add...

Merci de ton aide et bonne journée

Vincent



Bonsoir,

Désolé je n'avais pas testé l'affichage du formulaire tellement il me
semblait évident que ca allait fonctionner. Il semble que la simple
importation ne soit pas suffisante pour que l'objet soit effectivement
chargé. Il faut en plus l'ajouter explicitement à la collection des
Userforms.

Dim MonFormulaire As Object

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Il est possible de se passer de la variable et de remplacer:

Set MonFormulaire = VBA.UserForms.Add("Formulaire")
MonFormulaire.Show

Par:

UserForms.Add("Formulaire").Show

Une autre alternative dont la logique m'échappe mais qui fonctionne
consiste
à afficher le formulaire dans une autre procédure.

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsFormulaire.frm")
AfficherFormulaire
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Sub AfficherFormulaire()
Formulaire.Show
End Sub

La première solution me semble nettement plus appropriée.

Bon courage,

Manu



"Joner" a écrit dans le message de
news:

Merci Emmanuel mais ce truc ne fonctionne qu'à moitié. Le formulaire se
charge bien dans la fenêtre de gauche sous "Forms" exactement comme
quand
je
le fais manuellement mais lorsque le code arrive sur la ligne
Formulaire.Show, un message d'erreur "Run-time error 424 - Object
required"
apparaît et le code s'arrête...

C'est très bizarre car tout me semble ok et cela fonctionne très bien
quand
je le fais manuellement.

Any idea ?

Merci et bonne soirée


Bonsoir,

Sub ImporterFormulaire()
On Error GoTo ErrImport
ActiveWorkbook.VBProject.VBComponents.Import ("C:Documents and
SettingsUserForm1.frm")
MsgBox "Importation réussie.", vbInformation
Exit Sub
ErrImport:
Select Case Err.Number
Case 76
MsgBox "Fichier introuvable.", vbCritical
Case 60061
MsgBox "Nom de fichier déja utilisé dans ce projet.",
vbCritical
Case Else
MsgBox "Erreur non prévue.", vbCritical
End Select
End Sub

Ceci importe le formulaire dans le classeur actif. Adapter le nom du
chemin
et du formulaire.

Cordialement,

Manu/

"Joner" a écrit dans le message de
news:

Bonjour à tous!

J'importe dans Excel des données depuis un autre logiciel que je
traite
avec
une macro. Comme à chaque import un nouveau fichier Excel est créé,
j'ai
donc
dû stocker ma macro sur le disque dur en format .bas et depuis le
Visual
Basic Editor, je clique sur importer. Cela fonctionne très bien.

Maintenant ce code VBA contient des instructions pour un formulaire
que
j'ai
aussi créé et qui est aussi stocké sur mon disque au format .frm.
Avant
de
lancer ma macro je dois donc aussi l'importer avec la même
manipulation
décrite précédemment.

Est-il possible d'insérer un code dans mon fichier .bas qui dise à
Excel:
"Ouvre VBA et importe-moi le fichier formulaire.frm" de telle
manière
que
quand il arrive à la ligne Formulaire.Show, le formulaire soit déjà
présent ?

Merci à tous de votre aide. j'espère que j'ai été assez clair.

Bonne fin de journée
Vince