Recuperer par macro les valeurs d'un tableau sans les doublons ?

C

carlos

Guest
est il possible de recuperer par macro les valeurs d'un tableau(tout) sans les doublons pour les coller dans une colonne (K) en vue de les utiliser dans une liste déroulante (combobox) ?
 
H

Hervé

Guest
re

Désolé de répondre tardivement mais j'étais dans une tempête de neige, grosse galère.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Dim datanoms As New Collection
Dim item
ComboBox1.Clear
'----------on crée la collection-----------
On Error Resume Next
For Each c In Sheets("f_ele").Range("d2:f" & Sheets("f_ele").Range("d500").End(xlUp).Row)
datanoms.Add c.Text, c.Text
Next c
'------------on renvoi chaque élément de la collection vers la combobox--------
For Each item In datanoms
ComboBox1.AddItem item
Next item
End Sub

lorsque tu disais 2ème colonne tu parlais de la feuille et non du combobox.

Ce code est à placer dans le module de la feuille "classe".

au regard de ton fichier , je me demande si une base de données contenant toutes tes "classes" et renvoyer vers la combobox via rowsource ne serait pas plus simple.

Salut
Hervé
 
C

carlos

Guest
re

ca veut dire quoi?

"au regard de ton fichier , je me demande si une base de données contenant toutes tes "classes" et renvoyer vers la combobox via rowsource ne serait pas plus simple"
y avait il une maniere plus simple de gerer une base de donnée ?
 
C

carlos

Guest
Bravo encore une fois pour ta macro;
Elle est tres efficace et operationnelle.
J'ai juste etais obligé de mettre en veille : ' ComboBox1.Clear
car sinon rien ne se passait.

Globalement c'est ce que voulais réaliser .

Merci Hervé pour ton temps et tes compétences .

Merci aussi à Jean Marie (Feuille"classe"Cellule "A2)

Merci à Lord Nelson pour le filtrage des listes .

Cependant Hervé , la fin de ton dernier message m'interpelle et me relance deja sur un nouvel épisode : Rowsource ????

Ca parait si simple pour vous .

PS : C'etait dans le nord la tempete de neige ?
 

Pièces jointes

  • Classefiltrenormalmacroverb.zip
    39.2 KB · Affichages: 60
H

Hervé

Guest
Bonjour

La propriété Rowsource lie la combobox à une base de donnée.

Cette propriété s'applique aux combobox de la boite à outils formulaire, pour les combobox de la barre d’outils : boite à outils contrôles cette propriété s’appelle listfillrange.

En somme il existe deux types de combobox qui on deux noms de propriétés différentes, mais au final elles font la même chose (et après on dit que c’est simple le vba loool).

Expérience :

Dans ta feuille liste, dans ta colonne A, a partir de A1 : saisie les noms de tes classes (ALL1, 3 1, 3 2 etc…)

Dans ta feuille classe crée un 2ème combobox, clique droit dessus et choisi propriété.

Sur la ligne listfillrange, saisie : listes!A1:A… (jusqu’à la fin de ta liste), ferme la fenêtre propriété et du mode création.

Voilà tu viens de crée une base de donnée et la lier à un combobox.

En espérant t’avoir aidé.

Salut
Hervé
 
C

carlos

Guest
Salut Hervé

La proposition que tu me fait correspondait à ma précedente mouture.

Mais elle avait l'inconvénient de ne pas se mettre à jour selon les variations de la base de données.
Et comme ce fichier sera dupliquer par X 50 fois (Puisqu'il servira de base à la création d'autres fichiers ) , Je me vois mal " rouvrir" ces 50 fichiers pour faire les modif.

Par contre,ce qui me fait un peu peur dans la derniere mouture :private Sub Worksheet_SelectionChange(ByVal Target As Range)
C'est que je ne comprends pas tout du code ecrit et que la feuille qui possede ce code (classe) semble tres sensible et dependante du double clic dans les cellules.

Je vais voir ..., on m'a parlé aussi d'une possibilité de passer par du .xla en arriere plan ..????

Merci pour tes conseils Hervé

Et @+
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 470
Membres
103 551
dernier inscrit
d3vi