[VBA]Copier des lignes d'un tableau vers un autre

Bonjour à tous,

je souhaite réaliser une macro sous VBA me permettant via un petit formulaire (visible ci-dessous) lorsque l'utilisateur choisit dans le menu déroulant n°1 (2,3...), une valeur de VRF de copier/extraire les lignes (cette valeur peut se trouver plusieurs fois) où la valeur apparait de mon tableau (nommé Spines_L3_new) dans mon tableau nommé scop_L3 lorsque je valide mon formulaire.

image

Je donne ici quelques éléments de langage:

nom du tableau où effectuer la recherche (colonne A)

Set TS_spine = Range("Spines_L3_new").ListObject

nom du tableau où copier les lignes

Set TS_scop_L3 = Range("scop_L3").ListObject

nom des combobox: vrf1 à vrf7

Actuellement, j'ai bien réussi à remplir mes combox avec les valeurs de la colonne A (qui sont des chiffres de 000 à 200 merci @cousinhub pour le partage de connaissance), mais je n'arrive pas à récupérer et insérer la ligne de TS_spine vers TS_scop_L3.

Si certains ont une idée de la syntaxe à mettre en oeuvre pour d'une part rechercher la valeur de mon combox vrf1 dans mon TS_spine (plusieurs lignes possibles) et ensuite de copier ces lignes dans mon TS_scop_L3

Merci, agréable après midi à vous.

Bonjour,

Tu t'en doutes que sans fichier exemple, ça ne va pas être simple...

Toutefois, quelques précisions supplémentaires sont néanmoins nécessaires...

- Est-ce que ton TS-scop_L3 a exactement la même structure que ton tableau TS_spine (les mêmes en-têtes, surtout)

- Est-ce qu'il faut remplir ce TS_scop avec les nouvelles données uniquement, ou faut-il garder les anciennes (s'il y en a)?

@ te relire avec ces précisions, et encore mieux, avec un fichier exemple, comportant ces deux TS et l'usf...

Hello,

alors déjà dans un premier temps:

  • Est-ce que ton TS-scop_L3 a exactement la même structure que ton tableau TS_spine (les mêmes en-têtes, surtout)--> oui
  • - Est-ce qu'il faut remplir ce TS_scop avec les nouvelles données uniquement, ou faut-il garder les anciennes (s'il y en a)?--> juste avec les valeurs des combobox...je vais implémenter la suppression des lignes (comme pour mon précédent code) que tu m'as déjà donné à chaque ouverture du formulaire.

pour le fichier c'est toujours le même (je te le pousse en MP étant donné qu'il a été supprimé la dernière fois)

8test-bruno.xlsm (33.53 Ko)

Hello,

[on va monter en gamme]

Dans le classeur joint, j'utilise un module de classe, qui permet d'avoir un choix unique dans tes différents Cbx...

Si tu as déjà choisi "001", ce choix n’apparaîtra plus dans les listes des autres cbx...

Dès que tu valides, une boucle se crée sur tes choix, et recopie les lignes entières de TS_Spine vers TS_scope_L3

Essaie, et si tu n'arrives pas à l'intégrer à ton fichier réel (n'oublie pas de copier le module de classe dans ton fichier réel), tu dis

Bon courage

10filtre.xlsm (39.83 Ko)

Hello je regarde cela de suite et je te fais un RETEX

Merci

Module de classe, et bien je ne connais pas du tout. Je découvre cela.

Une question cousinhub, dans le module de classe, tu fais appel à tout le TS_TRAV? Sachant que mon TS (fichier réel) comporte d'autre colonne, je suppose devoir adapter ce code à la colonne VRF_USE?

For I = 1 To TS_Trav.DataBodyRange.Rows.Count
    If InStr(1, TemP_VRF, TS_Trav.DataBodyRange(I)) = 0 Then
        Donn2(TS_Trav.DataBodyRange(I)) = TS_Trav.DataBodyRange(I)

J'ai juste où je me trompe?

Hello,

Tu rajoutes juste le numéro de colonne à DataBodyRange (I, 1) si c'est la colonne A.. (aux trois données)

For I = 1 To TS_Trav.DataBodyRange.Rows.Count
    If InStr(1, TemP_VRF, TS_Trav.DataBodyRange(I, 1)) = 0 Then
        Donn2(TS_Trav.DataBodyRange(I, 1)) = TS_Trav.DataBodyRange(I, 1)

Peut-être?

Bon j'ai adapté le code avec ta remarque. Merci.

Que veut pouvoir dire "nom ambigu détecté TS_spine"

Sachant que j'ai collé mot pour mot le code que tu m'as donné.

Pour moi nom ambigu serait que le nom soit utilisé déjà ailleurs...

image

ok trouvé

dans la macro initiale ces noms de TS sont déjà utilisés

je vais donc les renommer

Re - tout est ok MERCIIIIIII!!!

Rechercher des sujets similaires à "vba copier lignes tableau"