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 SubCdlt
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 </>