Excel: données (validation)

Résolu
Bonjour,

Pour la rédaction des bons de commandes, j'utilise un fichier Excel: le bon est sur la 1ère feuille, et "le base de donnée" sur la 2ème. Le client effectue son choix via le menu déroulant grâce à la fonction validation des données.

Est-il possible de travailler à l'envers? Autrement dit le client coche la cellule correspondant à son choix dans la 2ème feuille "base de donnée" et l'indication de l'article s'insère dans la première feuille bon de commande, dans une colonne définie en partant de la ligne 10 (par exemple)...

J'ai peu d'espoir que cela soit possible avec Excel, mais...

D'avance merci pour vos astuces

5 réponses

  1. Bonjour,

    Le tableau est visible à l'adresse
    http://cjoint.com/?0KehEvnx7xF

    Actuellement il fonctionne de façon "classique".

    Exemple, dans l'onglet "commande", clique sur B10. Un menu déroulant s'ouvre. Choisi un article (seul les 29 premiers articles sont encodés). Il te reste juste à encoder la quantité souhaitée, et le tour est joué!

    Très simple!... sauf que certains "clients" veulent une vue d'ensemble des produits disponibles. Cette liste existe, sous l'onglet épicerie. En principe elle est protégée, afin qu'un "petit malin" ne modifie pas cette base de données.

    Serait-il possible, en allant sous l'onglet épicerie, de pouvoir cliquer sur un article et que celui-ci s'insère ans l'onglet commande, en B10, le suivant en B11 etc...

    Je sais que le client devra de toute façon revenir dans "commande" pour préciser la quantité... mais bon, certains estiment que les chemins détournés sont parfois plus simples! En fait il faudrait à mon avis abandonner Excel et passer sous Acces pour créer un véritable système style e-commerce: tu cliques sur un objet, une fenêtre s'ouvre pour indiquer la quantité, et le tout génère un bon de commande visible, mais impossible à modifier. Exemple: http://www.collectandgo.be/cogo/fr/home

    On peut rêver... je me débrouille sous Excel, mais Acces, c'est l'inconnu total!

    A nouveau merci pour l'aide et les astuces.
    0
    1. Contributeur
      Bonjour

      macro à installer dans le module "Thisworkbook"
      déclenchement par double clic sur l'article choisi

      Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
      Dim secteur As String
      secteur = UCase(ActiveSheet.Name)
      derlig = Columns("B").Find("*", , , , , xlPrevious).Row
      If secteur <> "commande" _
           And Not Intersect(Target, Range("B1:B" & derlig)) Is Nothing _
                And Target.Count = 1 Then
           With Sheets("commande")
                lig = .Columns("B").Find(secteur, .Range("B8"), , , xlPart).Row
                ligvide = .Columns("B").Find("", .Cells(lig, "B")).Row
                .Cells(ligvide, "B") = Target
           End With
      End If
      End Sub

      0
      1. Contributeur
        ci joint maquette
        https://www.cjoint.com/?3KejcvjDCMv

        si tu ne connais pas VBA, tu dis pour l'installation de la macro

        Le déclenchement "double-clic" a été choisi pour marquer une action volontaire

        il serait intéressant d'insérer en ligne 1 des secteurs de produit des étiquettes de champs .

        du fait que l'on emploie VBA, on pourrait se dispenser d'écrire tes formules dans la feuille "commande"; à toi de voir...

        petite interrogation amicale:
        Tu vends de l'alcool aux enfants ?
        0
      2. petite interrogation amicale:
        Tu vends de l'alcool aux enfants ?


        Zut, je suis découvert...

        Rassure-toi, c'est à usage (à dose "homéopathique") des cuisines didactiques dans les cours de cuisine!

        Pour revenir au bon lui-même, je regarde vos propositions et reviendrai vers vous pour la suite.

        Merci à tous.
        0
      3. J'ai ouvert la maquette, fais un double-clic sur un article de l'onglet épicerie... et il ne se passe rien
        Je dois avoir raté un épisode...
        0
      4. Contributeur
        1/as tu le ruban développeur de présent sur ton Excel?

        2/ Il faut télécharger et non ouvrir le lien
        0
      5. Contributeur
        Si l'onglet Développeur n'apparait pas dans le ruban:
        Cliquez sur le bouton Office,
        puis sur le bouton Options Excel.
        Cliquez sur le menu Standard.
        Cochez l'option Afficher l'onglet Développeur dans le ruban.
        Cliquez sur le bouton OK pour valider.

        source:https://silkyroad.developpez.com/Excel/NouveautesExcel2007/#LIII-B-8

        puis
        bouton office- centre gestion confidentialité - parametres du centre de gestion...-activer les macros
        0
    2. J'aurais fait beaucoup plus simple :
      copie des tableaux avec liaison dans la première feuille. On coche les lignes voulues dans les différentes feuilles . On applique un filtre des lignes cochées sur la première feuille.
      0
      1. Contributeur
        Effectivement très facile avec des enfants...
        0
    3. Je n'ai pas compris la question... ou alors j'ai mal expliqué ma solution. Ma manip n'est à faire qu'une fois, après c'est transparent. Il n'y a plus qu'à cocher dans les différentes feuilles, et le reste se fait tout seul.
      0
      1. Pour michel_m:

        Les macros étaient désactivés... méa culpa!

        Maintenant, tout marche à merveille.

        Encore une petite question: il est possible d'éviter les doublons dans une feuille. C'est égalent possible avec cette macro?

        A nouveau, un GRAND merci.
        0
        1. Contributeur
          il est possible d'éviter les doublons dans une feuille. C'est égalent possible avec cette macro?

          Je regarde, apparemment: oui.

          mais en ce moment on a pas mal de coupures ou micro-coupures car on est en "épisode cévenol" dans mon coin :-/
          donc, sois patient!
          0
        2. Aucune urgence, rien ne presse.
          0
        3. Contributeur
          et voilà! avec d'autres petites améliorations

          Option Explicit
          
          Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
          Dim Secteur As String, Derlig As Integer, Lig As Integer, Ligvide As Integer
          
          Secteur = UCase(ActiveSheet.Name)
          Derlig = Columns("B").Find("*", , , , , xlPrevious).Row
          If Secteur <> "commande" _
               And Not Intersect(Target, Range("B1:B" & Derlig)) Is Nothing _
                    And Target.Count = 1 Then
               With Sheets("commande")
                    If Application.CountIf(.Columns("B"), Target) > 0 Then GoTo doublon
                    Lig = .Columns("B").Find(Secteur, .Range("B8"), , , xlPart).Row
                    Ligvide = .Columns("B").Find("", .Cells(Lig, "B")).Row
                    .Cells(Ligvide, "B") = Target
                    .Activate
               End With
          End If
          
          Exit Sub
          
          doublon:
          MsgBox "Article déjà commandé!", vbCritical, "Cuisine didactique"
          End Sub
          
          0
        4. Contributeur
          petite remarque:

          en relisant ton post:
          En fait il faudrait à mon avis abandonner Excel et passer sous Acces pour créer un véritable système style e-commerce: tu cliques sur un objet, une fenêtre s'ouvre pour indiquer la quantité, et le tout génère un bon de commande visible

          c'est faisable facilement ( peut-être) en Excel
          0
        5. Dans la famille Office: Word et Excel: les bases, y compris le publipostage (c'est déjà pas mal!)

          Access, c'est la planète Mars pour moi!

          Si tu me dis qu'Excel peut faire le travail que je croyais réservé à Access, je dis BRAVO, mais je t'avoue que tu deviens là le gourou d'une secte, celle des vrais utilisateurs d'Excel.
          0