Condition toujours égale à 1 comment éviter cela ?
3 réponses
Julie
bonjour
j'ai une liste déroulante ( ComboVilles ) dans un userform et lorsque
je sélectionne le 1er index de la liste déroulante ( ComboVilles ) et
que je clique sur le bouton VALIDER, j'ai bien mon égalité, par contre
si je sélectionne les suivants, la valeur de ma liste déroulante ( ComboVilles )
n'est plus égale à la liste " Villes " et elle s'ajoute indéfiniment.
Or j'aimerai que chacunes des valeurs soient égales
Comment faire et quelle est la solution avec mon code ci-dessous ?
sur feuille nommée " donnees " j'ai en colonne C
C1 Villes -- en titre Villes =DECALER(donnees!$C$2;;;NBVAL(donnees!$C:$C)-1;)
C2 Paris
C3 Nice
C4 Lille
etc...
voici le code :
Private Sub UserForm_Initialize()
ComboVilles.RowSource = "donnees!Villes"
ComboVilles.ListIndex = 0 ' Paris
End Sub
' bouton valider
Private Sub BtnValider_Click()
With ComboVilles
ValeurComboVilles = ComboVilles.Value
ValeurDonneeListe = Range("donnees!C2").Value
' si égalité
If ValeurComboVilles = CStr(ValeurDonneeListe) Then
' si valeur deja dans ValeurDonneeListe , on ne fait rien
' on évite d'ajouter des doublons dans ValeurDonneeListe
msgBox ("value is in list " + CStr(ValeurDonneeListe))
Else
' msgBox ("donnee abs")
' si valeur absente dans ValeurDonneeListe , on l' ajoute
Range("donnees!C2").End(xlDown).Offset(1, 0).Value = ComboVilles.Value
'tri de la liste
Sheets("donnees").Activate
Range("Villes").Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, Orientation:=xlTopToBottom
' réafficher la feuille
Sheets("clients").Activate
End If
End With
End Sub
Résultat :
là, j'ai la valeur " Paris " de ( ComboVilles ) qui est égale
à ma liste "Villes, C2 Paris" par contre si je sélectionne
Nice dans la liste déroulante ComboVilles, ma liste
" Villes " est égale à " Paris " ainsi de suite
Comment faire pour que chaque valeur de ComboVilles
soit égale à la liste " Villes " ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Clément Marcotte
Bonjour,
Si tu te sers de ta plage feuille de calcul uniquement pour alimenter ton ComboBox, tu peux utiliser à la place des fichiers textes pour "mémoriser" ta liste de villes et alimenter ton ComboBox:
'tri de la liste Sheets("donnees").Activate Range("Villes").Select Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, Orientation:=xlTopToBottom ' réafficher la feuille Sheets("clients").Activate End If End With End Sub
Résultat : là, j'ai la valeur " Paris " de ( ComboVilles ) qui est égale à ma liste "Villes, C2 Paris" par contre si je sélectionne Nice dans la liste déroulante ComboVilles, ma liste " Villes " est égale à " Paris " ainsi de suite
Comment faire pour que chaque valeur de ComboVilles soit égale à la liste " Villes " ?
Merci pour votre aide
JULIE
Bonjour,
Si tu te sers de ta plage feuille de calcul uniquement pour alimenter
ton ComboBox, tu peux utiliser à la place des fichiers textes pour
"mémoriser" ta liste de villes et alimenter ton ComboBox:
'tri de la liste
Sheets("donnees").Activate
Range("Villes").Select
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending,
Header:=xlNo, _
OrderCustom:=1, Orientation:=xlTopToBottom
' réafficher la feuille
Sheets("clients").Activate
End If
End With
End Sub
Résultat :
là, j'ai la valeur " Paris " de ( ComboVilles ) qui est égale
à ma liste "Villes, C2 Paris" par contre si je sélectionne
Nice dans la liste déroulante ComboVilles, ma liste
" Villes " est égale à " Paris " ainsi de suite
Comment faire pour que chaque valeur de ComboVilles
soit égale à la liste " Villes " ?
Si tu te sers de ta plage feuille de calcul uniquement pour alimenter ton ComboBox, tu peux utiliser à la place des fichiers textes pour "mémoriser" ta liste de villes et alimenter ton ComboBox:
'tri de la liste Sheets("donnees").Activate Range("Villes").Select Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, Orientation:=xlTopToBottom ' réafficher la feuille Sheets("clients").Activate End If End With End Sub
Résultat : là, j'ai la valeur " Paris " de ( ComboVilles ) qui est égale à ma liste "Villes, C2 Paris" par contre si je sélectionne Nice dans la liste déroulante ComboVilles, ma liste " Villes " est égale à " Paris " ainsi de suite
Comment faire pour que chaque valeur de ComboVilles soit égale à la liste " Villes " ?
Merci pour votre aide
JULIE
Julie
| Si tu te sers de ta plage feuille de calcul uniquement pour alimenter | ton ComboBox, tu peux utiliser à la place des fichiers textes pour | "mémoriser" ta liste de villes et alimenter ton ComboBox:
Merci mais le fichier texte externe ne résoud pas mon souci d'égalité de plus ce fichier xls au final sera partagé sur notre réseau et pour éviter toute erreur, on préfère que les données restent dans le xls.
Ya t-il une autre alternative pour Villes ÞCALER(donnees!$C$2;;;NBVAL(donnees!$C:$C)-1;) ?
Merci
JULIE
| Si tu te sers de ta plage feuille de calcul uniquement pour alimenter
| ton ComboBox, tu peux utiliser à la place des fichiers textes pour
| "mémoriser" ta liste de villes et alimenter ton ComboBox:
Merci mais le fichier texte externe ne résoud pas mon souci d'égalité
de plus ce fichier xls au final sera partagé sur notre réseau
et pour éviter toute erreur, on préfère que les données
restent dans le xls.
Ya t-il une autre alternative pour
Villes ÞCALER(donnees!$C$2;;;NBVAL(donnees!$C:$C)-1;) ?
| Si tu te sers de ta plage feuille de calcul uniquement pour alimenter | ton ComboBox, tu peux utiliser à la place des fichiers textes pour | "mémoriser" ta liste de villes et alimenter ton ComboBox:
Merci mais le fichier texte externe ne résoud pas mon souci d'égalité de plus ce fichier xls au final sera partagé sur notre réseau et pour éviter toute erreur, on préfère que les données restent dans le xls.
Ya t-il une autre alternative pour Villes ÞCALER(donnees!$C$2;;;NBVAL(donnees!$C:$C)-1;) ?
Merci
JULIE
Daniel.M
Salut Julie,
Si j'ai compris, il faut : 1: Que tu récupères la valeur du texte choisi dans le combobox 2: Que tu vérifies si ce texte n'est pas déjà inscrit dans la plage Villes
Private Sub BtnValider_Click() Dim res as Variant
With ComboVilles res = Application.Match(.Value, Range("Villes"),0)
If IsError(res) Then ' pas trouvé ' code lorsque donnée nouvelle, i.e. absente dans la liste Else ' trouvé à la position res dans Villes ' code lorsque donnée présente dans la liste End If
End With
End Sub
Salutations,
Daniel M.
Salut Julie,
Si j'ai compris, il faut :
1: Que tu récupères la valeur du texte choisi dans le combobox
2: Que tu vérifies si ce texte n'est pas déjà inscrit dans la plage Villes
Private Sub BtnValider_Click()
Dim res as Variant
With ComboVilles
res = Application.Match(.Value, Range("Villes"),0)
If IsError(res) Then ' pas trouvé
' code lorsque donnée nouvelle, i.e. absente dans la liste
Else ' trouvé à la position res dans Villes
' code lorsque donnée présente dans la liste
End If
Si j'ai compris, il faut : 1: Que tu récupères la valeur du texte choisi dans le combobox 2: Que tu vérifies si ce texte n'est pas déjà inscrit dans la plage Villes
Private Sub BtnValider_Click() Dim res as Variant
With ComboVilles res = Application.Match(.Value, Range("Villes"),0)
If IsError(res) Then ' pas trouvé ' code lorsque donnée nouvelle, i.e. absente dans la liste Else ' trouvé à la position res dans Villes ' code lorsque donnée présente dans la liste End If