Copier des donnees qui sont en lignes en colonnes

Bonjour,

J'ai dans un onglet plusieurs lignes. Je désire copier certaines valeurs des lignes en fonction de différents critères.

Voici un exemple de ce que je veux :

il faut copier les données de l’onglet AA vers l’onglet GEC avec les critères suivants :

les données dans l’onglet AA commencent à la ligne 4 et les données a copier dans l’onglet GEC doivent être copiées à partir de la ligne 7

Il faut en 1er copier la valeur qui se trouve en colonne E de l’onglet AA vers la colonne F de l’onglet GEC

Puis il faut copier la valeur qui se trouve en colonne K de l’onglet AA vers la colonne Q de l’onglet GEC

Puis il faut copier le montant TTC.il faut donc copier la valeur qui se trouve en colonne I de l’onglet AA vers la colonne I de l’onglet GEC, si la valeur dans la colonne K de l’onglet AA commence par F, si ca commence par un A, il faut copier dans la colonne H de l’onglet GEC

Toute la partie que je viens d'expliquer ne me pose pas de problème

Ce que je n'arrive pas à faire c'est relire une nouvelle fois les lignes et copier les valeurs à la suite de l'onglet GEC. A chaque fois il écrase les valeurs de l'onglet GEC

Puis il faut copier le montant HT .il faut donc copier la valeur qui se trouve en colonne G de l’onglet AA vers la colonne H de l’onglet GEC si la valeur dans la colonne K de l’onglet AA commence par F, si ca commence par un A, il faut copier dans la colonne I de l’onglet GEC

Voici le code qui fait la 1ere partie

Sub CopierDonnees1()

Dim wsAA As Worksheet

Dim wsGEC As Worksheet

Dim lastRowAA As Long

Dim lastRowGEC As Long

Dim i As Long

' Définir les onglets

Set wsAA = ThisWorkbook.Sheets("AA")

Set wsGEC = ThisWorkbook.Sheets("GEC")

' Trouver la dernière ligne avec des données dans l'onglet AA

lastRowAA = wsAA.Cells(wsAA.Rows.Count, "E").End(xlUp).row

' Trouver la dernière ligne avec des données dans l'onglet GEC

lastRowGEC = wsGEC.Cells(wsGEC.Rows.Count, "F").End(xlUp).row

' Copier les données de l'onglet AA vers l'onglet GEC

For i = 4 To lastRowAA

' Copier la valeur de la colonne E de l'onglet AA vers la colonne F de l'onglet GEC

wsGEC.Cells(lastRowGEC + i - 3, 6).Value = wsAA.Cells(i, 5).Value

' Copier la valeur de la colonne K de l'onglet AA vers la colonne Q de l'onglet GEC

wsGEC.Cells(lastRowGEC + i - 3, 17).Value = wsAA.Cells(i, 11).Value

' Copier le montant TTC en fonction de la valeur de la colonne K

If Left(wsAA.Cells(i, 11).Value, 1) = "F" Then

wsGEC.Cells(lastRowGEC + i - 3, 9).Value = wsAA.Cells(i, 9).Value

ElseIf Left(wsAA.Cells(i, 11).Value, 1) = "A" Then

wsGEC.Cells(lastRowGEC + i - 3, 8).Value = wsAA.Cells(i, 9).Value

End If

Next i

End Sub

Avez vous une idée svp ?

Merci de votre aide

Christophe

Bonjour,

Pas sûr d'avoir tout bien compris, un fichier joint(sans données confidentielles) avec le résultat attendu aurait été souhaitable.

Sub CopierDonnees1()
    Dim wsAA As Worksheet
    Dim wsGEC As Worksheet
    Dim lastRowAA As Long
    Dim lastRowGEC As Long
    Dim i As Long

    ' Définir les onglets
    Set wsAA = ThisWorkbook.Sheets("AA")
    Set wsGEC = ThisWorkbook.Sheets("GEC")

    ' Trouver la dernière ligne avec des données dans l'onglet AA
    lastRowAA = wsAA.Cells(wsAA.Rows.Count, "E").End(xlUp).Row

    ' Trouver la dernière ligne avec des données dans l'onglet GEC
    lastRowGEC = wsGEC.Cells(wsGEC.Rows.Count, "F").End(xlUp).Row

    ' Copier les données de l'onglet AA vers l'onglet GEC
    For i = 4 To lastRowAA
        ' Copier la valeur de la colonne E de l'onglet AA vers la colonne F de l'onglet GEC
        wsGEC.Cells(lastRowGEC + i - 3, 6).Value = wsAA.Cells(i, 5).Value
        ' Copier la valeur de la colonne K de l'onglet AA vers la colonne Q de l'onglet GEC
        wsGEC.Cells(lastRowGEC + i - 3, 17).Value = wsAA.Cells(i, 11).Value
        If lastRowGEC + 2 < lastRowAA Then
            ' Copier le montant TTC en fonction de la valeur de la colonne K
            If Left(wsAA.Cells(i, 11).Value, 1) = "F" Then
                wsGEC.Cells(lastRowGEC + i - 3, 9).Value = wsAA.Cells(i, 9).Value
            ElseIf Left(wsAA.Cells(i, 11).Value, 1) = "A" Then
                wsGEC.Cells(lastRowGEC + i - 3, 8).Value = wsAA.Cells(i, 9).Value
            End If
        Else
            ' Copier le montant HT en fonction de la valeur de la colonne K
            If Left(wsAA.Cells(i, 11).Value, 1) = "F" Then
                wsGEC.Cells(lastRowGEC + i - 3, 9).Value = wsAA.Cells(i, 7).Value
            ElseIf Left(wsAA.Cells(i, 11).Value, 1) = "A" Then
                wsGEC.Cells(lastRowGEC + i - 3, 8).Value = wsAA.Cells(i, 7).Value
            End If
        End If
    Next i
End Sub

Cdlt

Salut,

Parfait, merci

juste une question comment tu fais pour que le code VBA soit sur en fond gris dans le forum ?

merci

Bonjour CLegal

Il faut utilier l'outil </>

Rechercher des sujets similaires à "copier donnees qui lignes colonnes"