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

Nom : Données brute.jpg
Affichages : 538
Taille : 111,2 Ko

Je souhaiterai obtenir ceci

Nom : Données finales.jpg
Affichages : 531
Taille : 86,3 Ko

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:

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
Mon problème survient après les lignes suivantes:
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)
Alors que Bsl.Offset(i, j) devrai etre situé en colonne A, après l'opération coller, elle se situe en colonne B.
Je pense que cela vient du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Bsl.Offset(i, j + 1).Select
 ActiveSheet.Paste
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).

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