OVH Cloud OVH Cloud

Boite de dialogue, dans feuille ou en module visual ?

4 réponses
Avatar
Alain NEWS
Bonjour,

Je viens de passer à XP et j'utilise des macros ayant une
feuille qui décrit la boite de dialogue pour saisie, choix
de plage, ...

Ca fonctionne bien, mais j'ai découvert sous visual basic
qu'il existait des UserForm.

J'ai créé un userForm de même contrôle que la feuille
initiale mais comment l'utiliser ?

pour préciser :
avant avec la feuille :
With ActiveWorkbook.DialogSheets("DialHiér")
.Show
PlageHiér = .EditBoxes("PlageTravail").Text
ChoixMat = .CheckBoxes("ChoixMatrice")
End With

Maintenanu avec le UserForm ? j'ai essayé en lisant l'aide :
load (DialHiérXp)
DialHiérXp.show
PlageHiér = DialHiérXp.EditBoxes("PlageTravail").Text
ChoixMat = DialHiérXp.CheckBoxes("ChoixMatrice")
Mais il ne reconnait pas DialHiérXp.EditBoxes

Merci de votre aide.





--
Otez la cle pour me répondre.

4 réponses

Avatar
Clément Marcotte
Bonjour,

Il faut que le nom de ton UserForm (propriété Name) soit DialHiérXP
De plus, tu n'as pas besoin de load(DialHiérXP), le show suffit.

P.S Dans la fenêtre des propriété, assure toi que tu changes bien le
nom de l'UserForm et pas celui d'un contrôle.



"Alain NEWS" a écrit dans le message de
news:3f9259d0$0$27044$
Bonjour,

Je viens de passer à XP et j'utilise des macros ayant une
feuille qui décrit la boite de dialogue pour saisie, choix
de plage, ...

Ca fonctionne bien, mais j'ai découvert sous visual basic
qu'il existait des UserForm.

J'ai créé un userForm de même contrôle que la feuille
initiale mais comment l'utiliser ?

pour préciser :
avant avec la feuille :
With ActiveWorkbook.DialogSheets("DialHiér")
.Show
PlageHiér = .EditBoxes("PlageTravail").Text
ChoixMat = .CheckBoxes("ChoixMatrice")
End With

Maintenanu avec le UserForm ? j'ai essayé en lisant l'aide :
load (DialHiérXp)
DialHiérXp.show
PlageHiér = DialHiérXp.EditBoxes("PlageTravail").Text
ChoixMat = DialHiérXp.CheckBoxes("ChoixMatrice")
Mais il ne reconnait pas DialHiérXp.EditBoxes

Merci de votre aide.





--
Otez la cle pour me répondre.



Avatar
Alain NEWS
Clément Marcotte wrote:
Bonjour,

Il faut que le nom de ton UserForm (propriété Name) soit DialHiérXP
De plus, tu n'as pas besoin de load(DialHiérXP), le show suffit.

P.S Dans la fenêtre des propriété, assure toi que tu changes bien le
nom de l'UserForm et pas celui d'un contrôle.


Cela marche ! aprés optimisation j'ai

With DialHiérXP
.Show
PlageHiér = .PlageTravail.Text
ChoixMat = .choixMatrice
End With

Y-a encore un petit pb :-(

J'ai mis un contrôle "OK" et un "annuler" dans la boite mais
je sais pas comment les gérer. Pour que le traitement
s'exécute je dois cliquer sur fermer fenêtre. C'est pas top ;-(
L'objectif est qu'un clic sur "OK" au "annuler" rende la
main au programme qui détectant l'annuler ...

Encore merci.


"Alain NEWS" a écrit dans le message de
news:3f9259d0$0$27044$

Bonjour,

[...]

Merci de votre aide.







--
Otez la cle pour me répondre.


Avatar
Clément Marcotte
Bonjour,

Dans l'hypothèse où ton bouton OK serait pour poursuivre la macro et
ton bouton Annuler serait pour arrêter la macro, sans terminer le
l'exécution, et que les noms des boutons soient OK et Annuler. (En
fait les noms peuvent être différents des intitulés (caption)).


Dans le module de l'UserForm:

Pour le bouton OK

(En supposant que tu aies une sub qui ne fasse qu'afficher l'UserForm,
et une autre sub qui fassse les traitements)

private sub OK_Click()
unload DialHiérXP
le nom de l'autre sub
end sub

Pour le bouton annuler

private sub annuler_click()
unload DialHiérXP
end
end sub


"Alain NEWS" a écrit dans le message de
news:3f92c630$0$10418$
Clément Marcotte wrote:
Bonjour,

Il faut que le nom de ton UserForm (propriété Name) soit
DialHiérXP


De plus, tu n'as pas besoin de load(DialHiérXP), le show suffit.

P.S Dans la fenêtre des propriété, assure toi que tu changes bien
le


nom de l'UserForm et pas celui d'un contrôle.


Cela marche ! aprés optimisation j'ai

With DialHiérXP
.Show
PlageHiér = .PlageTravail.Text
ChoixMat = .choixMatrice
End With

Y-a encore un petit pb :-(

J'ai mis un contrôle "OK" et un "annuler" dans la boite mais
je sais pas comment les gérer. Pour que le traitement
s'exécute je dois cliquer sur fermer fenêtre. C'est pas top ;-(
L'objectif est qu'un clic sur "OK" au "annuler" rende la
main au programme qui détectant l'annuler ...

Encore merci.


"Alain NEWS" a écrit dans le message de
news:3f9259d0$0$27044$

Bonjour,

[...]

Merci de votre aide.







--
Otez la cle pour me répondre.





Avatar
Alain NEWS
Pfou, Merci Clément c'est du on-line :-)

Je vais essayer demain.

Mais en suppoant que l'appel soit dans le module et que le
OK indique de poursuivre à la ligne suivante ?

Merci.

Clément Marcotte wrote:
Bonjour,

Dans l'hypothèse où ton bouton OK serait pour poursuivre la macro et
ton bouton Annuler serait pour arrêter la macro, sans terminer le
l'exécution, et que les noms des boutons soient OK et Annuler. (En
fait les noms peuvent être différents des intitulés (caption)).


Dans le module de l'UserForm:

Pour le bouton OK

(En supposant que tu aies une sub qui ne fasse qu'afficher l'UserForm,
et une autre sub qui fassse les traitements)

private sub OK_Click()
unload DialHiérXP
le nom de l'autre sub
end sub

Pour le bouton annuler

private sub annuler_click()
unload DialHiérXP
end
end sub


"Alain NEWS" a écrit dans le message de
news:3f92c630$0$10418$

Clément Marcotte wrote:

Bonjour,

Il faut que le nom de ton UserForm (propriété Name) soit



DialHiérXP

De plus, tu n'as pas besoin de load(DialHiérXP), le show suffit.

P.S Dans la fenêtre des propriété, assure toi que tu changes bien



le

nom de l'UserForm et pas celui d'un contrôle.




Cela marche ! aprés optimisation j'ai
With DialHiérXP
.Show
PlageHiér = .PlageTravail.Text
ChoixMat = .choixMatrice
End With

Y-a encore un petit pb :-(

J'ai mis un contrôle "OK" et un "annuler" dans la boite mais
je sais pas comment les gérer. Pour que le traitement
s'exécute je dois cliquer sur fermer fenêtre. C'est pas top ;-(
L'objectif est qu'un clic sur "OK" au "annuler" rende la
main au programme qui détectant l'annuler ...

Encore merci.


"Alain NEWS" a écrit dans le message de
news:3f9259d0$0$27044$


Bonjour,

[...]

Merci de votre aide.





--
Otez la cle pour me répondre.







--
Otez la cle pour me répondre.