Problème BDD et Liste cascade
#1
Débutant XLPages

Inscription: 17/10/2009
De Port en Bessin (Calvados)

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 17-10-2009 10h45
Bonjour à tous;
Tout d'abord une rapide présentation. Je suis Jean-François un papy De 55ans qui tente vainement de rester au gout du jour et qui a décidé de faire travailler son neurone restant. C'est pourquoi je m'amuse (en fait pas tout le temps) à écrire des "applications" (C'est un bien grand mot ) à partir d'Excel.

Membre d'un club de maquettisme, j'ai décidé de créer une gestion des favoris Internet, des membres du club. L'idée est de collecter les favoris de chacun, puis de consolider le tout sur une base de données. Excel n'est paut-être pas le meilleur choix, mais il est tellement puissant que je voudrais bien terminer ce projet avec Excel.

J'avance pas à pas mais là j'ai un soucis.

Une fois collectés j'aimerais classer les liens suivant un maximum de 5 critères. Ces critères me permettent ensuite de pouvoir faire des recherches de liens par combinaisons de critères. Le problème doit venir de la manière de constituer la base de données des critères, mais là je sèche.
Je vous ai donc fait un extrait de ma base telle qu'elle est actuellement.

Donc si l'un d'entre vous avait la gentillesse de jeter un oeil et de me conseiller sur la meilleur manière de procéder. J'aimerais en fait utiliser la même mécanique plusieurs fois dans mon appli. C('est pourquoi je voudrais comprendre comment tout cela fonctionne.

D'avance je vous remercie pour votre aide et vous souhaite une bonne journée à tous.
Cordialement.

Pièce jointe:
xls PB_Liste_Cascade.xls   [ Taille: 45.50 Ko - Téléchargements: 490 ]
Edité par jeff1494 le 17/10/2009 19:16:11
Hors Ligne
Rapport   Haut 

Re: Problème BDD et Liste cascade
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 17-10-2009 15h50
Bonjour Jeff1494 et bienvenue sur XLpages.com

Tu trouveras en pièce jointe une solution possible en conservant la structure de ta base de données d'origine.

Le module de code du Userform est le suivant :
Option Explicit
'---------------------------------------------------------------------------------------
' Auteur    : Didier FOURGEOT (myDearFriend!)  -  www.mdf-xlpages.com
' Date      : 17/10/2009
'---------------------------------------------------------------------------------------
Dim TabTemp As Variant

Private Sub UserForm_Initialize()
Dim L As Long
    'Mémorise les données dans un tableau variant temporaire
    With Sheets("Données")
        L = .Cells(.Rows.Count, 1).End(xlUp).Row
        TabTemp = .Range(.Cells(2, 1), .Cells(L, 6)).Value
    End With
    'Remplissage du ComboBox1
    RemplirCbo 1, ""
End Sub

Private Sub ComboBox1_Change()
'Remplissage Combo2
    RemplirCbo 2, ComboBox1.Text
End Sub

Private Sub ComboBox2_Change()
'Remplissage Combo3
    RemplirCbo 3, ComboBox2.Text
End Sub

Private Sub ComboBox3_Change()
'Remplissage Combo4
    RemplirCbo 4, ComboBox3.Text
End Sub

Private Sub ComboBox4_Change()
'Remplissage Combo5
    RemplirCbo 5, ComboBox4.Text
End Sub

Private Sub RemplirCbo(Id As Byte, T As String)
'myDearFriend!  -  www.mdf-xlpages.com
Dim Col As New Collection   'gestion doublons
Dim Cbo As Control
Dim L As Long
    'RAZ de toutes les ComboBox suivantes (pour action rétroactive)
    For L = 5 To Id Step -1
        Controls("Combobox" & L).Clear
    Next L
    'MAJ de la prochaine ComboBox (sans doublon)
    Set Cbo = Controls("Combobox" & Id)
    For L = 1 To UBound(TabTemp, 1)
        TabTemp(L, 6) = Application.Min(TabTemp(L, 6), Id - 1)
        If Id = 1 Then  'Pour la première ComboBox
            TabTemp(L, 6) = 1
            On Error Resume Next
            Col.Add TabTemp(L, 1), CStr(TabTemp(L, 1))
            On Error GoTo 0
            If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 1)
        Else            'Pour les suivantes
            If TabTemp(L, Id - 1) = T Then
                If TabTemp(L, 6) = Id - 1 Then
                    TabTemp(L, 6) = Id
                    On Error Resume Next
                    Col.Add TabTemp(L, Id), CStr(TabTemp(L, Id))
                    On Error GoTo 0
                    If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, Id)
                End If
            End If
        End If
    Next L
End Sub

Private Sub CommandButton1_Click()
    Unload UserForm1
End Sub

En espérant t'avoir aidé...

Cordialement,


EDITION :
Code VBA ci-dessus et fichier rectifiés selon la remarque (judicieuse ) de jeff1494.


Pièce jointe:
zip PourJeff1494_Liste_Cascade.zip   [ Taille: 20.05 Ko - Téléchargements: 444 ]
Edité par myDearFriend! le 17/10/2009 16:34:13

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Problème BDD et Liste cascade
#3
Débutant XLPages

Inscription: 17/10/2009
De Port en Bessin (Calvados)

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 17-10-2009 15h57
Thank you My Dear Friend;
Je vais regarder tout cela au plus vite, et te tiens au courant.
Dans tous les cas merci pour ton temps et tes conseils.
By the way, comme je suis un grand débutant mon "appli" est faite de brics et de brocs, et je voulais savoir si il était possible de te soumettre cette "chose" que j'ai pondu, pour te demander un sorte d'audit.
En effet je voudrais bien progresser, et apprendre à structurer le tout, et surtout optimiser le code.

Dans tous les cas je comprendrais très bien un refus éventuel.
En attendant encore merci et bon week-end.
Cordialement.
Hors Ligne
Rapport   Haut 

Re: Problème BDD et Liste cascade
#4
Débutant XLPages

Inscription: 17/10/2009
De Port en Bessin (Calvados)

Messages: 3

Système d'exploitation:
PC
Version Excel utilisée:
2007
Posté le : 17-10-2009 16h14
Je rencontre le problème suivant : Message d'erreur, L'indice n'appartient pas à la sélection.
En fait sur la ligne entrant dans la boucle pour le remplissage des combo il y a une erreur.
Tu as mis :
        If Id > 1 Then  'Pour la première ComboBox.
En fait il faut faire If Id = 1 Then.

Mis à part cette erreur, tout fonctionne à merveille.
Un grand merci.

Hors Ligne
Rapport   Haut 

Re: Problème BDD et Liste cascade
#5
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 17-10-2009 16h29
Re jeff1494,

Arf, oui tu as tout à fait raison, j'ai réordonné mon code au tout dernier moment et j'ai oublié de rectifier cet élément en conséquence. Je corrige illico le post et le fichier joint précédemment...

Citation :
jeff1494 a écrit :
By the way, comme je suis un grand débutant mon "appli" est faite de brics et de brocs, et je voulais savoir si il était possible de te soumettre cette "chose" que j'ai pondu, pour te demander un sorte d'audit.
En effet je voudrais bien progresser, et apprendre à structurer le tout, et surtout optimiser le code.

Dans tous les cas je comprendrais très bien un refus éventuel.

Je suis bien évidemment flatté et te remercie de la confiance que tu accordes à mon travail, mais comme tu t'en doutes, je ne peux répondre favorablement à ta demande. A vrai dire, j'ai déjà bien du mal à assurer de bout en bout l'ensemble de mes projets personnels , et je ne peux me permettre de me lancer dans ce type d'analyse.

Mais le forum et ses intervenants restent bien entendu à ta disposition, si tu souhaites voir ou revoir certains points particuliers et ciblés de ton (tes) projet(s)...

Merci également de bien vouloir clore le présent fil de discussions en [résolu] si tel est le cas (voir au bas de ma signature STP)...

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes