OVH Cloud OVH Cloud

Incompréhensible !!! HELP !

3 réponses
Avatar
Serge Hipontoise
J'ai deux Sub, quasiment identiques :

Sub AsPos()
Dim go
MaPos = Sheets(OngletVar).Range(VarPos)
MsgBox "MESSAGE A"
MaPosOK = 0
UserFormPos.show
MsgBox "MESSAGE B"
If MaPosOK = 1 Then
Sheets(OngletVar).Range(VarPos) = MaPos
End If
End Sub

Sub AsTrad()
Dim go
MaColTrad = Sheets(OngletVar).Range(VarTrad)
MaTrad = Range(MaColTrad & ActiveCell.Row)
MsgBox "MESSAGE C"
MaTradOK = 0
UserFormTrad.show
MsgBox "MESSAGE D"
If MaTradOK = 1 Then
Range(MaColTrad & ActiveCell.Row) = MaTrad
End If
End Sub


Alors que dans la seconde, tout se déroule normalement, c'est à dire que les
choses se déroulent bien séquentiellement, à savoir récupération de la
variable MaTrad, envoi de celle-ci à la form UserFormTrad où elle est
modifiée, puis après validation dans le form via le bouton OK, remplacée
dans la feuille.
Or dans la première Sub, tout se passe en même temps, c'est à dire que la
procédure n'attend pas la fermeture du UserFormPos pour exécuter ce qui se
passe derrière !!! C'est à n'y rien comprendre !Concrètement, j'ai en
mêmetemps le MESSAGE A, le UserFormPos, puis le MESSAGE B, avant même la
fermeture du Form. Impossible donc de changer la valeur de ma variable.
L'autre Sub étant construite sur le même shéma et fonctionnant parfaitement
bien, je ne comprends vraiment pas. Si quelqu'un a une idée, elle sera la
bienvenue.
Un grand merci
Serge

3 réponses

Avatar
[___FreGoLi___]
Bonjour,

Je n'ai pas fais d'essai, mais la méthode show permet d'ouvrir une fenêtre
en mode "modal" ou non (par défaut non). La différence entre les deux est
qu'en mode modal, l'exécution s'arrête après le show, et ne reprend qu'une
fois la forme fermée.

Les définition des deux formes sont elles identiques à ce sujet (propriété
modale à true ou false ?). Si c'est cela, dans ton cas, UserFormPos devrait
être non modale et UserFormTrad devrait être modale.


J'ai deux Sub, quasiment identiques :

Sub AsPos()
Dim go
MaPos = Sheets(OngletVar).Range(VarPos)
MsgBox "MESSAGE A"
MaPosOK = 0
UserFormPos.show
MsgBox "MESSAGE B"
If MaPosOK = 1 Then
Sheets(OngletVar).Range(VarPos) = MaPos
End If
End Sub

Sub AsTrad()
Dim go
MaColTrad = Sheets(OngletVar).Range(VarTrad)
MaTrad = Range(MaColTrad & ActiveCell.Row)
MsgBox "MESSAGE C"
MaTradOK = 0
UserFormTrad.show
MsgBox "MESSAGE D"
If MaTradOK = 1 Then
Range(MaColTrad & ActiveCell.Row) = MaTrad
End If
End Sub


Alors que dans la seconde, tout se déroule normalement, c'est à dire que les
choses se déroulent bien séquentiellement, à savoir récupération de la
variable MaTrad, envoi de celle-ci à la form UserFormTrad où elle est
modifiée, puis après validation dans le form via le bouton OK, remplacée
dans la feuille.
Or dans la première Sub, tout se passe en même temps, c'est à dire que la
procédure n'attend pas la fermeture du UserFormPos pour exécuter ce qui se
passe derrière !!! C'est à n'y rien comprendre !Concrètement, j'ai en
mêmetemps le MESSAGE A, le UserFormPos, puis le MESSAGE B, avant même la
fermeture du Form. Impossible donc de changer la valeur de ma variable.
L'autre Sub étant construite sur le même shéma et fonctionnant parfaitement
bien, je ne comprends vraiment pas. Si quelqu'un a une idée, elle sera la
bienvenue.
Un grand merci
Serge





Avatar
[___FreGoLi___]
Bonjour en repassant:

Vérifie la propriété "showmodal" de tes userform.
Une doit être à true (la 2eme), et l'autre à false (la 1ere)
Avatar
Serge Hipontoise
Merci à tous les deux pour votre réponse qui est la bonne !
une mauvaise manip accidentelle sans doute
merci encore
Serge



"Serge Hipontoise" a écrit dans le message de
news: 4302e93f$0$5482$
J'ai deux Sub, quasiment identiques :

Sub AsPos()
Dim go
MaPos = Sheets(OngletVar).Range(VarPos)
MsgBox "MESSAGE A"
MaPosOK = 0
UserFormPos.show
MsgBox "MESSAGE B"
If MaPosOK = 1 Then
Sheets(OngletVar).Range(VarPos) = MaPos
End If
End Sub

Sub AsTrad()
Dim go
MaColTrad = Sheets(OngletVar).Range(VarTrad)
MaTrad = Range(MaColTrad & ActiveCell.Row)
MsgBox "MESSAGE C"
MaTradOK = 0
UserFormTrad.show
MsgBox "MESSAGE D"
If MaTradOK = 1 Then
Range(MaColTrad & ActiveCell.Row) = MaTrad
End If
End Sub


Alors que dans la seconde, tout se déroule normalement, c'est à dire que
les choses se déroulent bien séquentiellement, à savoir récupération de la
variable MaTrad, envoi de celle-ci à la form UserFormTrad où elle est
modifiée, puis après validation dans le form via le bouton OK, remplacée
dans la feuille.
Or dans la première Sub, tout se passe en même temps, c'est à dire que la
procédure n'attend pas la fermeture du UserFormPos pour exécuter ce qui se
passe derrière !!! C'est à n'y rien comprendre !Concrètement, j'ai en
mêmetemps le MESSAGE A, le UserFormPos, puis le MESSAGE B, avant même la
fermeture du Form. Impossible donc de changer la valeur de ma variable.
L'autre Sub étant construite sur le même shéma et fonctionnant
parfaitement bien, je ne comprends vraiment pas. Si quelqu'un a une idée,
elle sera la bienvenue.
Un grand merci
Serge