XL 2019 Macro : remplir une fiche automatiquement à partir d'un tableau

Yana

XLDnaute Nouveau
Bonjour,
Après des jours de recherches, j'ai décidé de créer cette discussion car je ne trouve pas de situation similaire dans les sujets déjà ouverts.
Je me permets de vous demander de l'aide dans la construction d'un outil qui permet de remplir une fiche Excel avec les données brutes (pus de 100 colonnes).
Je vous joins 2 fichiers : "Données" et "Fiche à remplir".
L’idée est de créer un bouton dans "Données" qui ira chercher la "Fiche à remplir" pour créer un fichier rempli "Fiche à remplir - Ent1".
Condition importante : ayant plus de 400 lignes, je pense qu'il sera plus facile pour l'utilisateur de pouvoir choisir la date de demande (boîte de dialogue) pour générer toutes les fiches pour toutes les demandes qui sont arrivées ce jour.

Je vous remercie tous par avance!
 

Pièces jointes

  • Données.xlsx
    10 KB · Affichages: 45
  • Fiche à remplir.xlsx
    8.5 KB · Affichages: 47
Solution
Bonsoir ou Bonjour @Yana, le Forum

Je me suis penché sur ton problème... Je pense qu'il y a une solution pour ton idée "un peu trop ambitieuse par rapport à ce module dont je rêve"

Voici comme ça fonctionne :
1) le Classeur XLD_YANA_Données_Generator_Enterprise_Files_v01.xlsm ne contient plus que la "base de Données, que tu te chargeras de copier/coller ton extraction brute dedans et tu appuieras sur le bouton pour générer les Fiches Entreprises...

2) le Classeur XLD_florian333_Fichier_sources_Planning-1_v00.xlsm est uniquement là pour simuler un classeur multi-onglets, avec multi-macros, et même un USF, il ne sert qu'à simuler ton "Gros Fichier Source Fiche Entreprise"

Dans mon synopsis, en aucun cas le...

Yana

XLDnaute Nouveau
En fait c'est dupliquer le Classeur entier que tu veux faire ? Mais le personaliser à une entreprise à chaque fois ? Right ?

@+Thierry

Oui, exact. c'est ce que je disais:
Fiche Entreprise (avec des nombreux onglets et macros dedans) qui inclut la Matrice (synthèse sur l'entreprise) dans un des premiers onglets. Ce fichier entier sert de Template (qui est unique pour absolument tous les cas), mais seulement l'onglet Matrice sera alimenté par le Générateur.

La fiche Entreprise a 21 onglet.....
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir ou Bonjour @Yana, le Forum

Je me suis penché sur ton problème... Je pense qu'il y a une solution pour ton idée "un peu trop ambitieuse par rapport à ce module dont je rêve"

Voici comme ça fonctionne :
1) le Classeur XLD_YANA_Données_Generator_Enterprise_Files_v01.xlsm ne contient plus que la "base de Données, que tu te chargeras de copier/coller ton extraction brute dedans et tu appuieras sur le bouton pour générer les Fiches Entreprises...

2) le Classeur XLD_florian333_Fichier_sources_Planning-1_v00.xlsm est uniquement là pour simuler un classeur multi-onglets, avec multi-macros, et même un USF, il ne sert qu'à simuler ton "Gros Fichier Source Fiche Entreprise"

Dans mon synopsis, en aucun cas le "Gros Fichier Source" n'est ouvert par mon code. Il n'y a donc aucun risque d'alération du fichier source. Je n'en fais que des copies à la volée avec "FileCopy" sans toucher l'original.
Par contre nous sommes bien d'accord, le "Gros Fichier Source" parmis tous ces 21 onglets contient bien celui qui nous interresse : "Matrice Fiche Entreprise", si il se nomme autrement, il faut corriger dans le code dans cette partie :

VB:
'================================================================================================================================
' Informations à remettre dans le context réel..... TOUT DOIT EXISTER
ThePath = ThisWorkbook.Path & "\"
Source = ThePath & "XLD_florian333_Fichier_sources_Planning-1_v00.xlsm"  'C'est pour simuler le gros fichier avec des macro......
Destination = ThePath
WSmatrix = "Matrice Fiche Entreprise"
Set WB = ThisWorkbook
Set WSData = WB.Worksheets("Base de données")
'================================================================================================================================

Idem pour le "Gros Fichier Source" qui ne se nommera pas "XLD_florian333_Fichier_sources_Planning-1_v00.xlsm" et que tu renommera à ta guise plus tard.

Pour tester, tu prépares un répertoire de Test sur ton disque dûr et tu dézippes les deux fichiers dedans. Tu ouvres le XLD_YANA_Données_Generator_Enterprise_Files_v01.xlsm et tu verra ce qui se passe...

Les fichiers doivent être vraiment Extraits/Décompressés (pas uniquement ouvert à l'intérieur du Zip) et donc les deux fichiers dans le même répertoire.

Tu me diras si celà correspond mieux à ce dont tu rêvais ... ;)

PS j'ai fait aussi une gestion d'erreur qui devrait t'aider au cas où...

Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_YANA_Données_Generator_Enterprise_Files_v01.zip
    164.4 KB · Affichages: 63

Yana

XLDnaute Nouveau
Bonsoir ou Bonjour @Yana, le Forum

Je me suis penché sur ton problème... Je pense qu'il y a une solution pour ton idée "un peu trop ambitieuse par rapport à ce module dont je rêve"

Voici comme ça fonctionne :
1) le Classeur XLD_YANA_Données_Generator_Enterprise_Files_v01.xlsm ne contient plus que la "base de Données, que tu te chargeras de copier/coller ton extraction brute dedans et tu appuieras sur le bouton pour générer les Fiches Entreprises...

2) le Classeur XLD_florian333_Fichier_sources_Planning-1_v00.xlsm est uniquement là pour simuler un classeur multi-onglets, avec multi-macros, et même un USF, il ne sert qu'à simuler ton "Gros Fichier Source Fiche Entreprise"

Dans mon synopsis, en aucun cas le "Gros Fichier Source" n'est ouvert par mon code. Il n'y a donc aucun risque d'alération du fichier source. Je n'en fais que des copies à la volée avec "FileCopy" sans toucher l'original.
Par contre nous sommes bien d'accord, le "Gros Fichier Source" parmis tous ces 21 onglets contient bien celui qui nous interresse : "Matrice Fiche Entreprise", si il se nomme autrement, il faut corriger dans le code dans cette partie :

VB:
'================================================================================================================================
' Informations à remettre dans le context réel..... TOUT DOIT EXISTER
ThePath = ThisWorkbook.Path & "\"
Source = ThePath & "XLD_florian333_Fichier_sources_Planning-1_v00.xlsm"  'C'est pour simuler le gros fichier avec des macro......
Destination = ThePath
WSmatrix = "Matrice Fiche Entreprise"
Set WB = ThisWorkbook
Set WSData = WB.Worksheets("Base de données")
'================================================================================================================================

Idem pour le "Gros Fichier Source" qui ne se nommera pas "XLD_florian333_Fichier_sources_Planning-1_v00.xlsm" et que tu renommera à ta guise plus tard.

Pour tester, tu prépares un répertoire de Test sur ton disque dûr et tu dézippes les deux fichiers dedans. Tu ouvres le XLD_YANA_Données_Generator_Enterprise_Files_v01.xlsm et tu verra ce qui se passe...

Les fichiers doivent être vraiment Extraits/Décompressés (pas uniquement ouvert à l'intérieur du Zip) et donc les deux fichiers dans le même répertoire.

Tu me diras si celà correspond mieux à ce dont tu rêvais ... ;)

PS j'ai fait aussi une gestion d'erreur qui devrait t'aider au cas où...

Bien à toi, à vous
@+Thierry

Un grand merci ! Des codes encore à adapter mais je vois déjà que ça convient parfaitement pour mon cas!
Seule petite question : je ne trouve pas comment annuler le changement du nom de l'onglet de la Matrice (Matrice -> Nom Ent)? Le fait de changer le nom de l'onglet bloque les macros qui sont dedans.
Encore un fois grand merci!!!
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Yana, le Forum

Heureux que cela finisse par correspondre à tes besoins ;)

Seule petite question : je ne trouve pas comment annuler le changement du nom de l'onglet de la Matrice (Matrice -> Nom Ent)?

Pour cette question, ça se passe dans ce code :
VB:
  Set WBnew = Workbooks.Open(Destination)
    Set WSNew = WBnew.Worksheets(WSmatrix)
        With WSNew 'on pourrait faire une boucle, mais pour que ca reste un peu lisible
        .Name = CellData.Offset(0, 1)
        .Range("B1") = CellData.Offset(0, 1)
        .Range("B2") = CellData.Offset(0, 2)
        .Range("B3") = CellData.Offset(0, 3)
        .Range("B4") = CellData.Offset(0, 4)
        .Range("B5") = CellData.Offset(0, 5)
        .Range("B6") = CellData.Offset(0, 6)
        .Range("B7") = CellData.Offset(0, 7)
        End With

La ligne :
.Name = CellData.Offset(0, 1)
Renomme l'onglet avec le Nom de l'entreprise trouvée sur la Feuille "Base de données" colonne "C"...
Si tu mets cette ligne en commentaire, l'onglet ne sera plus renommé et conservera le nom spécifié pour WSmatrix = "Matrice Fiche Entreprise"

Bien à toi, à vous
@+Thierry
 

lo-de

XLDnaute Nouveau
Bonjour, j'aimerais créer une macro un peu comme sur ce sujet. J'ai essayé de modifier mais ce n'est pas top.

Voici ce que j'aimerais faire:
Un fichier (Base données) avec des données triées par un numéro d'événements en A2 et en croissant vers le bas, dans la colonne B date et heure, la colonne C équipements (10 différents) les autres colonnes d'autre données pas trop inquiétant pour la suite.

J'entre les infos dans la base de données, et j'aimerais une macro qui selon le n° me remplit un des deux templates selon l'équipement.
 

Discussions similaires