Macro et liste déroulante de choix

Résolu
Bonjour,

C'est tout simple, je voudrais que la macro change la ligne de référence dans ma liste déroulante de choix. Plus précisemment, j'aimerais que lorsque je clique sur le bouton, auquel la macro est affectée, cela fasse descendre d'une ligne ma référence dans ma liste déroulante de choix.

Si quelqu'un peut m'aider...

7 réponses

  1. Bonjour
    voici une proposition
    https://www.cjoint.com/c/CGhsPl6ON3l
    Vu que l'action doit être exécutée lors de l'appui sur un bouton, j'en conclu que la liste déroulante est soit un contrôle de formulaire, soit une validation de données.

    voici donc les 2 cas de figures, libre à vous de l'adapter à votre appli.

    Nota: quand on arrive en fin de liste, évidemment au remonte en début de liste

    bonne réception

    cdlt
    0
    1. Bonjour,

      Désolé de ne répondre que maintenant mais j'étais en vacences.
      Mon problème est quasiment résolu grâce à vous. En fait si je n'arrive pas à adapter votre macro c'est parce que les données de ma liste déroulante de choix ne sont pas sur la même feuille du classeur. Vous serez t'il possible de m'éclairer une nouvelle fois? Je ne sais pas si c'est très claire, n'hésitez pas à me poser des questions. Je vous donne une petite précision, dans mon cas, c'est validation de données.

      Merci.
      Raphaël
      0
      1. Bonjour
        il suffit de donner un nom à la liste qui se trouve sur l'autre feuille.
        pour rester conforme au fichier que je vous ai fourni, il suffit de la nommer "Liste", mais vous pouvez mettre le nom que vous voulez, dans ce cas, il faudra remplacer le mot Liste dans la macro

        Sub SelectionSuivante2()
            On Error Resume Next
            Liste = Range("A12:A15").Address
            Validation = Range("E3").Value
            Set c = Range(Liste).Find(Validation, LookIn:=xlValues)
            If c.Offset(1, 0).Value = "" Then
                Range("E3").Value = Range("A12").Value
            Else
                Range("E3").Value = c.Offset(1, 0).Value
            End If
        End Sub


        Au cas ou vous ne sauriez pas créer la liste, voici comment procéder
        sur la feuille de la liste, sélectionnez toute la liste,
        dans la zone de nom, (en haut à gauche de la barre de formule), tapez le nom de votre choix que vous voulez attribuer à la liste. validez par "Entrée" - la nouvelle liste est créée.
        pour la validation de données, dans les options, sélectionnez "liste"
        dans la zone source, tapez =liste (ou le nom que vous aurez choisi).
        en espérant avoir été assez clair.
        bonne soirée
        cdlt
        0
        1. Re,

          Ce n'est pas exactement ça le problème... Dans votre macro on fait toujours référence aux cellules A12 à A15 de la feuille sur laquelle il y a le bouton mais si ces cellules sont sur une autre feuille cela ne fonctionne plus. Pour faire simple j'aimerais que sur une feuille il n'y ait que le bouton et la liste déroulante et tout le reste sur une autre feuille du même classeur.

          Raphaël
          0
          1. Exemple
            la liste est sur la feuille 2, de la cellule A1 à A100

            Liste = sheets("Feuil2").Range("A1:A100").Address

            mettez le nom de votre feuille, et les adresse de départ et de fin de votre liste, tout simplement

            essayez
            0
            1. RE,

              J'ai beau essayé je ne trouve pas d'où viens le problème.
              Regardez sur le document: https://www.cjoint.com/?3GqsTtDucm5
              peut-être verrez vous d'où vient le problème.
              En tout cas merci de prendre le temps de me répondre.
              0
              1. et cette fois-ci

                Sub SelectionSuivante2()
                On Error Resume Next
                Liste = Sheets("Feuil2").Range("A5:A8").Address
                Validation = Range("E3").Value
                Set c = Sheets("Feuil2").Range(Liste).Find(Validation, LookIn:=xlValues)
                If c.Offset(1, 0).Value = "" Then
                Range("E3").Value = Sheets("Feuil2").Range("A5").Value
                Else
                Range("E3").Value = c.Offset(1, 0).Value
                End If
                End Sub

                A+
                0
                1. Nickel merci,

                  A+
                  0