Erreur 380 combobox sans doublon

Bonjour,

En essayant de remplir une ComboBox2 sans doublon a "l'initialize" de mon Userform, cela m'indique une erreur 380.

J'ai un evenement ComboBox2_Change() qui semble provoquer ce bug.

Pour le contourner j'ai tente de faire en sorte que l'evenement change ne se passe pas tant que l'userform intialize n'etait pas fini mais cela ne semble pas marcher.

Je vous mets le fichier en piece jointe si vous voulez le regarder. L'userform concerne devrait s'ouvrir en cliquant sur "Linienbericht lesen" si le code marchait.

merci

Salut Poulu,

Drôle de façon de gérer les doublons, pas étonnant que tu as une erreur

Voici la façon correcte de gérer les doublons

Private Sub UserForm_initialize()
  Dim Cel As Range, Rng As Range, MonDico As Object
  ' Créer l'instance de Dictionnay
  Set MonDico = CreateObject("Scripting.Dictionary")
  ' Avec la feuille
  With Sheets("datenbank")
    ' Définir la zone des valeurs avec dernière cellule remplie
    Set Rng = .Range("B5", .Range("B" & Rows.Count).End(xlUp))
    ' Pour chaque cellule
    For Each Cel In Rng
      ' En cas d'erreur on continue
      On Error Resume Next
      ' Ajouter la valeur au dictionaire
      If Cel.Value <> "" Then MonDico.Add Cel.Value, ""
      ' Si pas d'erreur = ce n'est pas un doublon
      If Err.Number = 0 Then
        ' Ajouter la valeur de la cellule à la comobox
        ComboBox2.AddItem Cel.Value
      End If
      ' Effacer toute trace d'erreur
      Err.Clear
    Next
  End With
  On Error GoTo 0
  'Addiert ComboBox_schicht
  With ComboBox3
    .AddItem "1"
    .AddItem "2"
    .AddItem "3"
  End With

  'Speichert die Daten in tab_donnees / Enregistrement des valeurs dans le tableau
  i = 0
  While Sheets("datenbank").Cells(i + 5, 2).Value <> ""
    For j = 0 To 80
      tab_donnees(i, j) = Sheets("datenbank").Cells(i + 5, j + 2).Value
    Next
    i = i + 1
  Wend
  demarage = 1
End Sub

Je n'ai pas optimisé la suite de ton code, mais ça fonctionne

A+

Bonjour

@ BrunoM45

La méthode employée par Poulu est une méthode que j'utilise et qui fonctionne très bien mais ..... avec une ComboBox

Poulu a placé (intentionnellement ou par erreur) la propriété Style sur fmStyleDropDownList (et a "transformé" cette ComboBox en ListBox)

Et avec une ListBox cette méthode n'est pas valable

Si tu places cette propriété sur fmStyleDropDownCombo tu n'auras pas de plantage

Merci bien,

Plutot que de changer tout mon code je vais preferer supprimer la propriete "listbox" de ma combobox (que j'avais bien cree intentionnelement )

Je retiens vos solutions pour la suite!

thx

Bonjour

Bien que je ne vois pas trop l'utilité de cette propriété

Pourquoi ne pas la modifier à la fin de l'initialisation de la ComboBox

Private Sub UserForm_initialize()

    i = 5
    While Sheets("datenbank").Cells(i, 2) <> ""
        ComboBox2 = Sheets("datenbank").Cells(i, 2)
        If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("datenbank").Cells(i, 2)
        i = i + 1
    Wend
    Me.ComboBox2.style = fmStyleDropDownList

Je n'y avais pas pense thx.

Je gardais cette propriete pour que l'utilisateur ne puisse pas rentrer de valeur dans la combobox et qu'il soit bien oblige de la selectionner dans la liste (J'aurais pu choisir une Listbox mais en choisissant la combobox, j'ai pu copier coller tout un ancien code...).

Salut Banzai64

Banzai64 a écrit :

La méthode employée par Poulu est une méthode que j'utilise et qui fonctionne très bien mais ..... avec une ComboBox

Poulu a placé (intentionnellement ou par erreur) la propriété Style sur fmStyleDropDownList (et a "transformé" cette ComboBox en ListBox)

Et avec une ListBox cette méthode n'est pas valable

Si tu places cette propriété sur fmStyleDropDownCombo tu n'auras pas de plantage

Je ne connaissais pas cette méthode, qui ma fois me parait logique

sauf que si tu ne connais pas la bonne propriété et bien tu es embêté

En tout cas je mets ça dans mes tablettes, plutôt que d'utiliser Dictionnary

Au plaisir

Rechercher des sujets similaires à "erreur 380 combobox doublon"