VBA macro transposer une plage de valeurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

david84

XLDnaute Barbatruc
Bonjour,
j'ai enregistré une macro permettant de copier une plage et de la coller dans une autre feuille en transposant les données.
J'essaie de la simplifier au maximum (notamment en enlevant les "select" et parties inutiles) mais il y a toujours quelque chose qui provoque un bug.
Je vous la livre donc telle quelle afin que vous m'expliquiez comment faire.
Merci
 

Pièces jointes

Re : VBA macro transposer une plage de valeurs

Bonjour David 🙂

Ta macro ne plante pas chez moi, qu'est-ce qui ne va pas ?

Juste pour jouer j'ai enlevé les select (pas calée en VBA donc pas sûre que ce soit bien écrit .... 😱)
et juste ajouté la ligne Application.CutCopyMode = False pour vider le presse papier.

Code:
Sub Transposer()
'
' Transposer Macro
    Application.ScreenUpdating = False
    Sheets(1).Range(Cells(6, 3), Cells(6, 3).End(xlDown)).Copy
 
    Sheets("Feuil2").Range("C2").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
 
End Sub

@ + (mais attends les autres réponses qui seront plus complètes que la mienne)

m

Edit: 🙂 Bonjour tototiti 🙂
 
Dernière édition:
Re : VBA macro transposer une plage de valeurs

Bonsoir david 😉

chez moi elle a l'air de fonctionner

sinon, une version plus courte :

Code:
    Application.ScreenUpdating = False
    ActiveSheet.Range("C6", Range("C6").End(xlDown)).Copy
    Sheets("Feuil2").Range("C2").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Application.CutCopyMode = False
    Application.ScreenUpdating = True

Edit : Bing, Bonjour mth
 
Re : VBA macro transposer une plage de valeurs

Re
merci à vous.
Ma macro telle qu'elle est enregistrée ne plante pas (c'est celle qui voue est livrée dans le fichier). C'est seulement lorsque j'essaie par moi-même de la "nettoyer" que je n'y arrive pas !
C'est pour cela que j'ai préféré vous placer la version enregistrée pour que je comprenne comment vous faites.
Je vais donc étudier vos réponses et éventuellement vous poser des questions🙂.
A+
 
Re : VBA macro transposer une plage de valeurs

re 🙂

Pas très académique, mais en gros voilà pas à pas ce que j'ai fait, si cela peut-t'aider:

Code:
 Range("C6").Select
Range(Selection, Selection.End(xlDown)).Select
Ces deux lignes avec deux SELECT peuvent être remplacées par une seule, la "Selection" étant la cellule C6:
Code:
Range(Range("C6"), Range("C6").End(xlDown)).Select
Cette sélection est reprise en dessous par cette instruction afin d'être copiée:
Code:
 Selection.Copy
On peut remplacer ces deux lignes au dessus par une seule:
Code:
 Range(Range("C6"), Range("C6").End(xlDown)).Select
Selection.Copy
devient:
Code:
Range(Range("C6"), Range("C6").End(xlDown)).Copy
Histoire de ne pas cafouiller on précise l'onglet:
Code:
Sheets("Feuil1").Range(Range("C6"), Range("C6").End(xlDown)).Copy
Même principe en dessous, on sélectionne l'onglet, puis on sélectionne la cellule, puis on reprend cette sélection pour copier:
Donc
Code:
 Sheets("Feuil2").Select
Range("C2").Select
peut être remplacé par
Code:
 Sheets("Feuil2").Range("C2").Select
qui est repris dans le "Selection" d'en dessous:
Code:
 Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= False, Transpose:=True
du coup on peut écrire:
Code:
 Sheets("Feuil2").Range("C2").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

Et celle là est générée par l'enregistreur mais ne sert à rien :
Code:
 Range("A2").Select

Voili voilou 🙂
Mes explications ne sont peut-être pas terribles, mais c'est ce que je fais quand je fais la guerre aux Select

@ +

m
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Réponses
5
Affichages
687
Réponses
3
Affichages
878
Réponses
9
Affichages
975
Réponses
2
Affichages
644
Retour