Transfert sur une autre feuille ( EXCEL)

Résolu
Bonjour,

Je commence juste a travailler sur visual basic.Mon but est de copier un tableau sous forme de colonne (qui est dans "Feuil1")dans un autre tableau qui est lui est sous forme de ligne et dans une autre feuille(Feuil2).
En faisant des recherches je suis arrivé à créer se code mais le probléme c'est que je n'arrive pas a transféré les informations sur "Feuil2",seulement dans un autre tableau sur "Feuil1".
j'ai essayé de rajouter "worksheets("Feuil2")." devant range(cells... mais lorsque je compile j'ai l'erreur 1004 erreur défini par l'application ou par l'objet.

Je ne trouve pas la réponse donc si vous avez des propositions je vous écoute

merci d'avance.

Sub COPIDESDONNEES()
Dim copi() As Variant
Dim i As Byte
Dim a As Long, b As Long, c As Long, d As Long
Dim e As Long, f As Long, g As Long, h As Long

a = 1
c = 5

b = 6

e = 1
f = 6
g = 1
h = 10

For K = 1 To 2

For j = 1 To 3
copi = Range(Cells(a, j), Cells(c, j))

For i = 1 To UBound(copi, 1)
Next i

Range(Cells(e, f), Cells(g, h)) = WorksheetFunction.Transpose(copi)
e = e + 1
g = g + 1

Next j
a = a + b
c = c + b

Next K

Call terminer

End Sub

5 réponses

  1. Bonjour,

    Exemple type de l'équivalent de la fonction Transpose
    sous VBA.

    Sub Ex_Copie_Donnees()
    
        Dim Ws1 As Worksheet, Ws2 As Worksheet
        Dim BoucleL As Long, LimiteL As Long
        Dim BoucleC As Long, LimiteC As Long
        
        ' Désactive affichage pour meilleur performance
        Application.ScreenUpdating = False
        
        ' Prendre une main sur Feuil1 et Feuil2
        Set Ws1 = Sheets("Feuil1")
        Set Ws2 = Sheets("Feuil2")
        
        ' Définir les limites de la copiue
        LimiteL = Ws1.Range("A65536").End(xlUp).Row
        LimiteC = Ws1.Range("IV1").End(xlToLeft).Column
        
        ' Boucle sur les colonnes
        For BoucleC = 1 To LimiteC
            ' Boucle sur les lignes
            For BoucleL = 1 To LimiteL
                ' Copie d'une feuille à l'autre
                Ws2.Cells(BoucleC, BoucleL).Value = _
                        Ws1.Cells(BoucleL, BoucleC).Value
            Next BoucleL
        Next BoucleC
        
        ' Résactive affichage
        Application.ScreenUpdating = True
        
    End Sub
    '
    


    Cdt

    Lupin
    0
    1. merci bien Lupin, aprés quelque modif pour l'adapter a mon tableau tout marche trés bien.
      bonne soiré à toi et encor merci.

      alex
      0
    2. Bienvenue :-)
      0
  2. Contributeur
    Bonjour

    petit exemple sans boucle inutile; à adapter

    transposée de A1:D3 en feuille 2 à partir de F1

    T_copi = Sheets(1).Range("A1:D3").Value
    
    Sheets(2).Range("F1").Resize(4, 3) = Application.Transpose(T_copi)
    


    0
    1. Contributeur
      et voici la version scolaire

      Option Explicit 
      
      Sub transposer() 
      Dim lig_dep As Long, col_dep As Long, lig_fin As Long, col_fin As Long 
      Dim largeur As Long, hauteur As Long 
      Dim T_copi 
      Dim lig_cible As Long, col_cible As Long 
      Dim source As Range, cible As Range 
      
      'zone source 
      'départ 
      lig_dep = 1 
      col_dep = 1 
      'fin 
      lig_fin = 3 
      col_fin = 4 
      
      'cible 
      lig_cible = 1 
      col_cible = 6 
      
      
      With Sheets(1) 
      'collecte les valeurs 
      Set source = .Range(.Cells(lig_dep, col_dep), .Cells(lig_fin, col_fin)) 
      largeur = source.Columns.Count 
      hauteur = source.Rows.Count 
      
      T_copi = source.Value 
      End With 
      
      'restitue la transposée 
      Application.ScreenUpdating = False 
      Set cible = Sheets(2).Cells(lig_cible, col_cible).Resize(largeur, hauteur) 
      cible = Application.Transpose(T_copi) 
      
      End Sub 
      


      mais apparemment, Alex m'a snobé...

      Michel
      0
      1. Salut Michel
        Non je t'ai pas snobé mais je viens juste de voir ton message.
        Je commence juste donc il faut que sa reste facilement compréhensible lors de la lecture du code.
        Celui de lupin correspond mieux à la façon dont j'avais commencé mais merci bien de ton aide, je vais mieux regarder le tien parce qu'il y a des choses que je ne connais pas encore.

        Merci à vous deux pour vos réponses rapide, c'est sympa :-)

        alex
        0
    2. Contributeur
      Bonjour,

      Pas grave, mais n'oublie pas de rafraichir avant de répondre! :-)

      Il y a un Alex qui a fait un site/excel: c'est toi ?
      0
      1. A oui c'est vrai que je n'avais pas rafraichi, j'y penserais la prochaine fois.

        Et pour le site/Excel ce n'est pas moi.

        Passe une bonne journée Michel
        0