Artoner
Nouveau membre
Bonjour,
Voilà j'ai une petite macro à effectuer mais je butte sur un problème.
Etant débutant en VBA, je n'arrive pas à trouver précisément d'où provient mon erreur.
Le but de la macro est simple : en la lançant, si trois conditions sont vérifiée sur les deux feuilles différentes alors les lignes respectant ces conditions sont recopiées dans une troisième.
Pour être plus clair à présent, sur les deux premières feuilles, j'ai des lignes correspondant à des opérations avec pour détails un code, la date et le sens de l'opération.
Je souhaite recopier dans une troisième feuille les lignes présentant des similitudes. Je m'explique : si dans la feuille "X" une opération codée "L" a été effectuée le 6 juillet dans le sens "haut" et que dans la feuille "Y" une opération codée "L" (elle aussi) dans le sens "haut" mais entre le 1er et le 11 juillet (c'est à dire à plus ou moins 5 jours de la date d'opération de la feuille "X") alors les deux lignes doivent être copiées l'une en dessous de l'autre dans la troisième feuille et ainsi de suite.
J'ai essayé de codé, et ça donne ça :
[cpp]Sub CopyCommittedCells()
Dim c, n, a, b, i, j As Integer
a = 2
c = 2
b = c + 1
i = Worksheets("X").Cells(a, 8)
For a = 2 To n
For j = i - 5 To i + 5 'Pour un intervalle compris entre +5 et -5 jours autours du personal trade
'Si l'opération est exécutée sur un même instrument financier et est dans le même sens alors
If Worksheets("Y").Cells(j, 7).Value = Worksheets("X").Cells(i, 7).Value And Worksheets("Y").Cells(j, 4).Value = Worksheets("X").Cells(i, 4).Value Then
'Copie de l'opération depuis "Y" dans la feuille 3
Worksheets("Y").Select
Range("A" & a & ":G" & a).Select
Selection.Copy
Sheets("3").Select
Range("A" & c).Select
ActiveSheet.Paste
'Copie de l'opération depuis "X" dans la feuille 3
Worksheets("X").Select
Range("A" & a & ":G" & a).Select
Selection.Copy
Sheets("3").Select
Range("A" & b).Select
ActiveSheet.Paste
c = c + 2
End If
Next j
Next a
Application.CutCopyMode = False
End Sub
[/cpp]
Pardon si je n'ai pas été très clair. Merci d'avance en tout cas.
Voilà j'ai une petite macro à effectuer mais je butte sur un problème.
Etant débutant en VBA, je n'arrive pas à trouver précisément d'où provient mon erreur.
Le but de la macro est simple : en la lançant, si trois conditions sont vérifiée sur les deux feuilles différentes alors les lignes respectant ces conditions sont recopiées dans une troisième.
Pour être plus clair à présent, sur les deux premières feuilles, j'ai des lignes correspondant à des opérations avec pour détails un code, la date et le sens de l'opération.
Je souhaite recopier dans une troisième feuille les lignes présentant des similitudes. Je m'explique : si dans la feuille "X" une opération codée "L" a été effectuée le 6 juillet dans le sens "haut" et que dans la feuille "Y" une opération codée "L" (elle aussi) dans le sens "haut" mais entre le 1er et le 11 juillet (c'est à dire à plus ou moins 5 jours de la date d'opération de la feuille "X") alors les deux lignes doivent être copiées l'une en dessous de l'autre dans la troisième feuille et ainsi de suite.
J'ai essayé de codé, et ça donne ça :
[cpp]Sub CopyCommittedCells()
Dim c, n, a, b, i, j As Integer
a = 2
c = 2
b = c + 1
i = Worksheets("X").Cells(a, 8)
For a = 2 To n
For j = i - 5 To i + 5 'Pour un intervalle compris entre +5 et -5 jours autours du personal trade
'Si l'opération est exécutée sur un même instrument financier et est dans le même sens alors
If Worksheets("Y").Cells(j, 7).Value = Worksheets("X").Cells(i, 7).Value And Worksheets("Y").Cells(j, 4).Value = Worksheets("X").Cells(i, 4).Value Then
'Copie de l'opération depuis "Y" dans la feuille 3
Worksheets("Y").Select
Range("A" & a & ":G" & a).Select
Selection.Copy
Sheets("3").Select
Range("A" & c).Select
ActiveSheet.Paste
'Copie de l'opération depuis "X" dans la feuille 3
Worksheets("X").Select
Range("A" & a & ":G" & a).Select
Selection.Copy
Sheets("3").Select
Range("A" & b).Select
ActiveSheet.Paste
c = c + 2
End If
Next j
Next a
Application.CutCopyMode = False
End Sub
[/cpp]
Pardon si je n'ai pas été très clair. Merci d'avance en tout cas.