Bonjour tout le monde

Désolée pour ce titre "bizarre" mais je ne savais pas trop comment expliquer.
Voilà, j'ai actuellement un fichier qui se présente comme ça

vide Col11 Col2A Col2B
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
vide Col12 Col2A Col2B
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB
heure vide donneeA donneeB

etc...

j'aimerais remonter les heures, que toutes les données en dessous de Col1 qui sont vides prennent la valeur de Col1 et d'autres choses mais ça sera plus facile à expliquer à travers un exemple.
Voilà ce que j'aimerais avoir au final :

heure Col11 Col2A donneeA
heure Col11 Col2A donneeA
heure Col11 Col2A donneeA
heure Col11 Col2A donneeA
etc
heure Col11 Col2B donneeB
heure Col11 Col2B donneeB
heure Col11 Col2B donneeB
heure Col11 Col2B donneeB
etc

Le problème est que, quand je fais une macro avec enregistrement, elle ne s'applique que sur une plage de donnée (celle sur laquelle elle a été appliquée)
J'aimerais que cette macro ne s'applique que sur les premières données, que je me place ensuite sur une case et qu'elle s'applique une plage de donnée (de la même taille) à partir de cette position.
Voici le code généré par Excel, si ça peut vous aider
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
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight 'on insère une colonne
    Range("A1").Select  'suppression de la case vide
    Selection.Delete Shift:=xlUp
    Range("B1").Select
    Selection.AutoFill Destination:=Range("B1:B21"), Type:=xlFillDefault
    Range("B1:B21").Select
    Range("C2:C22").Select
    Selection.Cut
    Range("E2:E22").Select
    Selection.Cut
    Range("C1").Select
    Selection.Copy
    Range("C2").Select
    ActiveSheet.Paste
    Range("E1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E2").Select
    ActiveSheet.Paste
    Range("C1:C2").Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("C1:C21"), Type:=xlFillDefault
    Range("C1:C21").Select
    Range("E1:E2").Select
    Selection.AutoFill Destination:=Range("E1:E21"), Type:=xlFillDefault
    Range("E1:E21").Select
    Range("A1:B21").Select
    Selection.Copy
    Range("A1:D21").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A1:F21").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A22").Select
    Selection.Insert Shift:=xlDown
    ActiveWindow.SmallScroll Down:=-6
    Range("C1:D21").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.SmallScroll Down:=15
    Range("E22:F42").Select
    Selection.ClearContents
Merci d'avance