Copier valeurs et coller ligne en dessous et décaler colonne

Bonjour,

Voici mon code :

Sub Test_Essai()

    Dim wbMaster As Workbook
    Dim wsMasterBilanECA As Worksheet
    Dim wsMasterAnalyseComparative As Worksheet
    Dim Std As Integer
    Dim i%
    Dim j As Integer
    Dim k As Integer
    Dim GDerlig As Integer

    Set wbMaster = ActiveWorkbook
    Set wsMasterBilanECA = wbMaster.Worksheets("Liste Bilan Total ECA")
    Set wsMasterAnalyseComparative = wbMaster.Worksheets("Analyse comparative regroup")

    GDerlig = wsMasterBilanECA.Range("G" & Rows.Count).End(xlUp).Row

    wsMasterAnalyseComparative.Range("A1:DD5000").ClearContents

    j = 1
    k = 1

With wsMasterBilanECA
    If .FilterMode Then .ShowAllData
    With .Range("A4:J" & GDerlig)
        For Std = 18 To 40
            For i = 1 To .Rows.Count
                If .Cells(i, 6).Value Like "*" & "T12" & "*" And .Cells(i, 5).Value Like "*" & Std & "*" Then
                    .Cells(i, 1).Copy wsMasterAnalyseComparative.Range("A" & j + 1)
                    j = j + 1
                    k = k + 3
                End If
            Next i
        Next Std
    End With
End With

End Sub

Je souhaite copier les valeurs présentes dans la feuille "Liste Bilan Total ECA" et les coller dans la feuille "Analyse comparative regroup". Pour cela il faut que dans la cellule 6 je trouve le texte "T12" et dans la cellule 5 le standard allant de 18 à 40.

Si les conditions sont vérifiées je copie les valeurs. Pour le standard 18, je copie les valeurs en commençant en A1 jusqu'à la fin. Pour le standard 19 je colle les valeurs en D1 et ainsi de suite pour chaque standard.

Mon code marche mais impossible de faire décaler la colonne quand je change de standard.

Pouvez-vous m'aider ? Merci d'avance.

GuiGui8731

Bonjour,

Si j'ai compris pour Std 18 on copie en A, 19 en D, 20 en G, 21 en J ..... A essayer:

.Cells(i, 1).Copy  wsMasterAnalyseComparative.Cells(j + 1, (Std - 18) *3 + 1)

A+

Bonjour AlgoPlus,

Merci pour ton.

Alors ton code marche. Il copie bien et décalle bien pour les colonnes. Le petit soucis c'est que lorsque le programme a terminé de coller en colonne A, il colle les valeurs de la colonne B à partir de la dernière valeur en colonne A.

Est-ce normal ?

GuiGui8731

Pas forcément tout compris, et pas de classeur pour essayer de comprendre.... mais ça me semble impossible puisque :

Pour chaque standard (18 à 40)

Pour chaque ligne de la plage .Range("A4:J" & GDerlig)

on copie la cellule colonne A (et pas une autre) dans l'autre feuille en colonne liée au standard

Bonjour AlgoPlus,

Le fichier est assez volumineux et ne passe pas.

Pour le standard 18, les valeurs présentes en colonne A correspondant au standard 18 sont copiées dans la colonne A de la deuxième feuille.

Puis pour le standard 19, même principe, on copie les valeurs mais en les plaçant au début de la colonne D. En répétant ce même procédé.

Après si cela n'est pas possible, j'ai inséré un code supprimant les cellules vides donc ça marche pour le moment.

GuiGui8731

Ah je crois que j'ai compris : chaque colonne ( A, D, G...) doit être remplie à partir du même N° de ligne ?

Si oui, rajouter

j = 1

entre ces deux lignes

 For Std = 18 To 40
            For i = 1 To .Rows.Count

A+

Re-Bonjour AlgoPlus,

C'est bien ça. On remplit les colonnes A, D, G,... toujours à partir du même numéro de ligne.

Et le rajout de j=1 là où tu as indiqué, tout fonctionne parfaitement.

Merci pour ton temps en tout cas.

Bon weekend à toi.

GuiGui8731

Rechercher des sujets similaires à "copier valeurs coller ligne dessous decaler colonne"