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 -
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 :
Quelqu'un a-til une idée de la façon de faire ?
Merci d'avance
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:
- Ajout donnée dans une liste VBA Excel 2003
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
3 réponses
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
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
ah bon ?
si tu utilises les noms de paramètres, il faut les mettre partout !
si tu utilises les noms de paramètres, il faut les mettre partout !
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.
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.
Faut-il l'ajouter ainsi :
ou bien carrément remplacer LookIn:=xlValues par XlLookAt:=xlPart
Ce qui donnerait :
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...
Find(What:=lstVilles.Text, LookIn:=xlValues, XlLookAt:=xlPart)