Microsoft 365 Corriger des listes déroulantes à partir d'un fichier modèle

lucarn

XLDnaute Occasionnel
Bonjour,
J'ai constitué un formulaire en plusieurs fois et créé des documents. A chaque fois que je modifiais mon formulaire, j'ai fait en sorte de modifier tous les documents de manière à avoir le même formulaire dans tous les documents. Sauf que je n'ai pas été sage et que je n'ai pas été systématique. De plus, quand j'ai modifié un formulaire, ce sont surtout les listes déroulantes que je transformais.
Je voulais avoir une macro qui permette, à partir d'un formulaire modèle, de vérifier et modifier les listes déroulantes qui n'étaient pas conformes.
Mes fichiers s'appellent tous Fichier action 1, 2, 3... et mes onglets s'appellent tous Fiche 1, 2, 3....
La cerise sur le gâteau, ce serait que je puisse savoir quelles listes déroulantes ont été modifiées.
Les listes déroulantes sont disséminées un peu partout entre les colonnes A et G et entre les lignes 1 et 32.
Ci-joint le formulaire modèle à partir duquel, je corrigerai les autres fichiers.
 

Pièces jointes

  • Fichier action MODELE.xlsm
    11.9 KB · Affichages: 4
Solution
Bonjour tout le monde,
Lucarn, cette possibilité extremement simple est vraiment faite pour vous qui avez plein de listes déroulantes partout.
Ca va vous implifier la vie si vos listes sont appelées à être modifiée.
Un petit effort. Voici un tuto très simple, et un fichier pour essayer.

1- Vous créez une feuille que j'ai nommé ListeRef. Vous mettez les items d'une vos listes et vous appelez cette colonne ( ici Liste 1)
Liste 1.jpg

2- Dans une de vos cellules déroulantes, au lieu de mettre la liste des éléments, vous mettez cette formule :
=DECALER(Liste1;0;0;NBVAL(Liste1);1) C'est tout

Liste 2.jpg

3- Quand vous cliquez sur cette case vous avez votre liste. Normal.
4- Mais maintenant à la fin de la liste dans listeRef vous...

lucarn

XLDnaute Occasionnel
Bonjour Lucarn,
Question bête au possible, pourquoi ne pas faire appel à des listes référence pour vos listes déroulantes ?
De cette façon la modification d'une liste référence est répercutée sur toutes vos listes déroulantes sanrs risque d'erreur.
Bonjour Sylvanu,
Je ne passe pas par des listes de référence parce que je ne connais pas ça. Ca n'est pas plus bête que cela. Effectivement, ça a l'air d'être très pratique. Je vais trouver un tuto.
Juste une question : peut-on avoir plusieurs listes de référence sur la même feuille ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lucarn,
Autant que vous voulez d'où l'inrêtet. Le mieux est quand même de limiter à une liste par colonne juste pour avoir la liberté de faire grandir les listes.
C'est pour ça que je vous l'ai proposé. Vous mettez toutes vos listes dans une page et la maintenance est résolue.
Le tuto n'est pas utile. Regardez mon fichier.
J'ai une liste que j'ai appelé Liste1 dans l'onglet ListeRef ( les noms n'ont aucune importance )
et dans la liste déroulante, au lieu de mettre : •;Animation;Imprimé;Internet;M.direct;Média;Partenariale;Publicitaire;Réseaux sociaux vous mettez
=DECALER(Liste1;0;0;NBVAL(Liste1);1) . C'est tout.
Vouriez pu mettre aussi : =Liste1 mais dans ce cas il met aussi des lignes vides à la fin. C'est "moins joli".
 

lucarn

XLDnaute Occasionnel
Un exemple rapide.
Vous qui avez de nombreuses listes déroulantes, ce pourrait être sympa, surtout au niveau de la maintenance.
Sylvanu,
J'ai regardé pour les listes déroulantes de référence. Pour mes futures listes déroulantes, je ferai comme ça.
Mais, pour l'instant, mon problème reste entier. J'ai pas mal de fichiers à vérifier et ceux-ci comportent plusieurs formulaires identiques sur plusieurs onglets.
Je voudrais donc un macro qui puisse modifier toutes les listes déroulantes d'un coup à partir de mon fichier Fiches action MODELE.
 

Pièces jointes

  • Fiches action MODELE.xlsm
    20.2 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Lucarn,
Ca va être bonbon à écrire surtout si vous en avez dans tous les sens.
Un début fait avec l'enregistreur qui modifie la liste en Fiche1/G20 où 3 éléments sont rajoutés.
VB:
Sub ChangeList()
    Range("G20").Select
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:= _
        "•,Animation,Imprimé,Internet,M.direct,Média,Partenariale,Publicitaire,Réseaux sociaux,Essai1,Essai2,Essai3"
        .IgnoreBlank = True
        .InCellDropdown = True
    End With
    Range("A1").Select
End Sub
Bon courage !;)
 

lucarn

XLDnaute Occasionnel
Bonjour Lucarn,
Autant que vous voulez d'où l'inrêtet. Le mieux est quand même de limiter à une liste par colonne juste pour avoir la liberté de faire grandir les listes.
C'est pour ça que je vous l'ai proposé. Vous mettez toutes vos listes dans une page et la maintenance est résolue.
Le tuto n'est pas utile. Regardez mon fichier.
J'ai une liste que j'ai appelé Liste1 dans l'onglet ListeRef ( les noms n'ont aucune importance )
et dans la liste déroulante, au lieu de mettre : •;Animation;Imprimé;Internet;M.direct;Média;Partenariale;Publicitaire;Réseaux sociaux vous mettez
=DECALER(Liste1;0;0;NBVAL(Liste1);1) . C'est tout.
Vouriez pu mettre aussi : =Liste1 mais dans ce cas il met aussi des lignes vides à la fin. C'est "moins joli".
Bonjour Sylvanu,
Décidément, il faut me mâcher le travail. Du fait que je ne vois pas votre onglet ListeRef, je ne vois pas comment il est fait.
1000 excuses de demander beaucoup
 

lucarn

XLDnaute Occasionnel
Bonjour Lucarn,
On parle bien du fichier que je vous ai envoyé ? "Copie de Liste déroulante auto.xlsm" au post #3.
Vous avez deux onglets Fiche1 qui est votre feuille et ListeRef qui contient la liste.
Regarde la pièce jointe 1047124
Je viens de revérifier, c'est bien le fichier attaché au post #3.
Sylvanu,
Bon, bah je viens de comprendre que mon cas était désespéré.
En fait, ce que je ne comprends pas, c'est la phrase "A mettre dans la commande de liste déroulante". Je ne sais tout simplement pas où est cette commande. J'ai fait quelques essais (que je ne listerai pas puisqu'ils étaient parfaitement ridicules), mais je n'ai pas trouvé.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Lucarn, cette possibilité extremement simple est vraiment faite pour vous qui avez plein de listes déroulantes partout.
Ca va vous implifier la vie si vos listes sont appelées à être modifiée.
Un petit effort. Voici un tuto très simple, et un fichier pour essayer.

1- Vous créez une feuille que j'ai nommé ListeRef. Vous mettez les items d'une vos listes et vous appelez cette colonne ( ici Liste 1)
Liste 1.jpg

2- Dans une de vos cellules déroulantes, au lieu de mettre la liste des éléments, vous mettez cette formule :
=DECALER(Liste1;0;0;NBVAL(Liste1);1) C'est tout

Liste 2.jpg

3- Quand vous cliquez sur cette case vous avez votre liste. Normal.
4- Mais maintenant à la fin de la liste dans listeRef vous ajoutez un élément après Réseaux sociaux, par exemple ESSAI999.
Vous retourner sur votre cellule à liste déroulante, vous regarder la liste et vous voyez à la fin ... ESSAI999. Magique non !
 

Pièces jointes

  • Copie de Essais Console Démo.xlsm
    22.8 KB · Affichages: 9

Discussions similaires

Statistiques des forums

Discussions
312 167
Messages
2 085 901
Membres
103 026
dernier inscrit
NAT dan