Transfert sur une autre feuille ( EXCEL)

Résolu/Fermé
alex - Modifié par alex le 4/05/2011 à 15:34
 alex - 5 mai 2011 à 10:56
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
A voir également:

5 réponses

Utilisateur anonyme
4 mai 2011 à 15:50
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
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
Utilisateur anonyme
4 mai 2011 à 17:19
Bienvenue :-)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
4 mai 2011 à 16:53
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 4/05/2011 à 17:18
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
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
5 mai 2011 à 09:42
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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