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
| Sub Generer_Nomenclature()
Application.ScreenUpdating = False
'--------------------Déclarations des variables----------------------------
Dim NumeroGamme As String
Dim FeuilleArticle As Worksheet, FeuilleNomenclature As Worksheet, FeuilleFinale As Worksheet
Dim i As Integer, FinTableauArticle As Integer, Niveau As Integer, Decalage As Integer
Dim FinTableauNomenclature As Long, FinFeuilleFinale As Long, Ligne As Long
Dim ZoneDeRecherche As Range, Trouver As Range
Dim Adresse As String
'-----------Attributions des feuilles Excel aux variables------------------
Set FeuilleArticle = Worksheets("GPARTICL")
Set FeuilleNomenclature = Worksheets("GPNOMENC")
Set FeuilleFinale = Worksheets("Nomenclature")
'--------------------------------------------------------------------------
FinTableauArticle = FeuilleArticle.Cells(50000, 1).End(xlUp).Row
FinTableauNomenclature = FeuilleNomenclature.Cells(50000, 6).End(xlUp).Row
'On copie la première colonne de la feuille GPARTICL avant de commencer le traîtement
'et on attribue le nombre de ligne de la feuille Nomenclature dans "FinFeuilleFinale"
FeuilleFinale.Columns(1).Value = FeuilleArticle.Columns(1).Value
FinFeuilleFinale = FeuilleFinale.Cells(50000, 1).End(xlUp).Row
Niveau = 0
Decalage = 1
'---------------------------Début du traîtement----------------------------
Niveau = Niveau + 1
For i = 2 To FinFeuilleFinale
NumeroGamme = FeuilleFinale.Cells(i, 1).Value
If NumeroGamme <> "" Then
Set ZoneDeRecherche = FeuilleNomenclature.Columns(32)
Set Trouver = ZoneDeRecherche.Cells.Find(what:=NumeroGamme, LookAt:=xlWhole)
If Trouver Is Nothing Then
Else
' On repère sur quelle ligne se trouve le numéro du produit de la nomenclature en cours
FeuilleNomenclature.Activate
Adresse = Trouver.Address
Range(Adresse).Select
Ligne = ActiveCell.Row
'Une fois repérée, on copie le numéro du produit dans notre feuille Nomenclature
While FeuilleNomenclature.Cells(Ligne, 32).Value = NumeroGamme
FeuilleFinale.Activate
FeuilleFinale.Rows("" & i + Decalage & ":" & i + Decalage & "").Select
Selection.Insert Shift:=xlDown
FeuilleFinale.Cells(i + Decalage, 1 + Niveau).Value = FeuilleNomenclature.Cells(Ligne, 6).Value
Ligne = Ligne + 1
Decalage = Decalage + 1
Wend
Decalage = 1
End If
FinFeuilleFinale = FeuilleFinale.Cells(50000, 1).End(xlUp).Row
End If
FinFeuilleFinale = FeuilleFinale.Cells(50000, 1).End(xlUp).Row
Next
Application.ScreenUpdating = True
End Sub |
Partager