Liste sous condition...

pilotebien

XLDnaute Nouveau
Bonjour

Je souhaite en sélectionnant un critère restreindre les colonnes suivantes qu’avec les données concernées afin de remplir un tableau sans erreur de saisie de lieu, adresse ou autre éléments

Dans la pièce jointe / exemple / je sélectionne le chiffre 5(agence) cela me restreint mon choix a x BdD (calvi / ventiseri solenzara).
Si je choisi Calvi cela me sélectionne que les villes concernés et etc....

Comment mettre ça en oeuvre. J'ai 3 agences, 13 BDD, 62 villes et 122 adresses.

Merci de votre aide
 

Pièces jointes

  • Liste suivi Travail BdD.xlsx
    19.2 KB · Affichages: 53

Regueiro

XLDnaute Impliqué
Re : Liste sous condition...

Bonsoir
Il te faut mettre tes données sous forme de tableau
Ensuite avec un TCD ( Tableau croisés Dynamique )
Regarde sur la Feuille Data comment sont rentrées les données
Sous Forme de tableau1
Ensuite sur la Feuille TCD
Tu as des segments, tu choisis ton N° d'agence, la ville, ou tout à ta guise.


Voir fichier en PJ
Bonne nuit
A+
 

Pièces jointes

  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsx
    25.2 KB · Affichages: 52

pilotebien

XLDnaute Nouveau
Re : Liste sous condition...

Bonjour et merci.

j'ai oublié un élément, cette demande concerne une saisie dans un tableau donc je ne peux utiliser un TCD.
En fait je veux limiter/cadrer les adresses/villes au BDD et agence afin d’éviter toute erreur.
Merci de votre aide.
 

Regueiro

XLDnaute Impliqué
Re : Liste sous condition...

Bonsoir Le Forum, Pilotebien
Ton fichier en retour.
Sur la feuille Exemple tu click sur une Cellule de A4 à A20 ( à adapter plus tard )
Un userform avec 3 combobox et 1 listbox.
bouton Ok = transfert des données sur la ligne active.

Code sur la feuille Exemple
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect([A4:A20], Target) Is Nothing And Target.Count = 1 Then
    UserForm1.Show
  End If
End Sub

Code:
Dim f, a(), mondico
Dim lstObj As ListObject
Dim cel As Range
Private Sub UserForm_Initialize()
Set f = Sheets("DATA")
Set lstObj = f.ListObjects("Tableau1")
  For i = 1 To Me.Frame1.Controls.Count
    With Me("label" & i)
    .Caption = lstObj.HeaderRowRange.Cells(i)
    .ForeColor = vbBlack
    .Font.Name = "Arial Narrow"
    .Font.Bold = True
    .Font.Size = 14
    .TextAlign = 2
    .Top = 6
    .Height = 18
    .BackColor = vbRed
    End With
  Next i
  
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each C In lstObj.DataBodyRange.Columns(1).Cells
  mondico(C.Value) = "" ' on ajoute l'élément de la famille au dictionnaire
   Next C
  Me.ComboBox1.List = mondico.keys
End Sub
Private Sub ComboBox1_Change()
    Me.ComboBox2.Clear
    Me.ComboBox3.Clear
    Set mondico = CreateObject("Scripting.Dictionary")
  For Each cel In lstObj.DataBodyRange.Columns(1).Cells
  'For Each cel In f.Range("tableau1[Agence]")      'Ce code marche également
    'MsgBox cel.Address & " : " & CStr(cel.Text)
    If cel.Text = Me.ComboBox1.Value Then mondico(cel.Offset(, 1).Value) = ""
    Next cel
  Me.ComboBox2.List = mondico.keys
End Sub
Private Sub ComboBox2_Change()
    Me.ComboBox3.Clear
    Set mondico = CreateObject("Scripting.Dictionary")
  For Each cel In lstObj.DataBodyRange.Columns(1).Cells
    If cel.Text = Me.ComboBox1.Value And cel.Offset(, 1) = Me.ComboBox2 Then mondico(cel.Offset(, 2).Value) = ""
    Next cel
  Me.ComboBox3.List = mondico.keys
End Sub
Private Sub ComboBox3_Change()
  Me.ListBox1.Clear
  i = 0
For Each cel In lstObj.DataBodyRange.Columns(4).Cells

    If cel.Offset(, -3).Text = Me.ComboBox1.Value And cel.Offset(, -2).Text = Me.ComboBox2.Value And cel.Offset(, -1).Value = Me.ComboBox3 Then
      Me.ListBox1.AddItem cel
      Me.ListBox1.List(i, 1) = " -- " & cel.Offset(, -1)
      i = i + 1
    End If
  Next cel
End Sub
Private Sub B_ok_Click()
  Dim i As Integer
  ligne = ActiveCell.Row
  For i = 1 To 3
    Cells(ligne, i) = Me("combobox" & i)
  Next i
    Cells(ligne, 4) = Me.ListBox1

For i = 0 To Me.ListBox1.ListCount - 1
    Cells(ligne + i, 4) = Me.ListBox1.List(i)
    
   
Next i

  Unload Me

End Sub
Bonne Nuit
A+
 

Pièces jointes

  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsm
    40.5 KB · Affichages: 68
  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsm
    40.5 KB · Affichages: 94
  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsm
    40.5 KB · Affichages: 101

pilotebien

XLDnaute Nouveau
Re : Liste sous condition...

Merci de votre aide et du travail réalisé.
J'adore le principe de la boite de dialogue . Il faut que je mette tout ça en musique. Par contre en testant il m'inscrit 3 lignes dans la colonne résidences. Surement un code en trop. Je regarde ca.
Merci. Je vais voir comment l'appliquer a mon grand tableau.
Merci. Je vous tiens au courant.
 

Regueiro

XLDnaute Impliqué
Re : Liste sous condition...

Bonsoir Le Forum, Pilotbien
C'est normal qu'il inscrive 3 noms.
Exemple pour AJACCIO il y a 3 Résidences.
Donc il m'est 3 lignes.
Tu dois adapter la source ONGLET DATA, Tableau1 selon tes données réelles

Voici ton fichier en retour avec quelques modifications.
 

Pièces jointes

  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsm
    49.7 KB · Affichages: 51
  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsm
    49.7 KB · Affichages: 60
  • XLD_Liste-sous-condition-liste-suivi-travail-bdd.xlsm
    49.7 KB · Affichages: 64

Statistiques des forums

Discussions
312 099
Messages
2 085 269
Membres
102 845
dernier inscrit
Baticle.geo