liste de choix et recherche
#1
Débutant XLPages

Inscription: 17/09/2009

Messages: 13

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003
Posté le : 20-01-2010 17h53
Bonjour,

Je souhaiterais remplir un tableau à l'aide de proposition par menu déroulant, lié à une base sur une autre feuille (je l'ai mis sur la même feuille sur le fichier joint pour plus de facilité).

L'idée est de choisir un premier critère (dans mon cas : un produit) puis que dans la colonne d'à côté on me propose le/les contrats associés. Une fois choisi 1 contrat, on me propose le/les lieux de retrait de la marchandise puis le fournisseur.

Dans un premier temps ce serait déjà bien.


Par la suite, cerise sur le gâteau, serait de remplir automatiquement le tableau dans le cas où il n'y ait qu'une seule combinaison. (ex : 1 article associé à un contrat qui n'a qu'un lieu de livraison et qu'un fournisseur; dans ce cas les cellules "lieu" et fournisseur se remplissent automatiquement)

Par avance un grand merci pour le temps passé à la lecture  et un énorme MERCI pour l'aide que vous m'apporterez.



Pièce jointe:
xls Planning appro béta.xls   [ Taille: 14.50 Ko - Téléchargements: 475 ]
Edité par Nino63 le 21/01/2010 08:24:41
Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#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 : 20-01-2010 18h13
Bonjour Nino63,

Question : si le choix 1 est le Produit et le dernier choix le Fournisseur, alors pourquoi faire un tableau inversé (Fournisseur en premier et Produit en dernier à droite) ? Quelle en est la raison ?

Dans notre langue, la logique voudrait qu'on remplisse un tableau comme on écrit sur une feuille, c'est à dire de gauche à droite... Faire l'inverse me semble aussi perturbant pour le développeur que pour l'utilisateur final... qu'en penses-tu ?

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 

Re: liste de choix et recherche
#3
Débutant XLPages

Inscription: 17/09/2009

Messages: 13

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003
Posté le : 20-01-2010 19h02
Tout à fait d'accord avec toi.

J'accepterai toute les propositions de développeurs qu'ils me fassent une lecture de gauche à droite ou de droite à gauche!!
Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#4
Débutant XLPages

Inscription: 17/09/2009

Messages: 13

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003
Posté le : 21-06-2010 11h37
Voilà, après une petite pause, je me remet sur le problème.

Je vous rejoint la nouvelle version avec lecture de gauche à droite.

Par avance merci pour les conseils et l'aide.

A charge de revanche
Pièce jointe:
xls Planning appro béta.xls   [ Taille: 14.50 Ko - Téléchargements: 453 ]
Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#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 : 21-06-2010 23h48
Bonsoir Nino63, le Forum,

Tu trouveras ci-joint une façon d'aborder ce type de problème.

J'espère que ça pourra te convenir...

Tout d'abord, j'ai déplacé tes listes A1:D6 sur une seconde feuille (qui pourra donc être cachée et comporter un nombre de lignes variant selon les besoins et sans avoir à déplacer tout le reste et donc, sans avoir à modifier le code VBA)

Ensuite, pas très à l'aise avec les listes de validation que je trouve très lourdes à gérer via VBA, j'ai opté pour un menu contextuel de cellule qui te permet de compléter une ligne complète en 2 clics de souris. 

Dans la pièce jointe, j'ai utilisé le code VBA suivant :

DANS LE MODULE DE CODE DE LA FEUILLE 1

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub   'ne gère pas la sélection de plage
    If Not Application.Intersect(Target, Range("A13:A65536")) Is Nothing Then
        AffichListe
    End If
End Sub

DANS UN MODULE DE CODE STANDARD (ex: Module1)

Option Explicit
'------------------------------------------------------------------------
' Auteur    : Didier FOURGEOT (myDearFriend!)  -  www.mdf-xlpages.com
' Date      : 21/06/2010
' Sujet     : Menu en cascade
'------------------------------------------------------------------------
Sub AffichListe()
Dim CB As CommandBar
Dim M As CommandBarPopup, M1 As CommandBarPopup, M2 As CommandBarPopup, M3 As CommandBarButton
Dim TabTemp As Variant
Dim L As Long
    'On mémorise la liste des données
    With Sheets("Liste")
        L = .Cells(.Rows.Count, 1).End(xlUp).Row
        TabTemp = .Range(.Cells(2, 1), .Cells(L, 4)).Value
    End With
    'On crée une barre de menu temporaire
    On Error Resume Next
    Application.CommandBars("MenuD").Delete
    On Error GoTo 0
    Set CB = Application.CommandBars.Add("MenuD", msoBarPopup, , True)
    For L = 1 To UBound(TabTemp, 1)
        '1er niveau du menu
        Set M = ElmtMenu(TabTemp(L, 1), CB, True)
        '2ème niveau du menu
        Set M1 = ElmtMenu(TabTemp(L, 2), M, True)
        '3ème niveau du menu
        Set M2 = ElmtMenu(TabTemp(L, 3), M1, True)
        '3ème niveau du menu
        Set M3 = ElmtMenu(TabTemp(L, 4), M2, False)
       
        M3.OnAction = "'Maj """ & M.Caption & "|" & M1.Caption & "|" & M2.Caption & "|" & M3.Caption & """'"
    Next L
    'Affiche le menu
    With Application.CommandBars("MenuD")
        If .Controls.Count > 0 Then .ShowPopup
        .Delete
    End With
End Sub

Private Function ElmtMenu(ByVal T$, MenuParent As Object, Pop As Boolean) As Object
Dim M As CommandBarControl
    On Error Resume Next
    Set M = MenuParent.Controls(T)
    On Error GoTo 0
    If M Is Nothing Then
        Set M = MenuParent.Controls.Add(IIf(Pop, msoControlPopup, msoControlButton), , , , True)
        M.Caption = T
    End If
    Set ElmtMenu = M
End Function

Sub Maj(ByVal T As String)
Dim TabTemp() As String
Dim C As Byte
    TabTemp = Split(T, "|")
    For C = 0 To 3
        ActiveCell.Offset(0, C).Value = TabTemp(C)
    Next C
End Sub

Cordialement,


Pièce jointe:
zip PourNino63.zip   [ Taille: 15.11 Ko - Téléchargements: 505 ]

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: liste de choix et recherche SUPER
#6
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 22-06-2010 09h00
Bonjour,

Réellement super ce petit bout de code, il permet une sélection dans une cellule de manière très pro.
Bon, je vais étudier cela de plus près et voir son usage avec  mes tableaux de SommeProd et la selection d'établissement avec les équipes associées.

Vraiment un plaisir de venir sur ce site.......






Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#7
Débutant XLPages

Inscription: 17/09/2009

Messages: 13

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003
Posté le : 22-06-2010 09h58
Génial!!

Joli boulot.

Je fais 2-3 bricole en VBA, mais là je me trouve dans la cour des grands!

Pour le moment, je digère tout çà et je mets en forme de mon côté.
En tout cas çà répond parfaitement.

Je te tiens au courant en cas de nouvelle questions.


Bien que me vienne une idée qui je crois va te permettre de m'adorer!!

Histoire de faire pro est-il possible d'intégrer un colonne pour la date (de livraison dans cet exemple) avec :
- lorsque le choix du produit commander est rempli => comme proposition la date "d'aujourd'hui" +1 jour (de demain, donc ); en jour ouvrable pour compliquer la chose !! gnagnagnaf!
- lorsque l'on clique dans la cellule de la colonne date => l'ouverture d'un petit calendrier pour choisir une date plus lointaine

L'autre solution c'est la proposition de la date de "Demain" avec un petit bouton +/- pour modifier la date. Plus simple, plus rapide... et peut-être moins lourd à saisir. (je crois même qu'au final, je préfère)

Je sais je suis terrrrible!

PS : je joint à nouveau le fichier légèrement modifié
Pièce jointe:
xls Planning appro pour Nino63 version B.xls   [ Taille: 48.00 Ko - Téléchargements: 479 ]
Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#8
Débutant XLPages

Inscription: 17/09/2009

Messages: 13

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003
Posté le : 22-06-2010 12h07
Je rajoute une petite demande :

Je n'arrive pas à diminuer le nombre de niveau du menu.
Ex : passer à 1 menu titre et 2 sous-menu par exemple (au lieu de 3 sous-menu)

Merci


Edité par Nino63 le 22/06/2010 14:38:52
Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#9
Débutant XLPages

Inscription: 17/09/2009

Messages: 13

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003
Posté le : 22-06-2010 14h42
C'est bon, je viens de trouver après quelques 1/4 d'heures de réflexion.

En plus (toujours en plus!!), j'aimerais rajouter une colonne pour avoir la date de la dernière Mise à Jour de la ligne.
J'ai tester avec la fonction MAINTENANT(); ou NOW() pour le VBA; mais j'ai le problème de la réactualisation de la valeur.
On peux toujours passer par une récupération de valeur dans une autre cellule et un "copier/coller la valeur" mais ce n'est pas très propre.

Par avance, merci pour cette ènième conseils.

Hors Ligne
Rapport   Haut 

Re: liste de choix et recherche
#10
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 : 22-06-2010 20h15
Bonsoir Nino63, JackyAmiens, le Forum,

Tout d'abord, merci de ton passage et de ton commentaire JackyAmiens, le plaisir est pour moi

Ensuite Nino63, j'avoue que je n'arrive plus à te suivre, tu veux quoi exactement au final et sous quelle forme (joindre un nouveau fichier exemple au besoin) ? Mais STP, merci de réfléchir à un besoin clair et défini et ne transforme pas de ce fil de discussions en un feuilleton à rebondissements sans fin... (sans oublier, à terme, de mettre en pratique ce qui est indiqué dans ma signature, hein ? ).

Juste en passant :
Citation :
- lorsque l'on clique dans la cellule de la colonne date => l'ouverture d'un petit calendrier pour choisir une date plus lointaine
Ca, c'est l'objet du mDF XLcalendar (et en particulier de sa fonction d'auto-détection des cellules dates) , qui est réalisé notamment pour ça. Evidemment, ça oblige par contre son installation sur chaque poste devant en faire usage.

Sinon "l'autre solution" est sans doute réalisable également.

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