Transfert sur une autre feuille ( EXCEL)
Résolu
alex
-
alex -
alex -
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
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:
- Transfert sur une autre feuille ( EXCEL)
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
5 réponses
Bonjour,
Exemple type de l'équivalent de la fonction Transpose
sous VBA.
Cdt
Lupin
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
Bonjour
petit exemple sans boucle inutile; à adapter
transposée de A1:D3 en feuille 2 à partir de F1
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)
et voici la version scolaire
mais apparemment, Alex m'a snobé...
Michel
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
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
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
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonne soiré à toi et encor merci.
alex