Bonjour à tous,
Je débute en VBA, et je coince depuis quelques jours sur un problème qui doit finalement être assez simple.
Je souhaite recopier des données qui se trouvent dans un onglet excel sous la forme :
- colonne A : référence de la pièce
- colonne B : étape de fabrication.
pour chaque référence, il est associé plusieurs étapes de fabrication (le nombre d'étapes diffère pour chaque pièce), ce qui donne un fichier de ce type :
| Référence | Etapes |
| A001 | EtapeA1 |
| A001 | EtapeA2 |
| A001 | EtapeA3 |
| B001 | EtapeB1 |
| B001 | EtapeB2 |
| B001 | EtapeB3 |
| B001 | EtapeB4 |
| C001 | EtapeC1 |
| C001 | EtapeC2 |
Je souhaiterai, extraire ces données, dans un nouvel onglet où sur la 1ère ligne j'aurai la référence de la pièce et en dessous les étapes de fabrication soit :
| A001 | B001 | C001 |
| EtapeA1 | EtapeB1 | EtapeC1 |
| EtapeA2 | EtapeB2 | EtapeC2 |
| EtapeA3 | EtapeB3 | |
| EtapeB4 | |
Mon idée est donc de lire la 1ère colonne, et à chaque changement de valeurs, recopier la nouvelle valeurs dans une nouvelle colonne, puis de copier les étapes dessous.
J'ai réussi à faire la 1ère partie, mais je bloque sur la 2ème. actuellement ça me donne ça. où les étapes de fabrication de la 1ère référence ne sont pas inscrite, mais surtout je n'arrive pas à remonter les étapes suivantes pour quelles commencent toutes sur la 2ème ligne.
| A001 | B001 | C001 |
| | |
| | |
| | |
| | |
| EtapeB1 | |
| EtapeB2 | |
| EtapeB3 | |
| EtapeB4 | |
| | EtapeC1 |
| | EtapeC2 |
Mon code est le suivant :
Sub Extract()
Worksheets("Extraction").Cells.Clear
Dim i As Long, Ref As String, j As Long, k As Long
Ref = Sheets("datas").Cells(1, 2).Value
j = 1
With Sheets("datas")
For i = 2 To 5000
If .Cells(i, 2).Value <> Ref Then
Ref = .Cells(i, 2).Value
.Cells(i, 2).Copy Worksheets("Extraction").Cells(1, j)
j = j + 1
End If
k = Cells(i, 2).Row
If .Cells(i, 2).Value = Ref Then
.Cells(i, 1).Copy Worksheets("Extraction").Cells(k, j)
End If
Next i
End With
End Sub
Merci d'avance pour votre aide !!!