Bonjour,
débutant en VBA, et en code en général, j'essaye de faire une macro permettant de copier les caractéristiques d'une machine d'un classeur dans un autre en fonction du nom des machine et de la date (la macro sera activé chaque jour et s'incrémente de 1 pour changer de case). J'ai écris le code mais je reçois une erreur 1004. Pourriez vous m'aider ? Mes éléments de départ sont dans la feuille 1 du classeur Essai003.xlsm et je veux les mettre dans la feuille 1 du classeur Essai004.xlsm. L'ensemble des tests en if me permettent de savoir à quelle machine appartient la caractéristique et la remettre dans la bonne case à l'arrivé. Si la case comporte un nom inconnue on arrête la boucle for. (ce n'est pas optimal mais je verrai pour optimiser quand ça marchera). J'ai effectué l'indentation manuellement pour que ce soit plus lisible.
Merci d'avance.

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
62
63
Sub CommandButton1_Click()
Windows("Essai003.xlsm").Activate
Dim k As Integer
Dim j As Integer
Dim i As Integer
Dim l As Integer
 
Sheets("Feuil1").Range("B1").Copy
Windows("Essai004.xlsm").Activate
Worksheets("Feuil1").Cells(1, i).PasteSpecial Paste:=xlValues
For j = 3 To 16
    Windows("Essai003.xlsm").Activate
    Sheets("Feuil1").Cells(j, 15).Copy
    If Cells(j, 10) = "DS17" Then
        l = 2
    ElseIf Cells(j, 10) = ("DS30") Then
            l = 3
          ElseIf Cells(j, 10) = ("DS11") Then
                l = 4
                ElseIf Cells(j, 10) = ("DR28") Then
                    l = 5
                      ElseIf Cells(j, 10) = ("DS40") Then
                        l = 6
                            ElseIf Cells(j, 10) = ("DS41") Then
                                l = 7
                                  ElseIf Cells(j, 10) = ("DS08") Then
                                    l = 8
                                        ElseIf Cells(j, 10) = ("DS12") Then
                                            l = 9
                                              ElseIf Cells(j, 10) = ("DR20") Then
                                                l = 10
                                                    ElseIf Cells(j, 10) = ("DR15") Then
                                                        l = 11
                                                          ElseIf Cells(j, 10) = ("DR16") Then
                                                            l = 12
                                                                ElseIf Cells(j, 10) = ("DR32") Then
                                                                    l = 13
                                                                      ElseIf Cells(j, 10) = ("DR18") Then
                                                                        l = 14
                                                                            ElseIf Cells(j, 10) = ("DH27") Then
                                                                                l = 15
                                                                                  ElseIf Cells(j, 10) = ("DS06") Then
                                                                                    l = 16
                                                                                        ElseIf Cells(j, 10) = "DR19" Then
                                                                                            l = 17
                                                                                              ElseIf Cells(j, 10) = "DS05" Then
                                                                                                l = 18
                                                                                                    ElseIf Cells(j, 10) = "DR22" Then
                                                                                                        l = 19
                                                                                                          ElseIf Cells(j, 10) = "DR03" Then
                                                                                                            l = 20
                                                                                                                ElseIf Cells(j, 0) = "DS42" Then
                                                                                                                    l = 21
                                                                                                                    Else:
                                                                                                                        j = 16
    End If
    Windows("Essai004.xlsm").Activate
    Worksheets("Feuil1").Cells(k, i).PasteSpecial Paste:=xlValues
Next
Windows("Essai003.xlsm").Activate
Cells(2, 1) = i + 1
 
End Sub