Gestionnaire des noms

Résolu
Bonjour à vous tous.

J'ai une liste de noms qui me sert pour ma liste déroulante de la validation des données dans une userform que j'ai nommé "NOM" dans le gestionnaire des noms et qui correspond au cellule A1: A25
Si je rajoute deux noms, il faut penser aller modifier le gestionnaire de noms pour qu'il les prenne en compte et que la référence devienne A1: A27.
Est-t-il possible de créer une macro pour automatiser cette mise à jour et l'inclure dans une autre macro que j'utilise.

Suis-je clair ?
Merci

8 réponses

  1. Bonjour,

    Tu n'as pas besoin de créer une macro pour cela, à partir du gestionnaire de noms, tu nomme ton champ exemple nom et tu veux faire référence à une plage exemple Feuil1 cellule de A1 à A dernière valeur

    la formule du à saisir dans le gestionnaire est

    =DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))

    et ta liste de validation s'adaptera automatiquement
    0
    1. Contributeur
      Bonjour

      Pour éviter ça, insérer les cellules à l'intérieur de votre liste les adresses de la liste suivront
      0
      1. Merci les amis
        MIKE-31, ta solution est super. Puis-je te demander pourquoi il faut ;;;. Et est-ce que cette formule peut s'adapter à n'importe quelle référence de cellule dans une macro.
        merci aussi à Philoi10120
        A+
        Cdlt
        0
        1. MIKE et les utares re salut

          excuse moi de te déranger à nouveau. D'une part je viens en propulsant les aide excel de comprendre pourquoi on met ;;; dans la formule que tu viens de me proposer.
          J'aurais une autre demande
          Comment puis je remplacer les référence "A2:A34" dans la formule ci dessous pour que les nouvelles lignes insérer dans mon tableau puisse être pris en compte systématiquement dans mon tri.
          ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range( _
          "A2:A34"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
          xlSortNormal
          Merci si tu peux encore m'ider
          CDLT
          0
          1. Contributeur
            Bonjour

            Si on prend pour la liste "nom" comme proposé par Mike-31

            ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range( _
            "nom"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
            0
            1. Re,

              Ne te complique pas , fait comme cela

              Worksheets("Feuil1").Range("A2:A" & Range("A65536").End(xlUp).Row).Sort Key1:=Range("A2")

              explique ce que tu as trouvé comme explication sur le trois ;;; voir si c'est ça
              0
              1. MIKE-31
                Merci
                mon cher maître voilà ce que j'ai cru comprendre
                si je mets ;1;2; je vais décaler d'une ligne et de 2 colonnes
                en mettant;0;0; ou tout simplement ;;; je reste sur la même colonne.
                ai-je 20/20

                merci pour tout et a+
                0
                1. Re,

                  oui c'est cela, en fait il n'y a pas de déplacement on reste sur la même cellule.
                  entre le premier ; et le second ; désigne la ligne et entre le second et le troisième ; désigne la colonne ;;;
                  en fait pour tester la fonction saisi une valeur dans chaque cellule d'une plage en A1 à D10

                  dans une cellule exemple en F5 écrit celle formule
                  =DECALER(Feuil1!$A$1;;;)
                  puis change les valeurs entre les ;

                  comme
                  =DECALER(Feuil1!$A$1;2;1;)

                  etc ...
                  et regarde la valeur que te retourne la formule

                  =NBVAL(Feuil1!$A:$A) retourne le nombre de valeur dans la colonne
                  si tu as des valeurs jusqu'à la cellule A10, =NBVAL(Feuil1!$A:$A) retournera 10

                  le résultat obtenu par la formule est donc A1:A NBVAL(Feuil1!$A:$A) en clair A1:A10

                  si tu colle cette formule dans une cellule de la première ligne
                  =DECALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
                  et incrémente là vers les bas
                  la formule te retournera la valeur qui se trouve sur la même ligne colonne A et se mettra en erreur lorsqu'elle rencontrera une cellule vide en colonne A et retournera #VALEUR!

                  A+
                  Mike-31

                  Une période d'échec est un moment rêvé pour semer les graines du savoir.
                  0