Activation évenement "click" pendant initialisation

Bonjour à tous,

J'aurais besoin de votre aide svp

Je possède un userform avec deux combobox.

Lors de l'initialisation de l'userform je remplis ces deux combobox sans doublon et triée

For i = 7 To Sheets("Inventaire PDR limoges SNCF").Range("O65536").End(xlUp).Row
    If Sheets("Inventaire PDR limoges SNCF").Range("O" & i) <> "" Then
      Modifier_PDR_equipement.Cbx_Emplacement = Sheets("Inventaire PDR limoges SNCF").Range("O" & i)
        If Modifier_PDR_equipement.Cbx_Emplacement.ListIndex = -1 Then
          Modifier_PDR_equipement.Cbx_Emplacement.AddItem Sheets("Inventaire PDR limoges SNCF").Range("O" & i)
         End If
    End If
Next i

With Modifier_PDR_equipement.Cbx_Emplacement
    For i = 0 To .ListCount - 1
        For j = 0 To .ListCount - 1
            If .List(i) < .List(j) Then
                strTemp = .List(i)
                .List(i) = .List(j)
                .List(j) = strTemp
                End If
        Next j
    Next i
End With

Puis dans un l'évenement "click" des combo je les relie entre elle

c'est à dire que la sélection d'un item sur l'une d'elle affichera l'item correspondant dans l'autre.

Private Sub Cbx_IO_Click()

Dim X As String

X = Recherche_par_equipement.Cbx_IO.Text
Sheets("Inventaire PDR limoges SNCF").Columns(11).Find(What:=X).Activate
ligne = ActiveCell.Row

Recherche_par_equipement.Cbx_GMAO.Value = Cells(ligne, 14)

 Recherche_par_equipement.Lst_Search.Clear
  Set C = Range("K:K").Find(Recherche_par_equipement.Cbx_IO.Value)
  If Not C Is Nothing Then
     premier = C.Address
     i = 0
     Do
       Recherche_par_equipement.Lst_Search.AddItem
       Recherche_par_equipement.Lst_Search.List(i, 0) = C.Offset(0, -10).Value
       Recherche_par_equipement.Lst_Search.List(i, 1) = C.Offset(0, -9).Value
       Recherche_par_equipement.Lst_Search.List(i, 2) = C.Offset(0, 4).Value
       Set C = Range("K:K").FindNext(C)
       i = i + 1
     Loop While Not C Is Nothing And C.Address <> premier
   End If

End Sub

Cela fonctionne, seulement, lors de l'initialisation de l'userform, l'événement "click" est également activé, ce qui rend la macro extremement longue.

Pourriez-vous me dire si quelque chose dans mon code active les autres évnéments que l'initialisation, et surtout comment y remédier?

Merci à ceux qui m'accorderont un peu de leur temps =)

Cdt

Bonsoir

Si ton Userform s'appelle Modifier_PDR_equipement tu peux remplacer ce nom (seulement dans le module de l'Userform) par Me.

Pour empêcher (neutraliser) l'évènement clic il faut que tu crées une variable publique pour l'Userform

En haut du module (après l'éventuel (mais très utile) ) Option Explicit

Tu marques Dim EnCours As Boolean

Ensuite avent le remplissage des ComboBox tu initialises cette variable à True et tu la remettra à False une fois le remplissage effectué

Voir ton code

Encours = True
For i = 7 To Sheets("Inventaire PDR limoges SNCF").Range("O65536").End(xlUp).Row
    If Sheets("Inventaire PDR limoges SNCF").Range("O" & i) <> "" Then
      Modifier_PDR_equipement.Cbx_Emplacement = Sheets("Inventaire PDR limoges SNCF").Range("O" & i)
        If Modifier_PDR_equipement.Cbx_Emplacement.ListIndex = -1 Then
          Modifier_PDR_equipement.Cbx_Emplacement.AddItem Sheets("Inventaire PDR limoges SNCF").Range("O" & i)
         End If
    End If
Next i

With Modifier_PDR_equipement.Cbx_Emplacement
    For i = 0 To .ListCount - 1
        For j = 0 To .ListCount - 1
            If .List(i) < .List(j) Then
                strTemp = .List(i)
                .List(i) = .List(j)
                .List(j) = strTemp
                End If
        Next j
    Next i
End With
Encours =  False
 

Ensuite dans la procédure Private Sub Cbx_IO_Click() il faut tester cette variable

    Private Sub Cbx_IO_Click()

    Dim X As String

    If Encours =  True Then Exit Sub

    X = Recherche_par_equipement.Cbx_IO.Text
    Sheets("Inventaire PDR limoges SNCF").Columns(11).Find(What:=X).Activate
    ligne = ActiveCell.Row

    Recherche_par_equipement.Cbx_GMAO.Value = Cells(ligne, 14)

     Recherche_par_equipement.Lst_Search.Clear
      Set C = Range("K:K").Find(Recherche_par_equipement.Cbx_IO.Value)
      If Not C Is Nothing Then
         premier = C.Address
         i = 0
         Do
           Recherche_par_equipement.Lst_Search.AddItem
           Recherche_par_equipement.Lst_Search.List(i, 0) = C.Offset(0, -10).Value
           Recherche_par_equipement.Lst_Search.List(i, 1) = C.Offset(0, -9).Value
           Recherche_par_equipement.Lst_Search.List(i, 2) = C.Offset(0, 4).Value
           Set C = Range("K:K").FindNext(C)
           i = i + 1
         Loop While Not C Is Nothing And C.Address <> premier
       End If

    End Sub

Si des difficultés il faut joindre ton fichier

Yeaaaaaaaaaaahh !!!!

Fantastique =) ça fonctionne au poil.

Un grand merci à toi =)

Rechercher des sujets similaires à "activation evenement click initialisation"