Userform 2 ne répond plus lorsque lancé par userform1 (RÉSOLU!!)

kllmoon

XLDnaute Occasionnel
Bonjour le forum, j'abandonne, je jette la serviette, après presque 2 heures de tentatives je reviens vous voir pour de l'aide!!

Mon problème :

J'utilise 2 userform pour entrer des dates dans mon formulaire. Mes 2 userforms fonctionnent lorsque utilisés séparément. Par contre, à la fermeture du premier j'appelle l'ouverture du second et puis voilà, plus rien ne fonctionne dans le second et même le textbox change ne répond plus....

La seule chose que je puisse voir est un conflit entre les deux mais j'utilise la fonction unload (j'ai essayé hide) mais bon rien n'y fait! Voici les codes pour mes userforms (les variables mavariable et laddn sont déclarées publiques )

Userform2 :
Code:
Private Sub TextBox1_Change()
If TextBox1.TextLength = 4 Then
laddn = TextBox1 + "-"
End If
End Sub

Private Sub TextBox2_Change()
If TextBox2.TextLength = 2 Then
laddn = laddn + TextBox2 + "-"
End If
End Sub

Private Sub TextBox3_Change()
If TextBox3.TextLength = 2 Then
laddn = laddn + TextBox3
Range("h" & mavariable).Value = laddn
Unload Me
Range("I" & mavariable).Select
laddn = ""
UserForm4.Show
End If
End Sub

Userform3 (notez que la partie userform activate fontionne ce sont les textbox qui ne répondent plus lorsque userform3 est lancé par le userform2)

Code:
Private Sub UserForm_Activate()
 Dim LaDate As Date, Lannee As Long
    LaDate = Date
    Lannee = Year(LaDate)
TextBox1.Value = Lannee
End Sub

Private Sub TextBox1_Change()
If TextBox1.TextLength = 4 Then
laddn = TextBox1 + "-"
End If
End Sub

Private Sub TextBox2_Change()
If TextBox2.TextLength = 2 Then
laddn = laddn + TextBox2 + "-"
End If
End Sub


Private Sub TextBox3_Change()
If TextBox3.TextLength = 2 Then
laddn = laddn + TextBox3
Range("i" & mavariable).Value = laddn
Unload Me
Range("b" & mavariable).Select
laddn = ""
End If
End Sub

J'ai essayé de renommer mes textbox également et rien n'y fait. Merci à tous ceux qui regarderons mon post et un plus gros merci a ceux qui y réponderont!!
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : conflit de userform

Bonjour kllmoon

Tu ne peux pas avoir de code après un "Unload Me" car ton formulaire est fermé...
Tu peux le cacher "Me.Hide" continuez à exécuter ton code, puis à la fin faire un "Unload Me"
Code:
Private Sub TextBox3_Change()  If TextBox3.TextLength = 2 Then
    laddn = laddn + TextBox3
    Range("h" & mavariable).Value = laddn
    Me.Hide
    Range("I" & mavariable).Select
    laddn = ""
    UserForm4.Show
  End If
  Unload Me
End Sub

A+
 

kllmoon

XLDnaute Occasionnel
Re : conflit de userform

Bonjour Bruno, merci pour ta réponse rapide.

Le premier userform fonctionne parfaitement. Quand je ferme le formulaire toute mes variables (qui sont déclarés public) sont déjà déclarées et je demande a excel de les mettre dans la bonne cellule donc théoriquement si le userform est "unload" c'est pas grave non?

J'ai essayé ta façon et ça ne fonctionne pas, ça ne met que le dernier chiffre du jour dans la cellule et le second userform ne répond toujours pas au textbox change...
 

kllmoon

XLDnaute Occasionnel
Re : Userform 2 ne répond plus lorsque lancé par userform1 (tjrs pas résolu)

Je me permet de remettre sur le dessus du fil de discussion une toute petite fois car je n'ai toujours pas trouvé de solution à mon problème et je rage! Je vais essayé de lancer une macro qui ouvrira le userform2 pour voir si ça règle le problème!

négatif, dans VB si je lance directement le code ça fonctionne mais si je le lance de toute autre façon ça ne répond plus au code... Pourquoi un code si simple me donne autant de fil à retorde!!!

J'ai ajouté ceci à mon code pour tester :

Private Sub TextBox3_Change()
test321 = TextBox3.TextLength
MsgBox (test321)

pas de msgbox qui apparait....
 
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Re : Userform 2 ne répond plus lorsque lancé par userform1 (tjrs pas résolu)

Bonjour,
Lors d'un bug l'EnabledEvents ne serait t'il pas resté sur False.
Un petit coup de fenetre exécution pour remettre à True
A tester
J'ai essayé le fichier que des bugs sur ma version 2007 à l'ouverture donc obligation de quitter.
Tu ferais bien de tester ton fichier sur plusieurs PC.
Bruno
 

kllmoon

XLDnaute Occasionnel
Re : Userform 2 ne répond plus lorsque lancé par userform1 (tjrs pas résolu)

serais-ce parceque je l'ai sauvegardé en format 97-2003?

Je ne comprend pas les bugs, j'ai testé sur mon portable, à la maison et des collègues utilisent au travail. Si enable events était a false alors le primier userform ne fonctionnerais pas non plus mais il fonctionne. Le userform fonctionne je devrais dire, c'est le textbox change qui ne fonctionne pas sur le deuxième...

au cas où je remet un fichier test avec seulement le bout de code nécessaire.
 

Pièces jointes

  • copi2.xlsm
    22.8 KB · Affichages: 52
D

Denis

Guest
Re : Userform 2 ne répond plus lorsque lancé par userform1 (tjrs pas résolu)

Bonjour le fil,
Déja rencontré ce problème il y a longtemps (ouhhh, mon bon Monsieur)
pas retrouvé la solution.
En attendant, ajoute "Me" quand tu appelles tes Textbox (au cas où, car ils ont la même appellation), et sur le 2ème USF utilise l'événement KeyUp.
Bon courage et à +
Denis
 

kllmoon

XLDnaute Occasionnel
Re : Userform 2 ne répond plus lorsque lancé par userform1 (tjrs pas résolu)

Ah denis si je pouvais te donner un gros bisou dans le front je le ferais! Keyup a résolu mon problème!

Voici le code du second userform (le premier n'est pas changé) pour future références.

Code:
Private Sub UserForm_Activate()
 Dim LaDate As Date, Lannee As Long
    LaDate = Date
    Lannee = Year(LaDate)
TextBox1.Value = Lannee
End Sub


Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If TextBox1.TextLength = 4 Then
laddn = TextBox1 + "-"
End If
End Sub



Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If TextBox2.TextLength = 2 Then
laddn = laddn + TextBox2 + "-"
End If
End Sub

Private Sub TextBox3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If TextBox3.TextLength = 2 Then
laddn = laddn + TextBox3
Range("i" & mavariable).Value = laddn
Range("b" & mavariable).Select
laddn = ""
Unload UserForm4
Exit Sub
End If
End Sub
 

Discussions similaires

Réponses
6
Affichages
247

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote