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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
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
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 : IYydnX7lspztN_7Q4p2dnAA@giganews.com...
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
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
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
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
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
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
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
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