Transfert de données en format tableau

Bonjour à tous,

J'ai un petit code, que je vous mets ci-dessous afin de transférer des données de ma feuille Saisie des infos vers la feuille M2.

Ce code fonctionne très bien si mes données ne sont pas en forme de tableau. Pour diverses raisons, notamment afin de recopier automatiquement mes formules d'une ligne à l'autre, j'ai transformé ma plage en tableau dans ma feuille "Saisie des infos" (dans la feuille M2, la plage n'est pas en format tableau).

Mais du coup mon code ne fonctionne plus.

Quelqu'un pourrait-il me donner un petit coup de main svp ?

Merci pour votre attention

Sub Tranfert_M2()

   Set sasu = Sheets("M2")
    dsasu = sasu.Cells(Rows.Count, 1).End(xlUp).Row + 1

    With Sheets("Saisie des infos")
        Dl = .Cells(1, 1).End(xlDown).Row
        sasu.Cells(dsasu, 1).Resize(Dl - 2, 13).Value = .Range("A3:M3" & Dl).Value

    End With
    Call Efface_M2
End Sub

Bonjour planetesud, le forum,

En joignant un fichier représentatif (sans données confidentielles) avec le résultat escompté, tu augmenterais tes chances d'obtenir des propositions,

Cordialement,

Sub Tranfert_M2()

     Set sasu = Sheets("M2").ListObjects("Nom_Du_Tableau")     'votre tableau

     With Sheets("Saisie des infos")
          dl = .Cells(1, 1).End(xlDown).Row     'derniere ligne
          If dl < 3 Then MsgBox "erreur": Exit Sub
          Set c = .Range("A3").Resize(di - 2, 13).Value     'le range a copier
          sasu.ListRows.Add.Range.Range("A1").Resize(c.Rows.Count, c.Columns.Count).Value = c.Value
     End With

     Call Efface_M2
End Sub

Bonjour et merci,

Voici une ébauche de mon fichier.

20transfert-sasu.xlsm (47.75 Ko)

Merci Bart,

Mais j'ai un message d'erreur.

Je sais pourquoi mais je ne sais pas corriger.

Set sasu = Sheets("M2").ListObjects("Nom_Du_Tableau")

mon tableau n'est pas sur la feuille "M2" mais sur la feuille "Saisie des infos". Le transfert se fait de la feuille "saisie des infos" vers la feuille "M2"

Merci beaucoup pour votre aide.

Sandrine

la ligne 5 est plutot vide, mais une vraie ligne du tableau, donc elle sera copié, donc il faut l'effacer avant de copier.

Sub Tranfert_M2()

     Set saisie = Sheets("Saisie des infos").ListObjects("Tableau3")     'autre tableau = destination

     With Sheets("M2").ListObjects("tableau1")     'votre tableau = source
          If .ListRows.Count Then 'il y a des données dans la source ?
               saisie.ListRows.Add.Range.Range("A1").Resize(.ListRows.Count, .ListColumns.Count).Value = .DataBodyRange.Value2 'copie les valeurs vers la destination avec tant de lignes et colonnes
          End If
     End With

     'Call Efface_M2
End Sub

on peut recuperer le nom du tableau dans le ruban ou en selectionner le range A2:P5 de M2. Une autre manière de pointer ce listobject (uniquement dans thisworkbook) = Set saisie = Sheets("Saisie des infos").range("A1").ListObject

Merci de prendre du temps pour moi.

Malheureusement ça ne fonctionne pas car ça copie dans le même tableau (c-a-d dans tableau 3)

il y a un truc bizar. Dans la colonne P vous utilisez "Horaires", un range d'un autre fichier.

Je suppose, quand celui-là n'est pas ouvert, que cela ne marche jamais.

Essayez ! Mettez-vous dans le coin en bas et à droite du tableau M2 et clique le tab.

Un popup s'ouvre et vous êtes bloqué ...

schermafbeelding 2022 05 06 205928

pour le reste ce n'est qu'échanger les 2 listobjects, mais n'est-ce pas possible d'avoir ces quelque (16!) cellules dans ce fichier.

Bonjour,

Je ne comprends pas tous vos posts notamment cette phrase

mais n'est-ce pas possible d'avoir ces quelque (16!) cellules dans ce fichier.

mais effectivement en inversant :

pour le reste ce n'est qu'échanger les 2 listobjects

ça fonctionne.....

Merci pour votre aide et bonne fin de journée.

re,

je n'ai pas le range "Horaires", qui mène excel vers le fichier "calcul production simplifié..." qui se trouve dans le directory "C:\users\33630\downloads".

A l'instant où on ajoute un nouveau listrow, excel fait son mieux pour mettre à jour la formule dans la colonne P. Comme vous l'avez à votre disposition, chez vous, il n'y a pas de problème. Chez moi, excel n'est pas capable à résoudre ce problème, essaie toujours à ouvrir ce fichier et blocque .

=SI(NB.SI.ENS([Date];A2;[Opérateur];B2)>1;SI([@[NB PO]]>1;MOD(RECHERCHEV([@Opérateur];HORAIRES;4;FAUX)-[@[Heure début de chgt]];1)*1440;(MOD([@[Heure début de chgt]]-RECHERCHEV([@Opérateur];HORAIRES;3;FAUX);1)*1440));480)

Bonsoir,

Oui j'ai vu que j'avais oublié de supprimer une liaison.

J'ai appliqué votre code en changeant les 2 listobjects et ça fonctionne.

Je vous remercie.

Sandrine

Rechercher des sujets similaires à "transfert donnees format tableau"