Range Union, transpose & selection multiple

Bonsoir à tous,

Dans le fichier joint, j'effectue un copier coller de cellules de plusieurs colonnes en tentant d'étaler le toute avec transpose.

Le soucis c'est que le transpose ne s’effectue que sur les cellules contenues dans un seul range, a chaque fois ca repart à la ligne de dessous. Au lieu d'avoir F3:F7, H3H7, J3:J7 à la suite dans A:O j'ai F3:f7 en A1:E1 puis H3H7 en A2:E2.....

J'ai un deuxième souci, c'est que si j'ajoute D3 là l'union uRng = [D3, F3:F7, H3:H7, J3:J7] j'en en plus une erreur de sélection multiple alors que ça marche très bien sur les autres... y a des moments ca me saoule c'est galère de bricoler, à chaque nouvelle étape un nouveau problème de code, lié à une syntaxe mal maitrisée je l'avoue volontiers.

Sub Rectangle2_Cliquer()

Dim uRng As Range

 Set uRng = [F3:F7, H3:H7, J3:J7] ' si uRng = [D3, F3:F7, H3:H7, J3:J7] ERREUR selection multiples

        With Sheets("CIBLE")
             uRng.Copy
             .Range("A1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
             'La transpose horizontale ne s'éffectue que un range, le suivant passe en dessous

        End With

End Sub

Merci à vous

40forum-r4.xlsm (16.47 Ko)

Bonjour,

tu as déjà réussi à faire une sélection multiple avec des colonnes non communes une feuille ?

Si oui donne moi ta technique stp.

Surtout avec un transpose qui suit... Tu as 4 plages, tu le fais 4 fois c'est tout.

eric

Sauf que quand je poste un fichier il est toujours simplifié, le vrai tableau lui comporte des dixaines de colonnes à copier.

Comme je dois sauter une colonne sur deux pour copier F3:F7 H3:H7 J3:J7........................ genre 50 de plus dans le vrai tableau,

j'ai pensé faire une boucle qui ferait genre for x = F TO J step 1 avec range=(x & "3" & ":" & x & "7").Copy,...... mais ca plante lamentablement.

Sub test()
    Dim col As Long, pl As Range
    For col = 6 To 30 Step 2
        Set pl = Cells(3, col).Resize(5)
        Debug.Print pl.Address
        ' la suite ...
    Next col
End Sub

J'ai complété comme je pouvais ca marche maintenant. Merci

Sub Rectangle2_Cliquer()
    Dim wks As Worksheet
    Set wks = Worksheets("SOURCE")
    Dim col As Long, pl As Range
    Dim num As Integer
    Dim irow As Integer
    num = 1
    irow = 1
    With Sheets("CIBLE")
        .Rows(irow).Insert
        While num <= 15
            For col = 6 To 10 Step 2
                Set pl = wks.Cells(3, col).Resize(5)
                pl.Copy
                'Debug.Print pl.Address
                ' la suite ...
                .Cells(1, num).PasteSpecial Paste:=xlPasteValues, Transpose:=True
                num = num + 5
             Next col
        Wend
    End With

Bonjour,

j'ai comme l'impression que ton While num <= 15 ne sert strictement à rien.

eric

Bonjour,

Je fais tellement peu souvent du VBA que j'ai peiné une partie de la nuit avec deux boucles imbriqués ne pouvant s'éxécuter simultanément : La tienne pour le saut de colonne et la mienne pour le saut de cellules lors du past transpose dans la fiche cible.

C'est vrai je ne m'en suis pas rendu compte sur le moment, mais le saut horizontal ce fait ici sans besoin de le stopper avec un while....

.Cells(1, 1 + num).PasteSpecial Paste:=xlPasteValues, Transpose:=True
num = num + 5

En tout cas merci pour ton aide ca ma fait réfléchir.

    Sub Rectangle2_Cliquer()
        Dim wks As Worksheet
        Set wks = Worksheets("SOURCE")
        Dim col As Long, pl As Range
        Dim num As Integer
        Dim irow As Integer
        num = 1
        With Sheets("CIBLE")
            .Rows(1).Insert
             For col = 6 To 10 Step 2
                    Set pl = wks.Cells(3, col).Resize(5)
                    pl.Copy
                    .Cells(1, num).PasteSpecial Paste:=xlPasteValues, Transpose:=True
                    num = num + 5
                 Next col
        End With
Rechercher des sujets similaires à "range union transpose selection multiple"