Ajout donnée dans une liste VBA Excel 2003 [Résolu/Fermé]

Signaler
Messages postés
152
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
15 novembre 2017
-
Messages postés
152
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
15 novembre 2017
-
Bonjour,

J'ai un petit souci d'ajout de données saisies dans une liste modifiable d'un useform.
Ma liste de villes est sur une feuille Excel. L'utilisateur peut soit sélectionner une ville, soit en saisir une si elle n'existe pas encore.
Ça fonctionne très bien... si "find" ne trouve aucune occurrence de la ville saisie.

Ex : si l'utilisateur saisi "Tombouctou" (ville qui n'existe pas dans la liste) mais qu'une ville s'appelle "Villeneuve lès Tombouctou", la macro n'ajoute pas "Tombouctou".
Par contre s'il n'y a nul part l'occurrence Tombouctou, la macro l'ajoute à la liste.

Voici mon code :

'Ajout d'une ville
Set Ws2 = Worksheets("Listes")
    Workbooks("Saisie.xls").Activate
    Sheets("Listes").Select
Set v = Ws2.Cells.Find(lstVilles.Value, LookIn:=xlValues)
If v Is Nothing Then
    txtMessage = ""
    Application.StatusBar = False
    no_ligne = Range("B65536").End(xlUp).Row + 1
    Cells(no_ligne, 2) = lstVilles.Value
    Workbooks("Saisie.xls").Activate
    Sheets("Listes").Select
    Range("B2", Range("B2").End(xlDown)).Select
    ActiveWorkbook.Names.Add Name:="Liste_Villes", RefersTo:=Selection
    Columns("B:B").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A1").Select
    MsgBox "La ville ''" & lstVilles.Value & "'' a été ajouté à la liste des villes.", vbInformation, "Nouvelle ville"
End If


Quelqu'un a-til une idée de la façon de faire ?

Merci d'avance


3 réponses

Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 198
Bonjour

dans la fonction Find, ajoute le paramètre
xllookat:=xlpart

Messages postés
152
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
15 novembre 2017
12
Merci de ta rapide réponse...
Faut-il l'ajouter ainsi :
Set b = Ws1.Cells.Find(lstVilles.Text, LookIn:=xlValues, XlLookAt:=xlPart)

ou bien carrément remplacer LookIn:=xlValues par XlLookAt:=xlPart
Ce qui donnerait :
Set b = Ws1.Cells.Find(lstVilles.Text, XlLookAt:=xlPart)


Cependant dans les 2 cas ça ne fonctionne pas. J'ai le message d'erreur suivant :
"Argument nommé introuvable"
Ça bloque sur le "xllookat" semble-t-il...
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 198
si tu utilises les noms de paramètres, il faut les mettre partout !
Find(What:=lstVilles.Text, LookIn:=xlValues, XlLookAt:=xlPart)
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Bonjour a vous tous

Set v = Ws2.Cells.Find(lstVilles.value, LookAt:=xlWhole)

xlPart-----> recherche si la donnee est contenue dans la cellule
xlWhole----> recherche la cellule egale a la donnee

lstVilles.Text ou value a vous de voir puisque vous changez d'un post a un autre.

Bonne suite
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 198
ah bon ?
Autrement dit, ce que j'écris ou rien, c'est pareil....

désolé d'avoir apporter ma contribution
excusez moi d'avoir dérangé, pourtant j'ai du boulot
Michel
Messages postés
152
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
15 novembre 2017
12
Merci f894009 !
le "LookAt:=xlWhole" fonctionne parfaitement. Même si j'entre un "a" (qui est une occurrence qui existe à coup sûr), ça me le rajoute bien !
Messages postés
16491
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
21 juillet 2021
3 198
ah bon ?
si tu utilises les noms de paramètres, il faut les mettre partout !
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Bonjour michel_m
Loin de moi l'idee de vous cour-circuiter en quoi que ce soit.

Prenons le cas des villes.
ex: je cherche "Sainte" et dans une cellule il y a "Sainte Mère l'Eglise"
avec xlPart le test sera vrai alors que ce n'est pas ce que cherche
avec xlWhole le test sera vrai que si une cellule est egale a "Sainte".
Pour ce qui est des noms de parametre, j'ai laisse celui qui posait probleme dans la discution.