Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre automatique - VB

9 réponses
Avatar
Antoine
Bonjour,

J'ai une liste clients avec les noms des vendeurs respectifs en vis-à-vis,
je souhaiterai pouvoir récupérer la liste de tous les vendeurs comme celle
que l'on peut obtenir dans la liste déroulante d'un filtre automatique.

J'ai essayé plusieurs choses sans succès, je suis novice en VB.

Auriez-vous une idée qui pourrait m'aider?

Merci par avance.

Antoine

9 réponses

Avatar
Jacky
Bonjour,

Une solution,

1-Sélection de la liste des vendeurs
2-Nommer cette liste par insertion/nom/définir (par exemple "liste" ou
"Vendeurs")
3-Sélection dans une feuille, une cellule de ton choix
4-Menu Données/validation==>onglet option==>section autoriser==> sélection
de: liste
5- Section source: =liste ou =Vendeurs (selon le choix précédent)
6-OK

Un clique sur la cellule en question et la liste devrait apparaître.

Salutations
JJ

"Antoine" a écrit dans le message de
news:
Bonjour,

J'ai une liste clients avec les noms des vendeurs respectifs en vis-à-vis,
je souhaiterai pouvoir récupérer la liste de tous les vendeurs comme celle
que l'on peut obtenir dans la liste déroulante d'un filtre automatique.

J'ai essayé plusieurs choses sans succès, je suis novice en VB.

Auriez-vous une idée qui pourrait m'aider?

Merci par avance.

Antoine


Avatar
AV
| J'ai une liste clients avec les noms des vendeurs respectifs en vis-à-vis,
| je souhaiterai pouvoir récupérer la liste de tous les vendeurs comme celle
| que l'on peut obtenir dans la liste déroulante d'un filtre automatique.

Tu te sers du filtre élaboré avec extraction sans doublons sur une feuille (il
faut partir de cette feuille)

AV
Avatar
JB
Bonjour,

http://cjoint.com/?coveC4675R

Donne une liste triée sans doublons. On peut ajouter des éléments
dans la BD. La maj de la liste est immédiate.

Dans un module:

Function SansDoublonsTrié(champ As Range)
Dim temp()
ReDim temp(1 To champ.Count)
j = 1
For i = 1 To champ.Count
témoin = False
For k = 1 To j
If temp(k) = champ(i) Then témoin = True
Next k
If Not témoin Then temp(j) = champ(i): j = j + 1
Next i
Call tri(temp, 1, j - 1)
SansDoublonsTrié = Application.Transpose(temp)
End Function

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

Dans le tableur:
Sélectionner E2:E12
=SansDoublonsTrié(B2:B18)
Valider avec Maj+Ctrl+Entrée

Cordialement JB
Avatar
Jacky
Bonsoir JB

Pourrait-on imaginer que la liste des "sans doublon" s' incrémente
automatiquement en fonction du nombre de doublon ??

Chapeau bas pour le module ....ô^

Salutations
JJ

"JB" a écrit dans le message de news:

Bonjour,

http://cjoint.com/?coveC4675R

Donne une liste triée sans doublons. On peut ajouter des éléments
dans la BD. La maj de la liste est immédiate.

Dans un module:

Function SansDoublonsTrié(champ As Range)
Dim temp()
ReDim temp(1 To champ.Count)
j = 1
For i = 1 To champ.Count
témoin = False
For k = 1 To j
If temp(k) = champ(i) Then témoin = True
Next k
If Not témoin Then temp(j) = champ(i): j = j + 1
Next i
Call tri(temp, 1, j - 1)
SansDoublonsTrié = Application.Transpose(temp)
End Function

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

Dans le tableur:
Sélectionner E2:E12
=SansDoublonsTrié(B2:B18)
Valider avec Maj+Ctrl+Entrée

Cordialement JB
Avatar
JB
Bonjour,


http://cjoint.com/?cpfI6idxFE

-Le + simple est de prévoir pour la liste la taille maximale estimée
(E2:E100 par exemple).

-Si on voulait que la taille de la liste E2:Exx soit adapté
automatiquement au nombre d'items, il faudrait écrire dynamiquement la
formule matricielle =SansDoublonsTrié(B2:B1000) à chaque maj dans la
BD.

JB
Avatar
AV
| Pourrait-on imaginer que la liste des "sans doublon" s' incrémente
| automatiquement en fonction du nombre de doublon ??

Une alternative (très rapide) faisant appel aux fonctionnalités basiques
(filtre/tri) d'XL :

http://cjoint.com/?cpjoWEfHVt

AV
Avatar
Jacky
Bonjour Alain

Super la méthode; direct dans la boite à idées. Merci
Faudrait que je m'y mette plus sérieusement aux "filtre/tri" .
Un truc qui me turlupine, comment est masqué la feuille "Cachée" pour quelle
n'apparaisse pas dans : format/feuille/afficher ??
Salutations
JJ

"AV" a écrit dans le message de
news:%
| Pourrait-on imaginer que la liste des "sans doublon" s' incrémente
| automatiquement en fonction du nombre de doublon ??

Une alternative (très rapide) faisant appel aux fonctionnalités basiques
(filtre/tri) d'XL :

http://cjoint.com/?cpjoWEfHVt

AV




Avatar
AV
| Un truc qui me turlupine, comment est masqué la feuille "Cachée" pour quelle
| n'apparaisse pas dans : format/feuille/afficher ??

Alt+F11 >> Choisir la feuille > F4 (fenêtre propriétés) > Mettre la
propriété "Visible" à xlSheetVeryHidden

AV
Avatar
Jacky
Re..
OK! Merci Alain

A+
JJ

"AV" a écrit dans le message de
news:
| Un truc qui me turlupine, comment est masqué la feuille "Cachée" pour
quelle

| n'apparaisse pas dans : format/feuille/afficher ??

Alt+F11 >> Choisir la feuille > F4 (fenêtre propriétés) > Mettre la
propriété "Visible" à xlSheetVeryHidden

AV