Adaptation Liste Cascade

MaximeRoth

XLDnaute Junior
Bonjour,

Je travail depuis quelques semaines sur un projet de base de données, servant de suivi produit pour mon entreprise.
Cela implique enregistrement: Du numéro de série, du client ainsi que la référence interne et la désignation du produit associé.
Afin de simplifier au maximum le remplissage et la consultation de cette base de données je souhaite passer par VBA.
La partie enregistrement est fonctionnelle. J'ai quelques problèmes avec la partie consultation.

Je souhaite réaliser un Userform proposant des triages de données commandés par des combobox. Pour cela j'ai choisi de réaliser une liste cascade à 5 niveaux:
  • Désignation
  • Référence
  • Numéro de Série (S/N dans le doc)
  • Client
  • Date
Je souhaiterai aussi que chacun des choix influent sur le contenu des combobox: Si je choisi le client "a" les autres combobox ne proposent alors que les produits, dates... en relation avec ce client.
J'ai donc essayer d'adapter ce code de Jacques BOISGONTIER (merci à lui pour le partage).
https://www.excel-downloads.com/threads/filtrage-listbox-via-combobox.183481/

Cependant ayant de faibles connaissances je bloque, et malgré les explications fournies avec le post je n'arrive pas à grand chose...

J'ai joint mon fichier, le tri se ferai sur les données de la page : "Num_de_Serie".

Si quelqu'un aurait la gentillesse de m'aider il aura tout ma reconnaissance =D

Enfin dernier point mais pas des moindre:

Avant de me lancer dans cette direction je souhaiterai votre avis car, ce menu en cascade va faire apparaître des valeurs inscrites dans mon tableau excel, je souhaiterai donc savoir si il est possible d'éditer les données qui seront le résultat du triage.
Exemple:
Je sélectionne un produit, un client et une date se qui me donne un résultat unique, résultat affiché dans la listbox. Y a t'il moyen de récupérer le numéro de ligne de se résultat ou de modifier par un autre moyen les données si trouvant ?

Merci


Max
 

Pièces jointes

  • Numéro de Série Proto V7 16052012.xlsm
    50.1 KB · Affichages: 49
Dernière édition:

MaximeRoth

XLDnaute Junior
Re : Adaptation Liste Cascade

Bonjour Robert,
Le fichier joint est un mix des 2 fichiers.
Les 2 première pages sont à moi, ainsi que les Userform VBA : Home et Save.
Le reste provient du code de Jacques BOISGONTIER.
J'ai essayé (tant bien que mal) d'adapter se code à mes données sans résultat.
J'ai juste remplacés les données de la feuille BD (provenant du code de Jacques BOISGONTIER).

A +
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Adaptation Liste Cascade

Bonjour Maxime, bonjour le forum,

Ton fichier modifié en pièce jointe ci-dessous.
Plusieurs modifications apportées :
• la propriété ColumnCount de la ListBox1 est passée à 5.
• la propiété ColumnWidths de la ListBox1 est passée à 120 pt;120 pt;100 pt;80 pt;0 pt
ce qui sigifie que la 5ème colonne de la ListBox1 est cachée...
• ajout de la variable li
• ajout dans la procédure Filtre de la ligne :
Code:
Me.ListBox1.List(ligne, 5) = i 'récupère le numéro de la ligne i(-1)
• ajout de 4 textboxes et du code ci-dessous :
Code:
Private Sub CommandButton2_Click() 'bouton "Modifier"
For x = 1 To 4 'boucle sur les 4 textboxes
    Sheets("BD").Cells(li, x) = Me.Controls("TextBox" & x).Value 'place la valeur de la textbox dans l'onglet BD
Next x 'prochaine textbox de la boucle
Unload Me
F_Interro.Show
End Sub

Private Sub ListBox1_Click() 'au clic dans la ListBox1
li = Me.ListBox1.Column(5, Me.ListBox1.ListIndex) + 1 'récupère le numéro de la ligne sélectionnée
'remplissage des textboxes
For x = 1 To 4 'boucle sur les 4 textboxes
    Me.Controls("TextBox" & x).Value = Sheets("BD").Cells(li, x) 'récupère la valeur dans la textbox
Next x 'prochaine textbox de la boucle
End Sub
Tu cliques dans la ListBox1, les données sont renvoyées dans les 4 textboxes. Tu en modifies autant que tu veux et tu cliques sur le bouton Modifier...
Le fichier :
 

Pièces jointes

  • Maxime_v01.xls
    144 KB · Affichages: 44

MaximeRoth

XLDnaute Junior
Re : Adaptation Liste Cascade

Merci énormément, ça marche à la perfection. :D
Cependant pourrais tu me montrer la sélection de page pour les Sub Tri, Filtre et ListeCol car j'aimerai faire ce fonctionnement pour rechercher dans les valeur de ma première page soit "Num_de_serie".
En cherchant dans d'autre dialogue j'ai cru comprendre que la phrase : =DECALER(BD!$A$2;;;NBVAL(BD!$A:$A)-1;4) était importante. Mais j'ai du mal à saisir son rôle.

A+

Max
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Adaptation Liste Cascade

Bonjour Maxime, bonjour le forum,

Désolé mais je suis nul en formule et je ne comprends rien à ces plages nommées dynamiquement par formule... J'ai compris que ListeCol alimentait la Combobox (l'initialisation me paraît inutile d'ailleurs) et Filtre alimentait la ListBox1. Pour travailler dans l'onglet Numero_de_Serie, il te suffirait de créer une plage nommée (Ma_Plage par exemple) et de remplacer bd par Ma_plage et Sheets("BD") par Sheets("Numero_de_Serie") dans le reste du code.
Ça pourrait donner :


 

Pièces jointes

  • Maxime_v02.xls
    156.5 KB · Affichages: 38

MaximeRoth

XLDnaute Junior
Re : Adaptation Liste Cascade

Merci,
Au risque de paraître inculte: comment on créé une plage en 2 parties ?

Exemple je veux inclure les colonnes E, F ,G , H et K donc les 4 premières se suivent mais la dernière est plus loin.

A+

Max
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Adaptation Liste Cascade

Bonjour le fil, bonjour le forum,

Je te rassure, j'ai été bien plus inculte que toi...
On peut faire comme ça :
Code:
Private Sub UserForm_Initialize()
Dim pl As Range
Dim dl As Integer

With Sheets("Numero_de_Serie")
    dl = .Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne de la colonne B (à adapter à ton cas)
    Set pl = Application.Union(.Range("E9:H" & dl), .Range("K9:K" & dl))
    pl.Name = "Ma_Plage"
End With
End Sub
Mais attention il te faudra adapter le reste du code car il est prévu pour 4 colonnes contiguës...
 

MaximeRoth

XLDnaute Junior
Re : Adaptation Liste Cascade

Ok merci pour ton aide au final j'ai pris une option de feignant car j'ai inversé 2 colonnes plaçant ma colonne client en I et donc à la suite.
J'ai également réussi à refaire la cascade en se basant sur ma première page avec 5 combobox de recherches.

Encore une fois merci pour ton aide et bonne continuation.

Surement à une prochaine =D

A+

Max
 

Pièces jointes

  • Numéro de Série Proto V9 29052012.xls
    157 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 144
Membres
111 051
dernier inscrit
MANUREVALAND