Récupérer les nomenclature d'une fiche technique d'un matériel

Bonjour le forum, bonjour à tous !

Pourriez-vous m'aidez pour ce problème svp ?

J'ai un Fichier VBA "Nomenclature.xlsm" qui ouvre un répertoire contenant plusieurs fichier, par exemple le fichier "Démo Nomenclature". Le but est que dans "Nomenclature.xslm", il contient tous les père ainsi que leurs fils, tout en bouclant sur tous les fichiers Excel du répertoire.

J'ai commencé le code mais je n'arrive pas à interpréter mon besoin. Je rencontre plusieurs problème :
  • Je ne peux pas effectuer une recherche ciblée car le fichier "Démo Nomenclature" contient un nombre différent d'arborescence (de 0 à 8 environ selon les fichiers), donc certains fichiers auront les colonne décaler. Donc il faudra faire une recherche avec les en-tête (car ils ont tous les même nom d'en-tête !
  • J'aimerais réaliser ce calcul tableau en mémoire, si il n'a rencontré aucun problème alors tu m'importe tout ainsi que le nom du fichier.
  • Par contre si le code génère une erreur ou si il a rencontré une erreur alors toute la ligne vide (je ne veux rien importer de ce fichier) seulement il doit me renseigner le nom du fichier (exemple d'erreur : deux nombres d'arborescences dans le même fichier, ou niveaux arborescence vides) pour pouvoir réaliser le traitement manuellement des nomenclature par la suite.

Vous trouverez en pj les fichiers. Si vous avez des questions n'hésitez surtout pas ;)

Merci d'avance pour votre aide.

43nomenclature.xlsm (19.42 Ko)

Bonjour à tous !

J'espère que vous avez passé un bon week-end.

Quelqu'un a-t-il avancé sur le sujet svp ?

Bon début de semaine à tous !

Bonjour floki212

Pour pouvoir "avancer" sur un sujet, faut-il que celui-ci soit explicitement formulé

En donnant un modèle de ce que vous voulez obtenir, peut-être que cela faciliterait

A+

Re !

Bizarre j'ai donné le modèle de ce que je veux qui est le fichier "Nomenclature.xlsm"...

Bon je vais me reformuler car vous faites toujours des miracles ;)

J'ai un dossier "Fichier", dans ce dossier j'ai plusieurs fichiers qui représente une nomenclature d'un matériel, je vous ai choisi un exemple anonymiser que j'ai appelé "démo nomenclature.xlsx". Je souhaite extraire la nomenclature de ce fichier sous la forme père et son fils, et l'importer dans mon fichier "Nomenclature.xlsm", puis fermer le fichier et passer au suivant.

J'ai déjà commencer le code VBA, j'ai déclaré les variables, réalisé l'ouverture du fichier ainsi que la boucle sur tous mes fichiers avec un "Loop". Mais il me manque le code au milieu qui me permet de traiter l'arborescence de ma nomenclature et importer les données.

Jusque-là je pense avoir été assez clair. Merci Bruno d'avance pour ton aide !

Bonjour,

Ci-jointe une proposition avec révision du code de récupération des fichiers

44nomenclature.xlsm (38.87 Ko)

Bonjour thev,

Parfait le fichier fonctionne correctement, tu as très bien compris qu'il fallait faire une recherche par en-tête ! mais j'ai 2 cas de fichiers qui pose problème :

  • J'ai un fichier qui ne veut pas m'importer l'arborescence père fils, je pense c'est par rapport au "NC" de la colonne Référence GMAO qui pose problème.
  • Parfois il y a des saut de ligne vides, donc l'arborescence continue après la ligne vide, ton code m'importe tout ce qu'il y a avant la ligne, moi je souhaite qu'il me met le nom du fichier dans la colonne "erreur" pour pouvoir traiter l'erreur manuellement.

Je te laisse le cas en pj

Merci pour l'algorithme et pour ta patience.

J'ai un fichier qui ne veut pas m'importer l'arborescence père fils, je pense c'est par rapport au "NC" de la colonne Référence GMAO qui pose problème.
En fait, ce qui pose le problème, c'est qu'une des cellules de niveau comporte un espace au lieu d'être vide. Il suffit de remplacer cette instruction :

If cell <> empty Then

par

If cell Like "#" Or cell Like "##" Then

niveau 0 à 9 ou 10 à 99

ci-jointe nouvelle version

38nomenclature.xlsm (40.31 Ko)

Parfois il y a des saut de ligne vides, donc l'arborescence continue après la ligne vide, ton code m'importe tout ce qu'il y a avant la ligne, moi je souhaite qu'il me met le nom du fichier dans la colonne "erreur" pour pouvoir traiter l'erreur manuellement.

Pas très clair. Fournissez-moi un exemple et l'aperçu du résultat à obtenir.

Bonjour thev !

Alors j'ai pris un petit peu de temps pour te créer quelques exemples de fichiers avec des cas d'erreur et des cas de fichier valide. Tu trouveras dans ces fichiers le résultat obtenu avec ton code et le résultat attendu.

Tu remarquera que pour les fichiers valide, ton code me fait l'arbo père fils correctement sauf pour la dernière ligne de la nomenclature.

Pas besoin de te partager le fichier destination, tu utiliseras le fichiers "nomenclature.xlsm" ci-dessus pour faire le traitement de données.

Merci pour ton aide et ta gentillesse.

Bonsoir,

ci-jointe nouvelle version

37nomenclature.xlsm (33.09 Ko)

BONJOUR !

Merci INFINIMENT, tu a même ajouter dans la colonne erreur le problème + le nom du fichier, j'y avais pas penser à cela c'est super !

Il faut juste faire une macro avec son bouton qui met le tableau à l'état initial, mais je vais le faire de mon côté pour apprendre, je pense que ce n'est pas si compliqué que ça.

Je te demande seulement si tu a un peu de temps de me laissé des commentaires sur les lignes de code et m'envoyer la dernière version pour comprendre le code et par la suite le faire moi même (je suis débutant en VBA).

Sujet résolu ;) Merci et à bientôt !

Il faut juste faire une macro avec son bouton qui met le tableau à l'état initial
Pour remettre le tableau structuré à l'état initial, une seule instruction :
[Récap].ListObject.DataBodyRange.Delete
Voir mon tuto sur le code d'un tableau structuré : https://forum.excel-pratique.com/astuces/tableau-structure-instructions-vba-specifiques-a-cet-objet-...

Parfait merci !

J'ai consulté ton tuto en effet il est complet sur le sujet, mais il y a plus d'info dans le code que tu a réaliser (dictionnaire ect) dont je ne comprend pas la totalité.

Pour ce qui concerne l'utilisation d'un dictionnaire, ci-joint un tuto :

18dictionary.docx (13.35 Ko)

Pour les instructions à expliciter, le plus simple est d'y ajouter le commentaire "à expliquer" et de me renvoyer le fichier ainsi annoté.

Bonjour thev ! Bonjour à TOUS !

Alors voici le fichiers avec en commentaires les lignes avec

'?????????

ou je ne comprend pas.

Le problème c'est que je n'arrive pas à savoir comment tu as réussi à traiter le sujet, CAD comment tu as importer les nomenclature père fils grâce à la fonction dictionnaire. Actuellement je regarde des vidéo et tes fichiers fourni pour comprendre la fonction dictionary

PS : Je viens d'y penser, dans ta fonction erreur je vais ajouter un code qui va en + créer un dossier "erreur" avec tout mes .xls qu'il n'a pas traiter et le mettre à jour dans le forum

28nomenclature.xlsm (23.09 Ko)
Rechercher des sujets similaires à "recuperer nomenclature fiche technique materiel"