OVH Cloud OVH Cloud

Liste déroulante et conditions

6 réponses
Avatar
Julie
Bonjour,

Dans un formulaire j'ai une liste déroulante dont les cellules se trouvent
en feuil1 ( Range("donnees!C2").Value )

ENTETE : Codepostal =DECALER(donnees!$C$2;;;NBVAL(donnees!$C:$C)-1;)


J'ai fait une condition pour éviter un doublon
( 01 )
If CBCodePostalClient.Value <> Range("donnees!C2").Value Then
msgBox ("donnee abs")
Else
msgBox ("value is in list")
end if

SI je tape 78000, qui se trouve déjà dans ma liste
condition ( 01 ) je devrais avoir le message "value in the list"
or j'obtiens msgBox ("donnee abs")

Que ce soit une conditon d'égalité ou d'inégalité j'obtiens toujours
msgBox ("donnee abs")

Comment éviter les doublons des mêmes données dans 1 liste
déroulante???

Je vous remercie pour votre aide.
JULIE.

6 réponses

Avatar
Starwing
Bonjour Julie,

Une autre solution envisageable, serait que tu fasses une extraction sans
doublon avec un filtre élaboré. Par la suite, utilise la liste que tu as
extraite comme donnée source pour ta liste déroulante.

Starwing
Avatar
AV
Pour éviter la saisie de doublons en C:C :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If Selection.Count > 1 Then Exit Sub
If zz.Column <> 3 Or zz = "" Then Exit Sub
Set C = [C:C].Find(zz(1), zz(1))
If C.Address <> zz(1).Address Then
MsgBox "Valeur déjà présente en " _
& C.Address, vbCritical, "Doublon !"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
SendKeys "{F2}+{HOME}"
End If
End Sub

AV
Avatar
Julie
Je vous remercie.
JULIE
Avatar
Julie
CBCodePostalClient.Value est de type string ou char
Range("donnees!C2").Value est de type integer ou int

donc la condition

If CBCodePostalClient.Value <> Range("donnees!C2").Value Then
msgBox ("donnee abs")
Else
msgBox ("value is in list")
End if

ne pourra jamais être évaluée . je dois convertir le tout en string ou integer
Je vais regarder l'aide plus en profondeur pour trouver une solution

dans mon useform on initialize
CBCodePostalClient.Value = "donnees!C2"

L'extraction de doublon ne change en rien mon problème
car dans mon Combo CBCodePostalClient s'affiche les doublons
pourtant masqués dans la liste


JULIE
Avatar
Starwing
Re Bonsoir Julie,

L'extraction de doublon ne change en rien mon problème
car dans mon Combo CBCodePostalClient s'affiche les doublons
pourtant masqués dans la liste



En fait, le résultat final que tu aimerais obtenir c'est quoi?
Que le ComboBox de ton UserForm se remplisse des données de ta colonne C
mais sans les doublons?

Starwing

Avatar
Julie
J'ai trouvé ;)


CBCodepostal = CBCodePostalClient.Value
CPList = Range("donnees!C2").Value

' Ajouter un nouveau code postal
If CBCodepostal = CStr(CPList) Then
msgBox ("value is in list" + CBCodepostal)
Else
msgBox ("donnee abs de la liste" + CBCodepostal)
end if

cette fois j'ai bien ma valeur d'égalité


JULIE