OVH Cloud OVH Cloud

Combo sans doublons

32 réponses
Avatar
David
Bonjour à tous


J'utilise ceci pour remplir mes 4 combos.

Comment faire pour remplir sans doublon.
J'ai bien regardé sur le excelabo et autre mais je n'arrive pas à l'adapter
à mon projet

Merci de votre aide

Private Sub Ini()
Dim L, M, N, O As Integer
Dim Plage1, Plage2, Plage3, Plage4 As String
L = Sheets("BD").Range("A65536").End(xlUp).Row
M = Sheets("BD").Range("B65536").End(xlUp).Row
N = Sheets("BD").Range("D65536").End(xlUp).Row
O = Sheets("BD").Range("F65536").End(xlUp).Row
Plage1 = Sheets("BD").Range("A2:A" & L).Address
Plage2 = Sheets("BD").Range("B2:B" & M).Address
Plage3 = Sheets("BD").Range("D2:D" & N).Address
Plage4 = Sheets("BD").Range("F2:F" & O).Address
cmbCaisse.RowSource = "'BD'!" & Plage2
cmbMutuelle.RowSource = "'BD'!" & Plage3
cmbMode.RowSource = "'BD'!" & Plage4
cmbClient.RowSource = "'BD'!" & Plage1
End Sub

10 réponses

1 2 3 4
Avatar
Pierre CFI [mvp]
s'il n'y avait que les chiffres qui fassent la différence, tu serais fréquentable mon petit jp, mais il y a tant d'autres choses...
:o)))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site perso
http://access.cfi.free.fr
"sabatier" a écrit dans le message de news:
encore un coup à laisser AV mystérieux, je pense, lui qui adore user de ces
chiffres qui marquent le fossé qui existe entre les MVPs et la valetaille...
jps



Avatar
David
Bonjour Daniel

J'ai fais comme ceci et cela ne fonctionne pas
Encore merci de ton aide

Sub EssaiComboFillUniq()
RempliComboUnik Sheets("Feuil1").Range("A1:A" &
Sheets("Feuil1").Range("A65536").End(xlUp).Row), UserForm1.ComboBox1
RempliComboUnik Sheets("Feuil1").Range("B1:B" &
Sheets("Feuil1").Range("B65536").End(xlUp).Row), UserForm1.ComboBox2
RempliComboUnik Sheets("Feuil1").Range("C1:C" &
Sheets("Feuil1").Range("C65536").End(xlUp).Row), UserForm1.ComboBox3
End Sub

Sub RempliComboUnik(Plage As Range, QuelCombo As MSForms.ComboBox)
Dim C As Range
Dim Tbl As New Collection
Dim i As Integer
On Error Resume Next
For Each C In Plage
If Not IsError(C) Then Tbl.Add C.Value, CStr(C.Value)
Next C
On Error GoTo 0
With QuelCombo
.Clear
For i = 1 To Tbl.Count
.AddItem Tbl(i)
Next i
.ListIndex = 0
End With
Set Tbl = Nothing
End Sub
Avatar
Daniel.M
Bonjour David,

J'ai fais comme ceci et cela ne fonctionne pas
Encore merci de ton aide


Avec un énoncé du type 'ça ne fonctionne pas' (et la restitutuion intégrale du
code), je pourrais te répondre 'ça fonctionne chez moi'.

QU'EST-CE QUI NE FONCTIONNE PAS?
Excel plante
Erreur à la compilation
Le ComboBox n'est pas rempli avec les bonnes valeurs et voici à quoi je
m'attendrai avec les données Y que voici
Msg d'erreur à la ligne Y
etc.

C'est TA responsabilité d'être clair dans la description du problème persistant,
voire même de susciter l'intérêt du répondant de façon à ce qu'il veuille
continuer à le résoudre.

J'attends donc ta description complémentaire de ce qui fait problème (msg
d'erreur, lequel, à quel ligne).

Salutations,

Daniel M.

Avatar
David
Re bonjour

C'est vrai que la j'ai été un peu vite dans l'écriture de ma réponse, c'est
pas mon habitude, enfin....

Donc j'ai modifié comme ceci :

RempliComboUnik Sheets("Feuil1").Range("A1:A" &
Sheets("Feuil1").Range("A65536").End(xlUp).Row), UserForm1.ComboBox1

et cela ne rempli pas le combo. Pas de message d'erreur.

Tout ce code je le met dans l'user ou dans un module ?

J'ai assayé les deux , cela fait pareil

Merci de ton aide
Avatar
Daniel.M
David,


et cela ne rempli pas le combo. Pas de message d'erreur.


Tu mets un 'breakpoint' (faut te mettre sur la bonne ligne et appuyer sur F9) à
On Error GoTo 0

Ensuite, tu exécutes ta macro et elle arrêtera à cette ligne et tu pourras
savoir ce qu'il y a dans la variable Tbl à ce moment.


S'il n'y a rien dans Tbl (voir dans le fenêtre des variables locales), le
problème est en amont: il faudra voir la plage passée pour voir pourquoi elle
ne renseigne pas adéquatement.

Si Tbl contient quelquechose, tu exécutes instruction par instruction (F8) pour
voir si le comboBox reçoit les valeurs.



Tout ce code je le met dans l'user ou dans un module ?


Je l'ai mis dans un module standard.

Salutations,

Daniel M.

Avatar
David
RE

Merci de ta patience michel

Cela fonctionne. Je n'avais pas tout fait de la bonne manière.

Et cela m'a permis de comprendre à quoi server la fenètre "variable locale"


Merci pour tout

Bon W.E.

David
Avatar
David
Re

Oupsss. Il est possible de ne pas faire apparaître les blancs.

C'est dire dans mes colonnes il y a des cellules non remplies dons dans le
combo il y a un blanc.

Re merci
Avatar
jps
je ne réagis pas : je n'ai pas lu...
jps

"Pierre CFI [mvp]" a écrit dans le message de
news:
s'il n'y avait que les chiffres qui fassent la différence, tu serais
fréquentable mon petit jp, mais il y a tant d'autres choses...

:o)))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site perso
http://access.cfi.free.fr
"sabatier" a écrit dans le
message de news:

encore un coup à laisser AV mystérieux, je pense, lui qui adore user de
ces


chiffres qui marquent le fossé qui existe entre les MVPs et la
valetaille...


jps







Avatar
jps
beaucoup de gens ont trempé dans cette ficelle mais, si je ne m'abuse, je
n'y vois pas beaucoup de michel (y a même pas michdenis pour semer le
doute...et la bonne parole)
jps

"David" <(Pas de Spam) a écrit dans le message
de news:
RE

Merci de ta patience michel

Cela fonctionne. Je n'avais pas tout fait de la bonne manière.

Et cela m'a permis de comprendre à quoi server la fenètre "variable
locale"



Merci pour tout

Bon W.E.

David




Avatar
Daniel.M

Oupsss. Il est possible de ne pas faire apparaître les blancs.

C'est dire dans mes colonnes il y a des cellules non remplies dons dans le
combo il y a un blanc.


Au lieu de
If Not IsError(C) Then Tbl.Add C.Value, CStr(C.Value)

mettre
If Not IsError(C) Then
If C<>"" Then Tbl.Add C.Value, CStr(C.Value)
End If

Salutations,

Daniel M.

1 2 3 4