Ajout donnée dans une liste VBA Excel 2003

Résolu
Nospam54 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -  
Nospam54 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

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

0
Nospam54 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   13
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   13
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
ah bon ?
si tu utilises les noms de paramètres, il faut les mettre partout !
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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