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. 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
    1. 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 ?
      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
        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
      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)
        


        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
          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
          2. Bienvenue :-)