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 TransfererListeColisage()
' Déclarez les variables pour les deux fichiers
Dim wsNomenclature As Worksheet
Dim wsMateriel As Worksheet
Dim derniereLigneNomenclature As Long, derniereLigneMateriel As Long
Dim ligne As Long
Dim numero As String
Dim niveau As Integer
Dim repere As String
Dim dessin As String
' Définissez les feuilles de travail
Set wsNomenclature = Workbooks("Base nomenclature.xlsx").Worksheets("NomFeuilleNomenclature") ' Remplacez par le nom exact de la feuille
Set wsMateriel = Workbooks("Base liste matériel à expédier.xlsx").Worksheets("NomFeuilleMateriel") ' Remplacez par le nom exact de la feuille
' Trouver la dernière ligne de données dans les fichiers
derniereLigneNomenclature = wsNomenclature.Cells(wsNomenclature.Rows.Count, "A").End(xlUp).Row
derniereLigneMateriel = wsMateriel.Cells(wsMateriel.Rows.Count, "A").End(xlUp).Row + 1 ' Commence l'écriture après la dernière ligne
' Parcourir les lignes dans "Base nomenclature"
For ligne = 2 To derniereLigneNomenclature ' Assurez-vous que les titres sont en ligne 1
If wsNomenclature.Cells(ligne, "ColonneListeDeColisage").Value = "LC" Then ' Remplacez par la colonne exacte
' Récupérer les données de la ligne
numero = wsNomenclature.Cells(ligne, "ColonneNumeroPlan").Value ' Colonne numéro plan ou article
niveau = wsNomenclature.Cells(ligne, "ColonneNiveau").Value ' Colonne niveau
' Vérifiez si le numéro commence par 3 ou 4
If Left(numero, 1) = "3" Then
' Cas pour numéro commençant par 3 - Chercher le 4 au-dessus
repere = numero
dessin = ChercherNumeroDessin(wsNomenclature, ligne)
ElseIf Left(numero, 1) = "4" Then
' Cas pour numéro commençant par 4
dessin = numero
repere = "" ' Pas de repère si numéro commence par 4
End If
' Remplir les informations dans "Base liste matériel à expédier"
With wsMateriel
.Cells(derniereLigneMateriel, "ColonnePoidsNet").Value = wsNomenclature.Cells(ligne, "ColonnePoidsTotalApp").Value
.Cells(derniereLigneMateriel, "ColonneQuantiteC").Value = wsNomenclature.Cells(ligne, "ColonneQuantiteTotal").Value
.Cells(derniereLigneMateriel, "ColonneRepere").Value = repere
.Cells(derniereLigneMateriel, "ColonneNDessin").Value = dessin
.Cells(derniereLigneMateriel, "ColonneDescription").Value = wsNomenclature.Cells(ligne, "ColonneDesignation").Value
End With
derniereLigneMateriel = derniereLigneMateriel + 1
End If
Next ligne
MsgBox "Transfert terminé !"
End Sub
Function ChercherNumeroDessin(ws As Worksheet, ligne As Long) As String
Dim i As Long
' Remonter les lignes pour trouver un numéro commençant par 4
For i = ligne - 1 To 1 Step -1
If Left(ws.Cells(i, "ColonneNumeroPlan").Value, 1) = "4" Then
ChercherNumeroDessin = ws.Cells(i, "ColonneNumeroPlan").Value
Exit Function
End If
Next i
ChercherNumeroDessin = "" ' Retourne une chaîne vide si aucun numéro 4 n'est trouvé
End Function |
Partager