ré initialiser userform

Le
bob1877 Hors ligne
Bonjour,
J'ai un petit souci,
dans une combobox, avec propiété "fmMatchEntryComplete",
lorsque je rentre du texte, cela affiche le résultat correspondant et remplis les textbox associées.
Si le texte saisi ne renvoi pas de résultats, je vide mes textbox grace à ce code :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 Then
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Next
Effacer.Visible = False
Sheets("Menu").Activate
Sheets("Solde").Activate
End If
End With
End Sub

Le problème, je réinitialise bien mon userform, mais lorsque je saisi à nouveau du texte dans le combobox, plus rien ne s'affiche !!!
Alors que sur la feuille Solde j'ai ce code qui devrait fermer mon user

Private Sub Worksheet_Deactivate()
USolde.Hide
Unload USolde
End Sub

Quelqu'un a une idée ???
d'avance merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #23148051
Bonjour,

Un formulaire a plusieurs propriétés. Ici, tu n'en définis qu'une.

Ceci étant dit, pourquoi utilises-tu ces 2 lignes de code dans ta procédure ?
Sheets("Menu").Activate
Sheets("Solde").Activate

Que cherches-tu obtenir comme effet sur le formulaire ?

Dans ta procédure, Tu pourrais utiliser ceci :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 then
.value = ""
'Si besoin d'effacer les données des textbox d'une sélection antérieure
For a = 1 To 5 'Nombre de textbox
Me.controls("Textbox" & a) = ""
Next
exit sub
else
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
'..../...
Next
end with
End Sub

MichD
--------------------------------------------
"bob1877" a écrit dans le message de groupe de discussion :

Bonjour,
J'ai un petit souci,
dans une combobox, avec propiété "fmMatchEntryComplete",
lorsque je rentre du texte, cela affiche le résultat correspondant et remplis
les textbox associées.
Si le texte saisi ne renvoi pas de résultats, je vide mes textbox grace à ce
code :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 Then
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Next
Effacer.Visible = False
Sheets("Menu").Activate
Sheets("Solde").Activate
End If
End With
End Sub

Le problème, je réinitialise bien mon userform, mais lorsque je saisi à nouveau
du texte dans le combobox, plus rien ne s'affiche !!!
Alors que sur la feuille Solde j'ai ce code qui devrait fermer mon user

Private Sub Worksheet_Deactivate()
USolde.Hide
Unload USolde
End Sub

Quelqu'un a une idée ???
d'avance merci
bob1877 Hors ligne
Le #23153761
michdenis a écrit le 22/02/2011 à 16h32 :
Bonjour,

Un formulaire a plusieurs propriétés. Ici, tu n'en définis
qu'une.

Ceci étant dit, pourquoi utilises-tu ces 2 lignes de code dans ta
procédure ?
Sheets("Menu").Activate
Sheets("Solde").Activate

Que cherches-tu obtenir comme effet sur le formulaire ?

Dans ta procédure, Tu pourrais utiliser ceci :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 then
.value = ""
'Si besoin d'effacer les données des textbox d'une sélection
antérieure
For a = 1 To 5 'Nombre de textbox
Me.controls("Textbox" & a) = ""
Next
exit sub
else
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
'..../...
Next
end with
End Sub

MichD
--------------------------------------------
"bob1877" a écrit dans le message de groupe de discussion :


Bonjour,
J'ai un petit souci,
dans une combobox, avec propiété
"fmMatchEntryComplete",
lorsque je rentre du texte, cela affiche le résultat correspondant et
remplis
les textbox associées.
Si le texte saisi ne renvoi pas de résultats, je vide mes textbox grace
à ce
code :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 Then
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Next
Effacer.Visible = False
Sheets("Menu").Activate
Sheets("Solde").Activate
End If
End With
End Sub

Le problème, je réinitialise bien mon userform, mais lorsque je
saisi à nouveau
du texte dans le combobox, plus rien ne s'affiche !!!
Alors que sur la feuille Solde j'ai ce code qui devrait fermer mon user

Private Sub Worksheet_Deactivate()
USolde.Hide
Unload USolde
End Sub

Quelqu'un a une idée ???
d'avance merci


Salut Mitch,
Merci pour ta réponse, je viens de tester et cela marche, par contre la message box s'affiche deux fois de suite, je ne comprend pas. Voici le code modifié en tenant compte de ta réponse.

Private Sub ComboBox1_Change()
Dim Value As String
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 Then
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Effacer.Visible = False
Next
.Value = ""
MsgBox "Pas de fiche employé correspondante.pour en créer une nouvelle, cliquez sur nouveau.", vbQuestion + vbOKOnly
Exit Sub
End If
End With
End Sub
bob1877 Hors ligne
Le #23154051
bob1877 a écrit le 24/02/2011 à 15h24 :
michdenis a écrit le 22/02/2011 à 16h32 :
Bonjour,

Un formulaire a plusieurs propriétés. Ici, tu n'en
définis
qu'une.

Ceci étant dit, pourquoi utilises-tu ces 2 lignes de code dans ta
procédure ?
Sheets("Menu").Activate
Sheets("Solde").Activate

Que cherches-tu obtenir comme effet sur le formulaire ?

Dans ta procédure, Tu pourrais utiliser ceci :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 then
.value = ""
'Si besoin d'effacer les données des textbox d'une sélection
antérieure
For a = 1 To 5 'Nombre de textbox
Me.controls("Textbox" & a) = ""
Next
exit sub
else
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
'..../...
Next
end with
End Sub

MichD
--------------------------------------------
"bob1877" a écrit dans le message de groupe de discussion :


Bonjour,
J'ai un petit souci,
dans une combobox, avec propiété
"fmMatchEntryComplete",
lorsque je rentre du texte, cela affiche le résultat correspondant et
remplis
les textbox associées.
Si le texte saisi ne renvoi pas de résultats, je vide mes textbox grace
à ce
code :

Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 Then
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Next
Effacer.Visible = False
Sheets("Menu").Activate
Sheets("Solde").Activate
End If
End With
End Sub

Le problème, je réinitialise bien mon userform, mais lorsque je
saisi à nouveau
du texte dans le combobox, plus rien ne s'affiche !!!
Alors que sur la feuille Solde j'ai ce code qui devrait fermer mon user

Private Sub Worksheet_Deactivate()
USolde.Hide
Unload USolde
End Sub

Quelqu'un a une idée ???
d'avance merci



Salut Mitch,
Merci pour ta réponse, je viens de tester et cela marche, par contre la
message box s'affiche deux fois de suite, je ne comprend pas. Voici le code
modifié en tenant compte de ta réponse.

Private Sub ComboBox1_Change()
Dim Value As String
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 Then
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Effacer.Visible = False
Next
.Value = ""
MsgBox "Pas de fiche employé correspondante.pour en créer
une nouvelle, cliquez sur nouveau.", vbQuestion + vbOKOnly
Exit Sub
End If
End With
End Sub


J'ai trouvé,
je me suis creusé les méninges, et voilà le code


Private Sub ComboBox1_Change()
With Me.ComboBox1
'Si le combobox affiche un nom figurant dans la liste
If .ListIndex <> -1 Then
IndexComboBox = .ListIndex + 1
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a) = Rg(IndexComboBox, a)
Next
Effacer.Visible = True
End If
'Si le combobox n'affiche pas un nom figurant dans la liste
If .ListIndex = -1 And .Value <> "" Then
.Value = ""
For a = 1 To 5 'Nombre de textbox
Me.Controls("Textbox" & a).Text = ""
Effacer.Visible = False
Next
If MsgBox("Pas de fiche correspondante." & (CHr10) & "Voulez vous en créer une nouvelle?", _
vbQuestion + vbYesNo) = vbYes Then
Sheets("Employé").Activate
Else
Exit Sub
End If
End If
End With
End Sub
Publicité
Poster une réponse
Anonyme