Salut
Pourrais-tu expliquer plus globalement ton projet et placer soit un fichier exemple, soit des screenshots pour ue l'on puisse se rendre compte de l'organisation de tes données. J'avoue ne pas trop comprendre pourquoi générer des tableaux via VBA. Ne peux tu pas plutôt ajouter les nouvelles entrées dans un tableau existant quitte à placer dans celui-ci un champs te permettant ensuite de trier tes données.
Je m'explique,
Voila ce que je crois comprends de ton code. Tu ajoutes une feuille de frais dans le classeur et ton code VBa va chercher le tableau qu'il contient pour le transformer en tableau structuré. Par la suite tu récupère une partie de ces données pour les dispatcher dans d'autres tableau.
Je suppose que tous les tableaux ont la même structure?
Si c'est bien le cas, imaginons que sur une feuille tu crées un tableau structuré respectant la structure de ton tableau de note de frais. Appelons le Tab_ImportFrais
Lorsqu'une nouvelle note de frais arrive, le code transfert son intégralité dans Tab_ImportFrais, puis traite les lignes qu'il contient et les supprime au fur et à mesure.
Si mes explications ne sont pas claires, je peux développer mon propos.
Pour ce qui est de ton code
1 2 3 4 5 6
|
With ThisWorkbook.Sheets(nom_feuille_out)
Set Plage2 = .Cells(2, 1).Resize(nb_ligne, nb_col)
Set Tbl2 = .ListObjects.Add(xlSrcRange, Plage2, , xlYes)
Tbl2.Name = "SELECTION" & nom_feuille_out
End With |
Pour la suite je ne préfère pas me prononcer, je n'utilise jamais les formules en les incluant dans du code VBA, ici par exemple j'utiliserais plutôt la méthode Find de l'objet Range, tout en conservant l'utilisation des référence structurées fournies par le tableau structuré.
Par contre j'attire ton attention sur cette partie du code
With Range("$H" & (2 + i))
Tu ne précises ni le classeur, ni l'onglet sur lesquels tu travailles, en utilisant Range(), tu utilises implicitement le classeur actif et sa feuille active, c'est une "mauvaise" habitude qui risque de te créer des surprise dans le temps, il est préférable de préciser à Excel sur quoi tu veux qu'il travaille exactement.
Pour limiter l'écriture, tu peux utiliser le CodeName des feuilles, avec le codeName, tu n'as plus besoin de préciser le classeur, il est déjà inclus

++
Qwaz
Partager