Macro copier ligne en colonne

Mr Funky

XLDnaute Nouveau
Bonjour à tous,

Je concois que je sollicite beaucoup votre aide en ce moment et je vous en remercie particulièrement :cool:

Me voici devant une autre problème :D :
Je cherche la macro qui me permettrait de copié une plage de cellule contenant des données horizontales et la collé dans une colonne de façon à ce que les données soient verticales.
Je connais la fonction transposé mais le souci est que je dois répéter ce collage dans la première cellule vide d'une colonne.

Plus précisément, je dois copié la plage de cellules horizontale de la feuille "ParaROBOT" du classeur "test.xls" qui se situe tout le temps de F1 à AK1, la copié et la collé dans de façon verticale dans la première cellule vide de la colonne G de "Feuil2" du classeur "Bases Séquences".

Je ne pense pas qu'il existe des SpecialPaste avec reconnaissance de cellules vide, j'espère me tromper mais serait agréablement surpris du contraire.

J'espère avoir été le plus clair possible,:confused:

Bonne journée a tous

Cordialement
 

Pièces jointes

  • test.xls
    29 KB · Affichages: 90
  • Base Séquences.xls
    25 KB · Affichages: 109
  • test.xls
    29 KB · Affichages: 94
  • test.xls
    29 KB · Affichages: 96
G

Guest

Guest
Re : Macro copier ligne en colonne

Bonjour,

un exemple réalisé avec l'ENREGISTREUR de MACRO et remanié

Code:
    Sheets("Feuil1").Range("A1:E1").SpecialCells(xlCellTypeConstants).Copy
    
    Sheets("Feuil2").Range("A1").PasteSpecial _
                    Paste:=xlPasteValues, _
                    Operation:=xlNone, _
                    SkipBlanks:=True, _
                    Transpose:=True

A+
 

Mr Funky

XLDnaute Nouveau
Re : Macro copier ligne en colonne

Merci pour la réponse mais il y a un hic:

J'ai rajouté juste les Workbooks et le End Offset, il me renvoit une erreur d'execution 9 comme quoi l'indice n'appartient pas a la sélection :confused: ...
Aurai-je fait une erreur de syntaxe ?


Workbooks("test").Sheets("ParaROBOT").Range("F1:AK1").SpecialCells(xlCellTypeConstants).Copy
Workbooks("Base Séquences").Sheets("Feuil2").Range("G65536").End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=True, _
Transpose:=True

P.S: Comment fais-tu pour écrire ton code tel une capture d'écran Excel comme tu as fait ci-dessus ?
 
Dernière édition:
G

Guest

Guest
Re : Macro copier ligne en colonne

Re,
P.S: Comment fais-tu pour écrire ton code tel une capture d'écran Excel comme tu as fait ci-dessus ?
Dans la barre d'outils d'édition des message tu as 2 icones une jaune comme une bulle carrée après l'icône d'image et qui donne 'citation' comme ci-dessus

et une autre '#' qui donne ce qui suit'
Généralement je tape mon code dans un module pour l'indenter et le mettre propre puis le copie et colle après avoir cliquer sur l'icône '#'
Code:
Workbooks("test").Sheets("ParaROBOT").Range("F1:AK 1").SpecialCells(xlCellTypeConstants).Copy
Workbooks("Base Séquences").Sheets("Feuil2").Range("G65536").End(x lUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=True, _
Transpose:=True

Pour ta question:

Le mieux dans ce cas là est de construire les objets en plusieurs étapes pour voir à la compilation ou l'execution où cela coince réellement. Exemple:

Code:
    Dim Wk1 As Workbook, Wk2 As Workbook
    Dim Plage1 As Range, Plage2 As Range
    Set Wk1 = Workbooks("test"): Set Wk2 = Workbooks("Base Séquences")
    Set Plage1 = Wk1.Sheets("ParaROBOT").Range("F1:AK1")
    Set Plage2 = Wk2.Sheets("Feuil2").Range("G65536")
    Set Plage2 = Plage2.End(xlUp).Offset(1, 0)
    Plage1.SpecialCells(xlCellTypeConstants).Copy
    Plage2.PasteSpecial _
            Paste:=xlPasteValues, _
            Operation:=xlNone, _
            SkipBlanks:=True, _
            Transpose:=True

Quant tes test seront finis tu pourras revenir à une syntaxe plus courte.

De plus lorsque tu post ceci:
il me renvoit une erreur d'execution 9 comme quoi l'indice n'appartient pas a la sélection

dis toujours sur quelle ligne l'erreur se produit. Nous ne sommes pas devin.

A+
 

Mr Funky

XLDnaute Nouveau
Re : Macro copier ligne en colonne

Je te remercie elle fonctionne niquel !!!
Le seul souci qui n'en est pas au final est de déclarer les différentes plages (peut etre une cinquantaine....

Dim Plage7 As Range, Plage8 As Range, Plage9 As Range
Set Plage7 = Wk1.Sheets("ParaROBOT").Range("F6:AK6")
Set Plage8 = Wk2.Sheets("Feuil2").Range("I65536")
Set Plage9 = Plage8.End(xlUp).Offset(1, 0)
Plage7.SpecialCells(xlCellTypeConstants).Copy
Plage9.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=True, _
Transpose:=True

Enorme merci une fois de plus, quel bonheur de savoir qu'on peut toujours compter sur vous !!!
 
G

Guest

Guest
Re : Macro copier ligne en colonne

Re,

Le seul souci qui n'en est pas au final est de déclarer les différentes plages

tu as raison c'est un travail long et fastidieux mais qui au final, surtout pour des macros un peu complexe permet de gagner un temps considérable en debogage. En plus cela permet d'apprendre plus rapidement comment fonctionne VBA avec les plages.

A+
 

Discussions similaires

Réponses
4
Affichages
339

Statistiques des forums

Discussions
312 413
Messages
2 088 210
Membres
103 768
dernier inscrit
proxyci