Ajout donnée dans une liste VBA Excel 2003

Résolu/Fermé
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 - 14 mai 2012 à 12:27
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 - 14 mai 2012 à 19:34
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


A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 mai 2012 à 13:34
Bonjour

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

0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13
14 mai 2012 à 13:59
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...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 mai 2012 à 16:29
si tu utilises les noms de paramètres, il faut les mettre partout !
Find(What:=lstVilles.Text, LookIn:=xlValues, XlLookAt:=xlPart)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
14 mai 2012 à 16:38
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 mai 2012 à 16:43
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
0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13
14 mai 2012 à 19:34
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 !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 mai 2012 à 16:41
ah bon ?
si tu utilises les noms de paramètres, il faut les mettre partout !
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
14 mai 2012 à 17:03
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.
0