Bonjour à tous,
J'ai une série de données que je souhaite traiter: la première ligne contient des dates la seconde des pourcentages associés à ces dates, la troisième ligne contient des dates, la quatrième des pourcentages associés à ces dates etc...
Les dates de chaque série ne sont pas identiques
Je souhaiterai obtenir ceci
J'ai donc créé du code, qui est encore en cours de création, pour décaler mes lignes dans un sens ou dans l'autre pour avoir des dates identiques sur chaque colonne:
Mon problème survient après les lignes suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Sub test() Dim Baseline As Worksheet Dim Actual As Worksheet Dim Bsl As Range Dim Act As Range Dim i As Integer Dim j As Integer Dim k As Integer Dim m As Integer Dim n As Integer Dim p As Integer Set Baseline = ThisWorkbook.Sheets("Baseline") Set Actual = ThisWorkbook.Sheets("Actual") Set Bsl = Baseline.Range("A1") Set Act = Actual.Range("A1") Bsl = Bsl.Offset(0) Act = Act.Offset(0) i = 0 j = 0 k = 0 Do While Bsl.Offset(0) <> Bsl.Offset(i + 5, j) If Bsl.Offset(i + 5, j) <> "" And Bsl.Offset(0) < Bsl.Offset(i + 5, j) Then Range(Bsl.Offset(i + 5, j), Bsl.Offset(i + 9, j).End(xlToRight)).Cut Bsl.Offset(i + 5, j + 1).Select ActiveSheet.Paste Bsl.Offset(i + 5, j) = Bsl.Offset(i, j) Bsl.Offset(i + 5, j).NumberFormat = "[$-410]dd-mmm-yy;@" Bsl.Offset(i + 6, j) = 0 Bsl.Offset(i + 6, j).NumberFormat = "0.00%" End If If Bsl.Offset(i + 5, j) <> "" And Bsl.Offset(i, j) > Bsl.Offset(i + 5, j) Then Application.CutCopyMode = False Range(Bsl.Offset(i, j), Bsl.Offset(i, j + 5).End(xlToRight).End(xlDown)).Cut Bsl.Offset(i, j + 1).Select ActiveSheet.Paste Bsl.Offset(i, j) = Bsl.Offset(i + 5, j) Bsl.Offset(i, j).NumberFormat = "[$-410]dd-mmm-yy;@" Bsl.Offset(i + 1, j) = 0 Bsl.Offset(i + 1, j).NumberFormat = "0.00%" End If i = i + 5 Loop End Sub
Alors que Bsl.Offset(i, j) devrai etre situé en colonne A, après l'opération coller, elle se situe en colonne B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Range(Bsl.Offset(i, j), Bsl.Offset(i, j + 5).End(xlToRight).End(xlDown)).Cut Bsl.Offset(i, j + 1).Select ActiveSheet.Paste Bsl.Offset(i, j) = Bsl.Offset(i + 5, j)
Je pense que cela vient du code
Mais je n'ai pas trouvé de méthode plus orthodoxe pour parvenir à décaler mes valeurs ( en plus j'utilise du .Select dont je souhaiterai me passer).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Bsl.Offset(i, j + 1).Select ActiveSheet.Paste
Quelqu'un a-t-il une idée soit pour couper/coller "proprement" soit pour éviter le décalage de mon offset?
Merci pour votre aide et votre collaboration
Eric
Partager