Renseigner un combobox

Résolu
Bonjour à tous,
Je programme depuis très longtemps en VBA. Mais là je sèche !!!
A l'initialisation d'un userform (modification article), je renseigne tous les champs de ce dernier en prenant l'information dans une feuille de mon fichier excel. Le problème se pose lorsque la valeur dans une cellule est vide et que je dois initialiser un combobox. J'ai une erreur dès l'amorçage du userform.
Si vous avez une solution, je suis preneur !!!
Merci d'avance.
--

2 réponses

  1. Modérateur
    Bonjour,

    Il nous manque des informations pour te répondre. Une combobox est une liste. Comment remplis tu cette liste? Avec RowSource, AddItem, List?
    Peux tu également nous donner le code de ta UserForm_initialize()?
    0
    1. Pour répondre à ta question Franck, voici le code pour initialiser le userform :
      Private Sub UserForm_Initialize()
      Dim j As Variant
      Dim LIGNE As Integer
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("L60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboSERVICE
      .AddItem Sheets("SOURCE_VBA").Range("L" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("K60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboPole
      .AddItem Sheets("SOURCE_VBA").Range("K" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("J60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboDirection
      .AddItem Sheets("SOURCE_VBA").Range("J" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("P60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboCG
      .AddItem Sheets("SOURCE_VBA").Range("P" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("Q60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboLogo
      .AddItem Sheets("SOURCE_VBA").Range("Q" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("R60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboDomicile
      .AddItem Sheets("SOURCE_VBA").Range("R" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("M60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboType
      .AddItem Sheets("SOURCE_VBA").Range("M" & i)
      End With
      Next i
      'Identification de la feuille concernée
      LIGNE = Sheets("SOURCE_VBA").Range("S60000").End(xlUp).Row 'Positionnement de la dernière cellule à récupérer
      For i = 2 To LIGNE 'Démarre à la ligne 2 jusqu'à la ligne définit dans la variable Ligne
      With Me.ComboControle
      .AddItem Sheets("SOURCE_VBA").Range("S" & i)
      End With
      Next i
      ' On définit la valeur de j
      j = Sheets("SOURCE_VBA").Range("A2")
      'On affecte la cellule "A2" à la variable Cel
      Set Cel = Sheets("Source").Range("A" & j)
      'Gsetion de l'initialisation des TextBox
      TextCodeVeicule = Cel.Offset(0, 0)
      Textchauffeur = Cel.Offset(0, 5)
      TextImmat = Cel.Offset(0, 7)
      TextModele = Cel.Offset(0, 10)
      TextPremiere = Cel.Offset(0, 11)
      TextGarantie = Cel.Offset(0, 12)
      TextKilometrage = Cel.Offset(0, 14)
      TextObservations = Cel.Offset(0, 16)
      TextInterlocuteur = Cel.Offset(0, 17)
      'Gestion de l'initialisation des ComboBox
      If IsEmpty(Cel.Offset(0, 1)) Or Cel.Offset(0, 1) = "" Then ComboType = "" Else ComboType = Cel.Offset(0, 1)
      If IsEmpty(Cel.Offset(0, 2)) Or Cel.Offset(0, 2) = "" Then ComboPole = "" Else ComboPole = Cel.Offset(0, 2)
      If IsEmpty(Cel.Offset(0, 3)) Or Cel.Offset(0, 3) = "" Then ComboDirection = "" Else ComboDirection = Cel.Offset(0, 3)
      If IsEmpty(Cel.Offset(0, 4)) Or Cel.Offset(0, 4) = "" Then ComboSERVICE = "" Else ComboSERVICE = Cel.Offset(0, 4)
      If IsEmpty(Cel.Offset(0, 6)) Or Cel.Offset(0, 6) = "" Then ComboDomicile = "" Else ComboDomicile = Cel.Offset(0, 6)
      If IsEmpty(Cel.Offset(0, 8)) Or Cel.Offset(0, 8) = "" Then ComboCG = "" Else ComboCG = Cel.Offset(0, 8)
      If IsEmpty(Cel.Offset(0, 9)) Or Cel.Offset(0, 9) = "" Then ComboLogo = "" Else ComboLogo = Cel.Offset(0, 9)
      If IsEmpty(Cel.Offset(0, 30)) Or Cel.Offset(0, 30) = "" Then ComboControle = "" Else ComboControle = Cel.Offset(0, 30)

      End Sub

      0
      1. Modérateur
        Bonjour,

        Essaie de remplacer :
        If IsEmpty(Cel.Offset(0, 1)) Or Cel.Offset(0, 1) = "" Then ComboType = "" Else ComboType = Cel.Offset(0, 1)

        Par :
        If Trim("" & Cel.Offset(0, 1)) = "" Then ComboType = "" Else ComboType = Cel.Offset(0, 1)
        0
      2. ça fonctionne merci pijaku
        0