Copier certaines colonnes d'un tableau a la suite d'un autre

Bonjour a vous tous,

J'ai besoin d'aide, j'ai un tableau avec beaucoup de données, et j'aimerais récupérer les infos de ce tableau vers mon premier tableau en copiant uniquement certaines colonnes

J'ai tenté des choses avec l'enregistrement de macros mais sans succès.

Je vous joint un fichier

je vous remercie pour l'attention portée à ma requête

Bien cordialement,

Jo

Boujour,

Un essai avec un bouton de commande

Bonjour,

c'est exactement ça!

J'ai essayé de comprendre le code mais je n'arrive pas à comprendre les "dernlig" et "lig". J'ai l'impression qu'ils ne sont pas utilisés du tout dans le code (seul derli et li le sont?) peux tu m'expliquer s'il te plait?

sujet résolu merci beaucoup

Bien cordialement

Jo

Rebonjour,

la variable dernlig correspond à la dernière ligne écrite du tableau 2 (vérification effectuée dans la colonne "R"). Ainsi sa valeur sera égale à 4 pour ce tableau. Pour aller de 2 à 4 il faudra donc effectuer 3 boucles.

La variable derli correspond à la dernière ligne écrite du tableau 1 (dans la colonne "A") à laquelle on rajoute 1 pour avoir le n° de la première ligne vide.

Effectivement la viable li est superflue.

Sub copier()
Dim derli As Integer, lig As Integer, dernlig As Integer
dernlig = Range("R" & Rows.Count).End(xlUp).Row

For lig = 2 To dernlig
    derli = Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(derli, 1) = Cells(lig, 18)
    Cells(derli, 2) = Cells(lig, 19)
    Cells(derli, 3) = Cells(lig, 20)
    Cells(derli, 4) = Cells(lig, 21)
    Cells(derli, 10) = Cells(lig, 23)
    Cells(derli, 11) = Cells(lig, 24)
    Cells(derli, 12) = Cells(lig, 25)

Next
End Sub

Je comprends mieux, merci beaucoup

Bonjour jojorih628, fcyspm30, le forum,

Une variante...

Sub copie()
'déclarations des variables
 Dim tb, newtb(), i%, j%, k%
 Dim a, b

 'colonnes de destination
  a = Array(1, 2, 3, 4, 10, 11, 12)
 'colonnes source
  b = Array(1, 2, 3, 4, 6, 7, 8)

  'agit sur cette feuille
   With Sheets("Feuil1")
    'définit le tableau de données temporaire tb
     tb = .ListObjects("Tableau2").DataBodyRange

     'définit la première cellule vide du Tableau1
      With .ListObjects("Tableau1")
      'si le tableau comporte des données
       If .InsertRowRange Is Nothing Then
       '1ère cellule vide (colonne 1 du tableau,nombre de lignes du tableau+1)
        Set rcell = .HeaderRowRange.Cells(1).Offset(.ListRows.Count + 1)
      'sinon
       Else
       '1ère cellule colonne 1 du tableau
        Set rcell = .InsertRowRange.Cells(1)
       End If
      End With

    'indice de départ de newtb
     k = 0
     'redimensionne le tableau temporaire newtb
      ReDim newtb(0 To UBound(tb, 1), 1 To 12)
      'boucle sur les lignes du tableau de données tb
       For i = 1 To UBound(tb, 1)
        'correspondance des colonnes
        For x = LBound(a, 1) To UBound(a, 1)
         newtb(k, a(x)) = tb(i, b(x))
        Next x
       'incrémente l'indice
        k = k + 1
      'prochaine ligne
       Next i
    'si une erreur survient, on l'ignore
     On Error Resume Next
    'retranscription du tableau newtb dans Tableau1
     rcell.Resize(k, 12).Value = newtb
  End With
'Libère la mémoire
 Erase tb: Erase newtb: Erase a: Erase b: Set rcell = Nothing
End Sub
4jojorih628.xlsm (21.04 Ko)

Cordialement,

Rechercher des sujets similaires à "copier certaines colonnes tableau suite"