Valeurs en double dans combobox

Bonjour le forum

Alors j'ai fait un code pour remplir le combobox selon l’utilisateur comme ceci :

Sub autoriser(Utilisateur As String)
Dim Col As Byte, i As Byte, lig As Integer

With Sheets("Autorisation") 'dans la feuille paramétrage
    'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
    Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
    'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
    lig = .Columns(1).Cells.Find(Utilisateur, lookat:=xlWhole).Row
   UF_Entrées.TB_Magasin.Clear
    UF_Sorties.TB_Magasin.Clear
    Transfer.ComboBox1.Clear
    For i = 3 To Col
        If UCase(.Cells(lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
         UF_Entrées.TB_Magasin.AddItem .Cells(1, i).Value
           UF_Sorties.TB_Magasin.AddItem .Cells(1, i).Value
           Transfer.ComboBox1.AddItem .Cells(1, i).Value
        End If
    Next i
End With
End Sub

image de tableau Autorisation

capture tableau autorisation

Mais le problème c'est quelque fois (et surtout a la première exécution ) le combobox a doubler les valeurs comme dans l'image c'est dessous

valeur en double

Dans cet exemple l’utilisateur est ADMIN

Et merci d'avance

Bonjour,

Voici un essai (qui ne pourra cependant pas fonctionner sur mac) :

Sub autoriser(Utilisateur As String)

Dim Col As Byte, i As Byte, lig As Integer

With Sheets("Autorisation") 'dans la feuille paramétrage
    'comme on va boucler de la colonne 4 à la dernière colonne, on stocke le n° de la dern colonne :
    Col = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
    'on cherche colonne A le nom d'utilisateur saisi et on stocke son num de ligne
    lig = application.match(Utilisateur, .Columns(1), 0)
    UF_Entrées.TB_Magasin.Clear
    UF_Sorties.TB_Magasin.Clear
    Transfer.ComboBox1.Clear
    set dico = createobject("Scripting.dictionary")
    For i = 3 To Col
        If UCase(.Cells(lig, i)) = "X" Then 'si on trouve un "X" dans la cellule
            if not dico.exists(.Cells(1, i)) then 'si entete de colonne i existe pas
                dico.add .Cells(1, i), "" 'ajouter valeur entete dans colonne i
                UF_Entrées.TB_Magasin.AddItem .Cells(1, i).Value
                UF_Sorties.TB_Magasin.AddItem .Cells(1, i).Value
                Transfer.ComboBox1.AddItem .Cells(1, i).Value
            End If
        end if
    Next i
End With
End Sub

Cdlt,

Bonjour

alors j'ai tester il a met un débogage sur deco variable non définie

alors en peut déclarer comme objet ou comme Dim dict As Scripting.Dictionary

Bonjour,

Oui, notamment si vous avez l'option explicit, il faut déclarer la variable :

Dim dico as Object

Ca devrait suffire.

Cdlt,

OK merci beaucoup

Rechercher des sujets similaires à "valeurs double combobox"