Liste déroulante

SebastienF

XLDnaute Nouveau
Bonjour à Tous,

Simple utilisateur d'Excel, j'aimerais mettre en place un petit programme permettant à des utilisateurs de retouver un CODE précis, en référence à des éléments contenus dans une base de données.

[Au préalable, j'ai bien consulté les messages existants...mais je n'ai pas réussi à en tirer grand chose -niveau trop faible pour "adapter", certainement-En conséquence, je me retrouve bloqué...:( ]

Plus précisement, j'ai une base de données reprennant une liste de pays, eux-mêmes découpés en Régions, elles-mêmes sous découpées par Départements, eux mêmes subdivisés par villes.
C'est un système de cascade : chaque niveau supplémentaire venant apporter du détail au précédent...

Ainsi, l'outil que j'aimerais mettre en place permettrait aux utilisateurs de choisir :
> parmi une liste de pays ( dans 1ère liste déroulante)
> puis la région ( dans une 2ème liste de choix ) en référence à la réponse à la première liste
> puis le département ( dans une 3ème liste de choix ) en référence à la réponse de la deuxième liste...
Aux différentes réponses, est rattaché un code...

Mon problème est :
1) de pouvoir déjà proposer une liste de pays sans doublons
2) de limiter la 2ème liste de choix à la réponse de la 1ère liste (cascade) et ainsi de suite...

Ci joint une "esquisse" de mon programme ainsi qu'une exrtraction de la base de donnéees...:eek:

Merci par avance si vous avez la réponse à mon problème...
 

Pièces jointes

  • test_V1.zip
    14.4 KB · Affichages: 57
  • test_V1.zip
    14.4 KB · Affichages: 52
  • test_V1.zip
    14.4 KB · Affichages: 47

wilfried_42

XLDnaute Barbatruc
Re : Liste déroulante

Bonsoir

Voici un exemple de ce qui peut etre fait, click droit dans la colonne

Attention, au demarrage, le temps risque de prendre un peu de temps (Pas trop quand meme)
 

Pièces jointes

  • sebastien.zip
    48.8 KB · Affichages: 59
  • sebastien.zip
    48.8 KB · Affichages: 52
  • sebastien.zip
    48.8 KB · Affichages: 52

Sylvain59

XLDnaute Occasionnel
Re : Liste déroulante

déjà pour les listes sans blanc voici uneformule a pappliquer sur ta liste de validation
insetrion _ liste de validation _ dans autrise liste et source coller la formule

'=DECALER(Liste1;0;0;NBVAL(Liste1))

"liste"est une plage nommée ou est ta liste

Cordialement
 

Cousinhub

XLDnaute Barbatruc
Re : Liste déroulante

Bonsoir, sebastien, wilfried, sylvain

une autre méthode, basé sur le principe des filtres élaborés.
dans la feuille ("travail"), ne modifie pas les cellules contenant des formules (en jaune)
 

Pièces jointes

  • test_V2.zip
    20.9 KB · Affichages: 57
  • test_V2.zip
    20.9 KB · Affichages: 51
  • test_V2.zip
    20.9 KB · Affichages: 50

allegro50

XLDnaute Occasionnel
Re : Liste déroulante

Bonsoir Sebastien, Wilfried

Voila une autre approche (largement inspirée d'un pgm trouve sur le forum il y a quelques temps)
Dis nous si ca peut te convenir

Bonne soiree
 

Pièces jointes

  • test_V2.xls
    66.5 KB · Affichages: 140
  • test_V2.xls
    66.5 KB · Affichages: 141
  • test_V2.xls
    66.5 KB · Affichages: 140

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Liste déroulante

Bonjour,

Voir PJ

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([A2:A10], Target) Is Nothing And Target.Count = 1 Then
    Sheets("base").[N2] = Empty
    Sheets("base").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
      CriteriaRange:=Sheets("base").[N1:N2], CopyToRange:=Sheets("base").[G1], Unique:=True
  End If
  If Not Intersect([B2:B10], Target) Is Nothing And Target.Count = 1 Then
     Sheets("base").[N2] = Target.Offset(0, -1)
     Sheets("base").[O2] = Empty
     Sheets("base").[A1:CE1000].AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("base").[N1:O2], CopyToRange:=Sheets("Base").[H1], Unique:=True
  End If
  If Not Intersect([C2:C10], Target) Is Nothing And Target.Count = 1 Then
    Sheets("base").[N2] = Target.Offset(0, -2)
    Sheets("base").[O2] = Target.Offset(0, -1)
    Sheets("base").[P2] = Empty
    Sheets("base").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
      CriteriaRange:=Sheets("base").[N1:P2], CopyToRange:=Sheets("base").[I1], Unique:=True
   End If
   If Not Intersect([d2:d10], Target) Is Nothing And Target.Count = 1 Then
    Sheets("base").[N2] = Target.Offset(0, -3)
    Sheets("base").[O2] = Target.Offset(0, -2)
    Sheets("base").[P2] = Target.Offset(0, -1)
    Sheets("base").[Q2] = Empty
    Sheets("base").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
      CriteriaRange:=Sheets("base").[N1:Q2], CopyToRange:=Sheets("base").[J1:K1], Unique:=True
   End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect([d2:d10], Target) Is Nothing And Target.Count = 1 Then
     Sheets("base").[Q2] = Target
     Sheets("base").[A1:E1000].AdvancedFilter Action:=xlFilterCopy, _
      CriteriaRange:=Sheets("base").[N1:Q2], CopyToRange:=Sheets("base").[K1], Unique:=True
       Target.Offset(0, 1) = Sheets("base").[K2]
   End If
End Sub

JB
Formation Excel VBA JB
 

Pièces jointes

  • ListeCascade4Niv.zip
    21.4 KB · Affichages: 47

SebastienF

XLDnaute Nouveau
Re : Liste déroulante

Un grand Merci à Toutes et à Tous !!

aussi, le programme d'Allegro50 m'a neanmoins permis de voir encore plus loin dans ce projet...
Pour être bref, cet outil sert à définir un code précis (de 8 caractères max.) correspondant à une zone géographique précise.
Son mode de fonctionnement est assez simple :
> en entrant les premières lettres d'un pays, l'outil va chercher dans l'onglet "base" toutes les lignes correspondantes, à savoir les régions, elles mêmes divisées provinces, puis villes...
Tout ceci apparait dans la listbox1.
> puis, en cliquant sur la ligne désirée de la listbox1, le code correspondant à au pays, à la région,...apparait dans les textbox2 à 5.

Aussi, comment pouvoir faire de même mais inversement ?

Je m'explique :
J'aimerais proposer une autre option (complémentaire), à savoir :
l'utilisateur connait le code et aimerais savoir à quel pays, province, région...il correspond.

>J'entre mon code de 2 à 8 caractères maximum dans la TextBox6...
et sur le même principe que la ListBox1, j'ai la correspondance de ce code dans la listbox7.

Is it possible ?

PS / Pour des raisons de mémoires, j'ai seulement gardé la France da ma base de données
 

Pièces jointes

  • Area Definition-Europtest.zip
    42.3 KB · Affichages: 30
  • Area Definition-Europtest.zip
    42.3 KB · Affichages: 30
  • Area Definition-Europtest.zip
    42.3 KB · Affichages: 30

Discussions similaires

Réponses
2
Affichages
293
Réponses
8
Affichages
199
Réponses
9
Affichages
420

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 525
dernier inscrit
gbaipc