VBA Copier/coller data sur une colone dans une ligne

Bonjour,

J'éprouve des difficultés à copier en VBA les cellules A1, C8:1C15 dans la feuill2 mais à l'h0rizontale sur plusieurs colonnes et sur une seule ligne. J'ai joins le fichier

Voici le code du bouton :

Sub Rectangle1_Cliquer()
 Derligne = 3

        With Sheets(Range("B1").Value)
            .Rows(Derligne).Insert
            Range("C8:C15").Copy
            .Range("B" & Derligne).PasteSpecial Paste:=xlPasteValues
        End With

End Sub

Auriez-vous une idée de comment coller ces datas sur une seule ligne de colonne en colonne ?

Fichier joint

Je vous remercie.

PS : Est-il possible de changer la taille de la police de l’éditeur VBA dans excel ? c'est écrit petit et je m'arrache les yeux parfois. Il est facile de le faire dans le tableau mais les macros ne semblent pas proposer d'augmenter la taille d'écriture.

Bonjour Variable, bonjour le forum,

Remplace :

 .Range("B" & Derligne).PasteSpecial Paste:=xlPasteValues

par :

 .Range("B" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpoe:=True

Bonjour ThauThème,

Je te remercie. ,

Cependant, je reçois une erreur 1004 erreur par l'application ou l'objet.

Re,

Désole il manquait un s !... C'est Transpose et pas Tranpoe. Mille pardons...

Ne soit pas désolé, c'est moi qui aurai du regarder de plus prêt la syntaxe.

J'ai un dernier petit souci stp, quand j'écris ceci (voir code) au lieu de copier la valeur a1 avant c8:15 il sélectionne tout jusque C8, pourrais-tu m'éclairer ? J'ai tenté de mettre des $ comme dans les formules pour cibler la cellule mais rien à faire.

Range("A1", "C8:C15").Copy

Bonjour,

Pour la taille des caractères VBA : Dans VBA : Outils > Options > Format de l'éditeur

A+

Re,

Essai comme ça :

Application.Union(Range("A1"), Range("C8:C15")).Copy

@galopin01 : Merci !

@ThauThème : Je suis désolé mais la console vba me répond que cette commande ne peut être appliquée sur des sélections multiples. Je regarde sur google également pour trouver une solution, mais c'est pas évident.

Re,

Mets le code complet qu'on comprenne mieux ce que tu fais après avoir copié !...

Voici le code complet du bouton :

Sub Rectangle1_Cliquer()
 Derligne = 3

        With Sheets(Range("B1").Value)
            .Rows(Derligne).Insert
            Application.Union(Range("A1"), Range("C8:C15")).Copy
            .Range("A" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        End With

End Sub

Finalement, même en tentant de faire un ctrl clique gauche de souris sur la cellule A1, puis sur C8 suivit d'un shift clique gauche sur C15, ce qui représente ce que je tente de faire en VBA j'ai la même fenêtre : cette commande ne peut être appliquée sur des sélections multiple.

Donc j'ai opté pour deux commandes séparées ce qui me déçoit un peu, je pensais pouvoir fusionner cette copie de cellules :

Je bricole comme je peux...

Fichier joint

Sub Rectangle1_Cliquer()
 Derligne = 3

        With Sheets(Range("B1").Value)
            .Rows(Derligne).Insert

            Range("A1").Copy
            .Range("A" & Derligne).PasteSpecial Paste:=xlPasteValues

            Range("C8:C15").Copy
            .Range("B" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        End With

End Sub

Bonjour variable, toutes et tous,

Et si tu écrivais le code comme ceci:

Sub Rectangle1_Cliquer()
 Derligne = 3

 Application.ScreenUpdating = False

        With Sheets("Feuil2")
        'With Sheets(Range("B1").Value)
            .Rows(Derligne).Insert

            Sheets("Feuil1").Range("A1").Copy
            .Range("A" & Derligne).PasteSpecial Paste:=xlPasteValues

            Sheets("Feuil1").Range("C8:C15").Copy
            .Range("B" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        End With

End Sub

Cordialement.

Bonjour Mdo100,

Je te remercie pour ton intervention.

 With Sheets("Feuil2")
        'With Sheets(Range("B1").Value)

Ce bout de code m'enlève la flexibilité dont j'ai besoin pour le tableau final où la feuille de destination change à de nombreuse reprises suivant le tâche accomplie. ce qui m'amène à lui préférer un with scheets(range("cellule").value)

             Sheets("Feuil1").Range("A1").Copy
            .Range("A" & Derligne).PasteSpecial Paste:=xlPasteValues

            Sheets("Feuil1").Range("C8:C15").Copy
            .Range("B" & Derligne).PasteSpecial Paste:=xlPasteValues, Transpose:=True

Avec with scheet, je n'ai pas besoin de lui indiquer la feuille, si j'écris sans point je suis dans la feuil1, si j'écris avec point je suis dans la feuille de destination.

Je tente de d’alléger le code en fusionnant ce qui peu l'être car une fois les boucles misent en place et les variables ca devient vite lourd à lire, entretenir et quand il y a 6 ou 7 boucles à opérer dans le code final, ca pardonne pas même au niveau temps d’exécution. .

Re variable,

Ok j'ai compris pourquoi tu faisais appel à la cellule "B1", je viens de tester et ça fonctionne parfaitement.

Donc du coup tout fonctionne comme tu le souhaitais, sauf que tu voudrais alléger encore plus le code, hélas je ne pourrais pas d'aider plus que cela.

Cordialement.

C'est pas grave.

A ce que je comprends c'est que les selections séparées ne peuvent se faire que comme ceci :

Horizontalement : A3, C3:G3, K3:T3 sur la même ligne

Verticalement : A1:A6, A8:A15 sur la même colonne

Mais pas : A1:A6, C8:15 ici excel indique une erreur de selection multiple

La question initiale ayant été répondue par ThauThème, je passe ce topic en résolu. Merci

Rechercher des sujets similaires à "vba copier coller data colone ligne"