Bonjour,

Je reviens sur le forum pour de nouveaux travaux à vous faire partager. J'ai actuellement un fichier excel avec plusieurs codes sur une même ligne de marque. Je voudrais créer autant de ligne qu'il n'y a de codes en gardant la marque associé au code.

Je vous joins mon fichier excel.

J'ai débuté un script VBA, cependant j'ai déjà une erreur "Next sans For" au niveau du "Next i". Je ne comprend pas car c'est le Next de mon premier For.

Voici mon script:

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
Option Explicit
 
Sub Organiser()
Dim Dossier As String
Dim Fichier As String
Dim Appareil As String
Dim Marque As String
Dim i As Integer
Dim j As Integer
Dim DerniereLigne As Integer
Dim nbCodes As Integer
Dim nbNewligne As Integer
nbNewligne = 1
Dim TabCode() As String
Dim k As Integer
Sheets(2).Cells.ClearContents
Application.ScreenUpdating = False
 
With Sheets(1)
   .Activate
   'Détermination du nombre de lignes
    DerniereLigne = Range("A65536").End(xlUp).Row
 
    'Lecture + Mise en mémoire
    For i = 1 To DerniereLigne
        Dossier = .Cells(i, 1)
        Fichier = .Cells(i, 2)
        Appareil = .Cells(i, 3)
        Marque = .Cells(i, 4)
 
        nbCodes = compteCodes(i)
 
        For j = 0 To nbCodes - 1
            TabCode(j) = .Cells(i, j + 5)
            Next j
 
        With Sheets(2)
            .Activate
            For k = 1 To nbCodes
            .Cells(k + nbNewligne, 1) = Dossier
            .Cells(k + nbNewligne, 2) = Fichier
            .Cells(k + nbNewligne, 3) = Appareil
            .Cells(k + nbNewligne, 4) = Marque
            .Cells(k + nbNewligne, 5) = TabCode(k)
            Next k
 
            nbNewligne = nbNewligne + nbCodes
 
    Next i
 
End Sub
 
Function compteCodes(ligne As Integer)
Dim j As Integer
j = 5
   With Sheets(1)
        .Activate
        While .Cells(ligne, j).Value <> ""
        j = j + 1
        Wend
 
End Function
Pensez-vous que la démarche est la bonne? Que puis-je améliorer? Comment me décoincer avec ce message d'erreur?

Merci d'avance.

Cordialement, idate.