XL 2016 mise à jour listes

jahsoldier

XLDnaute Nouveau
Bonjour,

je vous expose brièvement mon problème. En gros j'ai une série de classeurs qui correspondent chacun à un utilisateur. Chaque classeur actuellement contient une feuille qui rassemble les listes déroulantes du classeur. Ce qu'il y a, c'est que j'ai pour le moment une dizaine d'utilisateurs différents et qu'à chaque fois qu'une modifcation doit être faite dans une liste je fais le changement manuellement pour chaque classeur.

Ma question est, serait-il possible de créer un classeur qui reprend les listes et que lorsque je fais un changement dedans cela se répercute sur tous les classeurs des utilisateurs ?

Je vous joins un classeur type d'un utilisateur, ainsi qu'un classeur qui reprend les listes (mais dont je ne parviens pas à faire la liaison..)

Par ailleurs, à l'heure actuelle, le classeur reprenant les listes n'est pas dans le même dossier que les classeurs des utilisateurs (je peux l'y mettre au besoin mais je préfère éviter si c'est possible).

Merci déjà pour le temps passé à lire mon problème
 

Pièces jointes

  • AL 1.0.xlsm
    40.5 KB · Affichages: 15
  • Listes.xlsx
    15.4 KB · Affichages: 14
Solution
RE

Donc comme dit j'ai nommé les tableaux et colonnes des listes du classeur Listes (pour les colonnes, si la listes n'est par utilisée dans son classeur, pas nécessaire).

Pour AL :
Si on veut avoir un chemin paramétrable : prévoir une cellule et la nommer z_Dossier (ne pas oublier le \ final dans le chemin)

Pour faire le lien
Données, A partir d'un fichier, Excel, parcourir les dossiers et sélectionner le fichier Listes, cocher la case Sélectionner plusieurs éléments, puis cocher chacun des tableaux puis, en bas, bouton Modifier

Si on ne souhaite pas de chemin paramétrable, sortir par Fermer et charger dans, Connexion uniquement puis afficher le volet des...

chris

XLDnaute Barbatruc
Bonjour

Pour commencer je te conseille de toujours
  • donner des noms à tes tableaux autres que les noms automatiques du type Tableau1
  • pour les sources de listes déroulantes, nommer également la colonne unique, hors titre de ces tableaux et utiliser ce nom comme Liste de validation
Puisque vous avez 2016, le plus simple est de faire le lien vers la référence des listes par PowerQuery

J'ai mis à jour les deux fichiers
Une cellule nommée dossier contient le chemin d'accès : modifie le

J'ai ajouté une code d'actualisation à l'ouverture du classeur dans le module ThisWorkbook

Ton code VBA de la feuille Plaintes ne devrait pas figurer dans les autres onglets
 

Pièces jointes

  • Listes.xlsx
    13.9 KB · Affichages: 6
  • AL3_PQ.xlsm
    54.8 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @jahsoldier , @chris , le Forum

Coucou Chris, j'ai l'impression qu'il manque le second classeur (XLSM) dans ton Post, car je ne vois que le Classeur Listes.xlsx (qui lui ne contient pas de de code dans ThisWorkBook)

Bonne journée
@+Thierry*

EDIT ah il est là maintenant le xlsm !
 
Dernière édition:

jahsoldier

XLDnaute Nouveau
Bonjour,

Merci beaucoup pour vos réponses.

Je prends bonne note pour la nomination des tables et listes

J'ai cependant un petit souci, lorsque je change le chemin d'accès, que je sauve et ouvre à nouveau le classeur AL, Excel m'affiche un message d'erreur et ceci pour toutes les tables.

erreur.PNG


Pourriez-vous également m'expliquer la façon de procéder pour pouvoir l'appliquer aux autres classeurs qui contiennent également les listes ? ou un tutoriel qui peut m'orienter sur la voie pour faire les powerquery (vu que c'est de cela qu'il s'agit visiblement)

Par ailleurs, vous me signalez qu'il ne faut pas copier le code VBA dans chaque feuille, cela veut dire que s'il se trouve sur la première feuille il s'appliquera à toutes les feuilles du classeur (sachant que le code permet de couper/coller) une ligne dans une autre feuille en fonction de divers critères ?
 

chris

XLDnaute Barbatruc
Bonjour

A vérifier dans l'éditeur PowerQuery :
Fichier, Options et paramètres, Options de requête, Classeur Actif, Confidentialité : doit être ignorer les niveaux de confidentialité
Cela devrait résoudre

Pour les explications, là je pars mais repasserai en fin d'aprem

Pour le VBA, si j'ai bien compris, il sert à ventiler les lignes de la 1ère feuille sur les autres (j'ai regardé en diagonale donc peut-être mal interprété)
 

jahsoldier

XLDnaute Nouveau
bonjour,

cela fonctionne maintenant, merci :)

J'attends les explications avec impatience mais dores et déjà merci, au moins je sais qu'une solution est possible :)

Et pour le VBA oui, il sert à pouvoir ventiler les lignes sur les autres feuilles en fonction des différents cas, mais il peut ventiler de n'importe quelle feuille vers n'importe quelle autre feuille. Une fois que mon soucis de listes sera résolu, j'aurai un autre cas à soumettre pour faire du copier coller d'un classeur vers un autre mais ça je ferai après :)
 
Dernière édition:

chris

XLDnaute Barbatruc
RE

Donc comme dit j'ai nommé les tableaux et colonnes des listes du classeur Listes (pour les colonnes, si la listes n'est par utilisée dans son classeur, pas nécessaire).

Pour AL :
Si on veut avoir un chemin paramétrable : prévoir une cellule et la nommer z_Dossier (ne pas oublier le \ final dans le chemin)

Pour faire le lien
Données, A partir d'un fichier, Excel, parcourir les dossiers et sélectionner le fichier Listes, cocher la case Sélectionner plusieurs éléments, puis cocher chacun des tableaux puis, en bas, bouton Modifier

Si on ne souhaite pas de chemin paramétrable, sortir par Fermer et charger dans, Connexion uniquement puis afficher le volet des Connexions, clic droit sur un tableau, Charger, Table et choisir l'emplacement (ce qui permet de les mettre dans un même onglet, sinon on aurait eu autant d'onglets que de tables)

Si chemin paramétrable : avant de sortir
Accueil, Nouvelle source, Autres sources, Requête vide
renommer la requête Dossier puis dans la barre de formule taper
= Excel.CurrentWorkbook(){[Name="z_Dossier"]}[Content][Column1]{0}
Modifier ensuite la ligne Source (dans les étapes à droite) de chaque requête en remplaçant la partie correspondant au chemin pour avoir :
= Excel.Workbook(File.Contents(Dossier&"Listes.xlsx"), null, true)
(on peut le faire sur la 1ère requête, copier la ligne obtenu et s'en servir pour modifier les autres)
puis sortir comme indiqué ci-dessus

Dans Excel nommer les 1ère colonnes de chaque tableau et utiliser les noms dans les validations
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400