Création de listes déroulantes en cascade en référence à un fichier externe

KIM

XLDnaute Accro
Bonsoir les ami(e)s,
Je reviens vers vous, comme d'habitude, pour résoudre un cas bloquant et vous en remercie par avance.
Dans un répertoire fixé, J'ai un fichier de référence au format csv du nom RefInterne.csv. Les colonnes A, B, C sont des listes de données utilisées dans des fichiers excel de type XYZ040-S1-A-SURF.xls. J'en ai plus de 1000 fichiers. Mes utilisateurs doivent corriger ces fichiers col I, J, K conformement au fichier de référence col A, B et C.
Pour leur faciliter la mise à jour, je cherche une macro vba qui recherche à partir d'un répertoire donné tous les fichiers xls et créé une liste déroulante dans chaque case des colonnes I, J, K , à partir de la ligne 10, conformément aux données du fichier de référence colonnes A, B et C.
Est-ce possible ?
Ci-joints les fichiers de référence et un des fichiers excel à mettre à jour.
Merci de votre aide
KIM
 

Pièces jointes

  • RefInterne.zip
    431 bytes · Affichages: 54
  • XYZ040-S1-A-SURF.zip
    2.4 KB · Affichages: 55
  • XYZ040-S1-A-SURF.zip
    2.4 KB · Affichages: 54
  • XYZ040-S1-A-SURF.zip
    2.4 KB · Affichages: 53

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bonjour le forum & les ami(e)s,
Vu le besoin, je me permets de relancer le sujet ci-dessus et je vous remercie de votre aide.
Pour plus d'informations, les listes déroulantes des colonnes A, B et C du fichier de réference sont liées en cascade.
Dans la col A il n'y a pas de cellule vide. Par contre dans les colonnes B et C on retrouve beaucoup de cellules vides.
Les listes des Col A et B ne sont pas modifiables. Par contre pour la col C, l'utilisateur peut saisir du texte différent de la liste déroulante de la col C.
Merci d'avance
KIM
 

eriiic

XLDnaute Barbatruc
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bonjour,

pas sûr que je me lance dedans parce que ça demander du temps mais :
1) si tu pouvais donner un exemple des items des sous-listes et sous-sous-liste à avoir pour 'atelier' par exemple ça éclairerait.
Si 2ème niveau vide on a :
Electricien
Plomberie (CVC)
*
en 3ème niveau ?

Si Electronique en 2ème niveau on n'a que * en 3ème ou autre chose ?

Tu vois, ça peut-être interprété de différentes façons, soit exhaustif sur les explications et fourni un exemple complet.

2) tes listes sont-elles déjà nommées et quelle est la règle ou bien la macro doit-elle créer tous les noms ? (ce qui sera du boulot et à condition que le 1) soit complet et précis)

eric
 

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bonsoir Eric, et le forum,
Merci d'avance,
En effet, à partir du fichier RefInterne.csv, il faut créer les listes déroulantes dans le fichier XYZ040-S1-A-SURF.xls.
La col A est une colonne sans cellule vide. La liste déroulante est une liste sans doublons.
La col B découle du choix de la col A.
Ex: Choix col A est "ATELIER"
La liste déroulante de la ColB est :
Vide
Electronique
Mécanique
Menuiserie
Verrerie

Le car "*" dans les col B et C peut être assimilé à vide.

La liste déroulante de la col C découle du choix de la col A et col B
Si ATELIER est vide, le choix dans col C est Vide, ou Electricien, ou Plomberie (CVC)
Si ATELIER est Verrerie, le choix dans col C est vide

La saisie est obligatoire dans les listes déroulantes des col A et B.
Par contre la saisie dans la liste déroulante de la col C n'est pas obligatoire. L'utilisateur peut saisir un texte différent dans la col K du fichier XYZ040-S1-A-SURF.xls.

J'espère que mes explications peuvent vous aider. Je ne peux pas donner un exemple car je ne sais pas faire des listes déroulantes à partir d'un fichier externe sans l'ouvrir.
Merci pour votre aide
KIM

La saisie dans le fichier XYZ040-S1-A-SURF.xls, col I et J doit être obligatoire à partir des listes déroulantes ci-dessus.
 

eriiic

XLDnaute Barbatruc
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Re,

C'est du lourd.
Je crains que ça ne soit au-dessus du temps que je peux y consacrer... :-s
Si d'autres bonnes volontés sont de passage ;-)
eric
 

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bonjour Bebere & le forum,
Merci de ton aide toujours efficace. Malgré un emploi de temps chargé dans un projet national nous avons à un moment ou un autre besoin d'excel pour réduire les tâches répétitives.
Suite à ce premier test :
1- les listes déroulantes en cascade sont bien liées. En effet quand Choix col B est vide, il faut prendre un choix de la liste C du même niveau que les cases vides de col B :
Usage principal : ATELIER
Usage spécifique : vide
alors Complément d'usage peut être vide, Electricien ou Plmomberie (CVC).
2- Saisie des données dans le fichier XYZ040-S1-A-SURFv1.xls :
Les col I & J doivent étre saisie selon le contenu des listes déroulantes de Col A et B du fichier de réference RefInterne.csv
Par contre dans la col K, la saisie est libre c-à-d l'utilisateur peut sélectionner dans la liste déroulante en cascade de la col C ou saisir manuellement du texte. Or Je n'ai pas pu saisir manuellement du texte dans la col K. Est-il possible da sair dans la col K bien qu'il y ait une liste déroulante.
3- Déroulement de la macro:
a- lancer la macro test : copie des col A, B et C dans l'onglet "Listes".
b- saisir dans col I, J et K via les listes déroulantes créées.
Le fichier XYZ040-S1-A-SURFv1.xls est généré automatiquement par une application et l'onglet "Listes" n'existe pas. Est-il possible de le créer automatiquement pour l'import des données? et en sauvegardant le fichier XYZ040-S1-A-SURFv1.xls l'onglet "Listes" est à supprimer.
4- Le fichier de référence : RefInterne.csv
Les col A, B et C sont énormes et modifiables. Est-il possible de rendre la macro Worksheet_SelectionChange dynamique dans la création des listes et non limitées à 1000.
Par avance merci
KIM
 

Bebere

XLDnaute Barbatruc
Re : Création de listes déroulantes en cascade en référence à un fichier externe

bonjour Kim
ce serait peut être mieux de mettre une astérisque dans les cellules vides et de les garder
dans les listes sans doublons
tu peux essayer,tu te rendras mieux compte
avec un userform il y a peut être moyen de le faire sans ajout de feuille
je pense qu'il faut un classeur avec le code et une liste des fichiers à traiter(userform)
 

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bonsoir Bebere et le forum,
Le fichier de référence .csv est utilisé par un autre logiciel. une cellule vide veut bien dire vide et une cellule avec "*", veut dire quelque soit le contenu de la cellule. Le fichier xls est un fichier généré par ce logiciel. Je souhaite lors de la génération de ce fichier rajouter une macro qui intègre les listes déroulantes du fichier de référence csv pour faciliter la saisie des données par les utilisateurs avec choix dans les col I et J et saisie possible dans la col K. Facile de dire mais il me faut trouver la meilleure solution.

merci d'avance
LIM
 

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bonjour Bebere & le forum,
Ton message (#9) du 9/10 m'a fait réfléchir. Tu as raison, il est plus judicieux d'avoir un classeur avec le code qui permet d'aller rechercher le fichier xls à traiter (comme l'explorer de windows) et se lancer dans la mise à jour avec des listes déroulantes.
Le car"*" n'a aucune signification dans les fichiers xls traités. On peut le garder dans les listes déroulantes mais prévoir une macro pour les supprimer en fin de mise à jour.
Ci-joint un classeur avec 2 répertoires et certains fichiers xls à mettre à jour et le fichier de réf csv. J'ai remis ta macro en renommant le fichier ControleDesUsages.xls.
Merci de ton aide
KIM
 

Pièces jointes

  • CONTROLUSAGES.zip
    34.4 KB · Affichages: 48

Bebere

XLDnaute Barbatruc
Re : Création de listes déroulantes en cascade en référence à un fichier externe

bonjour Kim
ce que je t'envoye ne tiens pas compte de ton dernier message
tu ouvres le classeurKim
mis les 2 fichiers avec
explication dans classeurKim
 

Pièces jointes

  • kim.zip
    34.4 KB · Affichages: 42
  • kim.zip
    34.4 KB · Affichages: 41
  • kim.zip
    34.4 KB · Affichages: 45

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Re-bonjour Bebere,
Je viens de tester ta solution. En effet l'utilisation d'un UserForm est plus pratique par contre, comme j'ai des fichiers de plus de 2000 lignes, je n'aurai pas une bonne lisibilité des données. Je me permets de te solliciter encore pour améliorer ta solution.
1- Rajouter dans le Userform les 2 col E et F du fichier xls qui correspondent au Numéro de la pièce et la surface dans la liste globole et à côté des cellules qui affichent la ligne sélectionnée. voir fichier joint.
2- La mise à jour des données xls correspond à 2 cas :
a) les usages correspondent bien aux données du fichier de référence
b) les usages saisies sont erronnés. Dans ce cas une analyse ligne par ligne est nécessaire.
Par contre pour le cas a, Est-ce possible d'avoir dans le UserForm un bouton "comparer" qui colorie dans le fichier xls et dans le UserForm les cellules des col I, J et K si leurs contenu n'existent pas dans les listes de référence?
3- Après sélection d'une ligne, si je souhaite mettre à jour Usage sépcifique ou Complément d'usage, les listes déroulantes sont vides si je ne sélectionne pas l'Usage principal. Est-il possible d'afficher automatiquement dans les cases du 1er niveau les usages de la ligne sélectionnée à condition que l'usage de la ligne sélectionnée correspond bien aux contenus des listes déroulantes sinon la cellule du niveau 1 reste vide.
Merci d'avance
KIM
 

Pièces jointes

  • XYZ040-S1-A-SURF.zip
    5.4 KB · Affichages: 32
  • XYZ040-S1-A-SURF.zip
    5.4 KB · Affichages: 30
  • XYZ040-S1-A-SURF.zip
    5.4 KB · Affichages: 33

Bebere

XLDnaute Barbatruc
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Kim pour diminuer le nbre de lignes
on peut faire une sélection par département ou/et usage-1 ou/et autre
ne pas afficher les lignes qui correspondent à combobox 1,2 et 3
je vais mettre une listview,tu auras les couleurs dans l'userform
 

KIM

XLDnaute Accro
Re : Création de listes déroulantes en cascade en référence à un fichier externe

Bebere,
Le fichier est déjà par département. par contre on peut réduire la liste selon les références de la col C et D.
Une bonne idée car le choix d' une référence de la col D ensuite une autre de la col D correspond bien à l'ensemble des données à controler ensemble. ci-joint le fichier xlx complété.

NB: Il faut afficher toutes lignes même si les usages correspondent car il est toujours possible que les usages changent.

Merci encore,
KIM
 

Pièces jointes

  • XYZ040-S1-A-SURF.zip
    5.5 KB · Affichages: 62
  • XYZ040-S1-A-SURF.zip
    5.5 KB · Affichages: 59
  • XYZ040-S1-A-SURF.zip
    5.5 KB · Affichages: 57
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 604
Membres
104 224
dernier inscrit
Brilma