Bonjour à tous,

Je me permets de faire appel à vous une nouvelle fois parce que je trouve pas l'erreur dans la macro que j'utilise...

J'utilise un tableau pour stocker des données que je vais par la suite copier dans un autre classeur.
Le problème, c'est que le tableau ne reprends pas à la ligne n°1 après avoir copié des données (sauf si j'ai atteins le maxi de ligne possible dans le tableau).

Merci d'avance pour votre aide !
Alfred

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
51
52
53
54
55
56
57
58
59
60
61
Dim Tableau(1 To 10, 1 To 2)
Dim I As Integer
 
 
Sub Worksheet_change(ByVal Target As Range)
 
    'On déclare la variable ligneModif
    Dim ligneModif As Long
 
    'Si on modifie une cellule de la colonne 'C' (N° 3)
    If Target.Column = 3 Then
 
        'On récupère le numéro de ligne de la cellule modifiée
        ligneModif = Target.Row
 
        I = I + 1
 
        'Si il y a plus de 10 cellules de remplies
        If I > 5 Then
 
            If MsgBox("La limite du tableau a été atteinte, écraser les valeurs les plus anciennes ?", vbYesNo) = vbYes Then
                I = 1
            Else
                Exit Sub
            End If
 
        End If
 
        'On met les données de la ligne modifiée dans le tableau
        Tableau(I, 1) = Range("A" & ligneModif).Value
        Tableau(I, 2) = Range("C" & ligneModif).Value
 
        I = I + 1
 
    End If
 
End Sub
 
Sub BoutonClic()
 
Dim I As Integer
 
'On ouvre le fichier dans lequel on veut coller les données copiées
Workbooks.Open ThisWorkbook.Path & "\Fichier1.xls"
 
'On restitue les données dans la feuille excel
For I = 1 To UBound(Tableau, 1)
 
    With Sheets("Feuil1").UsedRange: NoDeLaDernLig = .Cells(.Rows.Count, .Columns.Count).Row: End With
 
    Sheets("Feuil1").Cells(NoDeLaDernLig + 1, 4).Value = Tableau(I, 1)
    Sheets("Feuil1").Cells(NoDeLaDernLig + 1, 2).Value = Tableau(I, 2)
 
    I = I + 1
 
Next I
 
Erase Tableau()
 
 
End Sub