Copier coller Ligne de donnée vers tableau structuré

Bonjour le Forum, j'espère que vous allez bien!

J'ai utilisé l'enregistrement de macro pour copier coller une ligne de caractère a la suite d'un tableau situé dans une autre feuille. Voici a quoi ressemble le code:

Sub TransférerVersBDDStock()
'
' TransférerVersBDDStock Macro
'

'
Range("A1").Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Cut
Sheets("BaseDeDonnées").Select
Range("TStock2022[[#Headers],[ID]]").Select
Selection.End(xlToRight).Select
Selection.End(xlDown).Select
Selection.ListObject.ListRows.Add AlwaysInsert:=False
Range("A100").Select
ActiveSheet.Paste
Sheets("scan").Select
Range("A3").Select
End Sub

Le programme me créé bien la nouvelle ligne dans le tableau mais ne copie pas les données. J'ai utilisé Ctrl+shit+fléche pour sélectionner la ligne de caractère, puis coupé avec un clic droit à la souris, puis Ctrl+V pour coller. C'est la première que fois je vois l'enregistrement de macro m'afficher un message d'erreur… Merci d'avance pour votre aide. Je peux vous envoyer mon fichier si besoin.

image image image

Cordialement.

Bonjour

Merci d'avance pour votre aide. Je peux vous envoyer mon fichier si besoin.

ça peut etre une bonne idée, il y a peut etre des moyens plus simple qu'une macro

Bonjour Valentin,

Oui peut-être bien, je vous envoie le fichier Excel.

51gestionstock.zip (721.65 Ko)

Cldt.

Les données doivent allé de quel tableau vers quel tableau ?

EDIT : Faites attention avec votre fichier, il y a tout votre BDD client

Re,

Les données doivent allé du tableau Scan de la feuille 1 au tableau BDD de la feuille2. Merci

Cordialement.

Bonjour,

une solution :

Sub TransferVersBDDClient()
    Dim TData As ListObject, LR, Arr
    Feuil1.Range("A1").End(xlDown).Select
    Arr = WsS.Range(Selection, Selection.End(xlToRight)).Value
    Set TData = [TStock2022].ListObject
    Set LR = TData.ListRows.Add
    LR.Range.Value = Arr
End Sub

A+

Bonsoir galopin,

Merci pour votre réponse, mais le programme m'affiche un message d'erreur... savez-vous pourquoi? merci.

image

Cldt.

Remplacez WsS par Feuil1

Sub TransferVersBDDClient()
    Dim TData As ListObject, LR, Arr
    Feuil1.Range("A1").End(xlDown).Select
    Arr = Feuil1.Range(Selection, Selection.End(xlToRight)).Value
    Set TData = [TStock2022].ListObject
    Set LR = TData.ListRows.Add
    LR.Range.Value = Arr
End Sub

A+

Wow c'est parfait! merci beaucoup galopin, j'ai juste une petite dernière question svp, comment je pourrais faire si j'ai plusieurs lignes? Parce que là le programme choisi à chaque fois la dernière ligne du tableau, avez-vous une idée de comment faire? Merci d'avance.

Cldt.

D'une manière générale il serait plus logique d'écrire :

Sub TransferVersBDDClient()
    Dim TData As ListObject, LR, Arr
    Set TData = [TStock2022].ListObject 'on le met ici car c'est une déclaration préliminaire ensuite...
    Feuil1.Range("A1").End(xlDown).Select
    Arr = Feuil1.Range(Selection, Selection.End(xlToRight)).Value
    Set LR = TData.ListRows.Add
    LR.Range.Value = Arr
End Sub

Toujours d'une manière générale :

Arr = Feuil1.Range(Selection, Selection.End(xlToRight)).Value

C'est la ligne qui sera transférée

Normalement on ne sélectionne jamais, mébon... Comme tu sélectionnes, il n'est pas compliqué de faire autant de sélections que de transferts

    Arr = Feuil1.Range(Selection, Selection.End(xlToRight)).Value
    Set LR = TData.ListRows.Add
    LR.Range.Value = Arr

    Arr = Feuil1.Range(Selection, Selection.End(xlToRight)).Value
    Set LR = TData.ListRows.Add
    LR.Range.Value = Arr

    Arr = Feuil1.Range(Selection, Selection.End(xlToRight)).Value
    Set LR = TData.ListRows.Add
    LR.Range.Value = Arr

Comment tu passes d'une sélection à l'autre ?

Ça je ne peux pas te dire puisque ta question est très vague... Comment je devine ou commence ta sélection ??

Mais sur le principe je ne procèderait pas différemment, sauf que au lieu de sélectionner je dirais :

Arr = Feuil1.Range(blabla).Value
Set LR = TData.ListRows.Add
LR.Range.Value = Arr
'... et ainsi de suite

Le seul mal que tu as à te donner c'est pour identifier la ligne à transférer : Pour la cible ce sera toujours la même instruction :

Set LR = TData.ListRows.Add
LR.Range.Value = Arr

C'est tout l'avantage des tableaux structurés :TAPA à te casser la tête...

A+

Nota à l'intention de tous les curieux qui passeraient par là :

C'est de la macro de jardin d'enfant hein... N'en déduisez pas que c'est comme ça qu'il faut faire :

Vous êtes prié de ne pas pisser du code comme ça ! Ça dépanne mais c'est tout.

A+

Re bonjour galopin,

Merci pour le code et l'explication, du coup tu me conseil de créer un tableau structurer dans la feuille1? tu as sans doute raison, il serait plus facile de sélectionner les lignes du tableau dans un TS. Sinon concernant ma sélection je commence de généralement de A2 et je déroule vers le bas jusqu'à qu'il n'y est plus de produit à transférer.

Cldt

Ne me faites as dire ce que je n'ai pas dit !

Je voulais juste préciser que ce n'était pas vraiment un classeur à prendre en exemple...

Je n'ai pas voulu plus préciser car j'ai trouvé que le tout est un petit peu comme la chambre de ma fille... (le foutoir !)

Ceci dit maintenant que j'en ai trop dit, si je dois préciser, il convient certainement de faire le ménage.

Après je répondrai à cette seconde question...

Vous devrez attendre un peu que je ponde quelque chose d'un peu correct, parce que là... j'ai de quoi me retrousser les manches !

A+

Bon finalement j'ai du interrompre ma tentative.

Vous trouverez dans le classeur joint la réponse à votre question + quelques éléments de réflexion.

A+

92gstockmina.zip (665.51 Ko)

Re,

Merci beaucoup galopin, j'ai commencé le vba récemment j'en apprend encore tous les jours. Je ne savais pas par exemple que je pouvais mettre plusieurs fonctions de module en un seul module... je m'excuse aussi pour mon vocabulaire assez catastrophique dans mon vba, un vrai dépotoir haha. Dorénavant je ferais plus attention, merci pour vos conseils galopin. Ce fichier est en réalité mon projet d'étude, j'essaie donc d'ajouter des fonction utile pour les futurs utilisateurs.

Cordialement.

Rechercher des sujets similaires à "copier coller ligne donnee tableau structure"