1 pièce(s) jointe(s)
VBA - Fermeture du UserForm après sélection dans un Combobox
Bonjour,
Débutant confirmé ;), je consulte régulièrement les forums de developpez.net avec beaucoup de plaisir et de bonheur. J'en profite pour adresser un grand bravo à toute l'équipe et aux bénévoles !
Cette fois ci ma recherche est restée infructueuse...
Voici mon problème :
J'ai un Userform (FormCPVille) avec 2 Conbobox (ComboVille et CodePostal) qui sont liés et qui vont piocher leurs données dans une feuille excel.
Pièce jointe 541479
Comment exécuter mon code de fin (actuellement déclenché par le bouton "Validation") dès qu'une sélection a été effectuée dans l'un des Combobox ?
J'ai essayé plusieurs solutions sans succès (événements Exit, Enter, AfterUpdate)
Les 2 Combobox et le bouton "validation" sont alimentés par le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
Private Sub B_validation_Click()
'appel de la fonction de Validation
Call ValidationCPVille
End Sub
Private Sub ComboVille_Change()
On Error Resume Next
If ActiveControl.Name <> "ComboVille" Then Exit Sub
On Error GoTo 0
If Me.ComboVille.ListIndex = -1 And _
IsError(Application.Match(Me.ComboVille, Application.Index(ListeVille, , 1), 0)) Then
Dim b()
Me.CodePostal = ""
clé = UCase(Me.ComboVille) & "*"
n = 0
For I = LBound(ListeVille) To UBound(ListeVille)
If UCase(ListeVille(I, 1)) Like clé Then
n = n + 1: ReDim Preserve b(1 To 2, 1 To n)
b(1, n) = ListeVille(I, 1): b(2, n) = ListeVille(I, 2)
End If
Next I
If n > 0 Then
ReDim Preserve b(1 To 2, 1 To n + 1)
Me.ComboVille.List = Application.Transpose(b)
Me.ComboVille.RemoveItem n
End If
Me.ComboVille.DropDown
Else
On Error Resume Next
Me.CodePostal = Me.ComboVille.Column(1)
End If
End Sub
Private Sub CodePostal_Change()
On Error Resume Next
If ActiveControl.Name <> "CodePostal" Then Exit Sub
On Error GoTo 0
If Me.CodePostal.ListIndex = -1 And _
IsError(Application.Match(Me.CodePostal, Application.Index(ListeVille, , 2), 0)) Then
Dim b()
clé = UCase(Me.CodePostal) & "*"
n = 0
For I = LBound(ListeVille) To UBound(ListeVille)
If UCase(ListeVille(I, 2)) Like clé Then
n = n + 1: ReDim Preserve b(1 To 2, 1 To n)
b(1, n) = ListeVille(I, 2): b(2, n) = ListeVille(I, 1)
End If
Next I
If n > 0 Then
ReDim Preserve b(1 To 2, 1 To n + 1)
Me.CodePostal.List = Application.Transpose(b)
Me.CodePostal.RemoveItem n
End If
Me.CodePostal.DropDown
Else
On Error Resume Next
Me.ComboVille = Me.CodePostal.Column(1)
End If
End Sub |
PS : Ce code est adapté d'un code trouvé sur Internet ; je remercie l'auteur originel.
Merci pour votre aide