PASCAL84810
XLDnaute Junior
Boujour,
A partir d'une base de donnée "mouvement de stock" remontée de L'ERP, je vais créer un tableau de bord logistique
pour cela je sépare en "couper coller" dans un premier temps mes différents sites logistiques appelés dans ce cas MAS; LRM; D03; D06 sur une feuille pour chaque, MAS restant sur la feuille "BASE" (colonne 1 entete A1=site) (macro1).
Par la suite je sépare encore une fois la base avec copier coller (car cela va beaucoup plus vite que couper coller) suivant le type de mouvement (macro2).
j'ai donc récupéré sur le site et adapté une macro "couper coller", mais mon fichier fait entre 80000 et 200000 lignes et c'est du ligne par ligne donc super long, donc si vous avez plus simple et plus rapide je suis preneur.
Par la suite je transforme des formules avec le développeur pour remplir les cases de mon tableau, des données désirés, (suivant entre autre, de la colonne TRS qui donne des sous ensemble de transaction) "nombre de lignes livraisons, réceptions, mouvements de rangement par jour et par opérateur, etc.."
en vous remerciant
entête des colonnes
Sub macro1()
Dim cell As Range
Sheets("LRM").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("A1:A" & Sheets("BASE").Range("A65536").End(xlUp).Row)
If cell.Value = "LRM" Then
cell.EntireRow.Cut Destination:=Sheets("LRM").Cells(Sheets("LRM").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("D06").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("A1:A" & Sheets("BASE").Range("A65536").End(xlUp).Row)
If cell.Value = "D06" Then
cell.EntireRow.Cut Destination:=Sheets("D06").Cells(Sheets("D06").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("D03").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("A1:A" & Sheets("BASE").Range("A65536").End(xlUp).Row)
If cell.Value = "D03" Then
cell.EntireRow.Cut Destination:=Sheets("D03").Cells(Sheets("D03").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
End Sub
__________________
macro2 'chaque page = un mouvement de la colonne L'
Sub Test()
Dim cell As Range
Sheets("CHANGEMEN").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("ENTREE DI").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("ENTREE OF").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("LIVRAISON").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("RECEPTION").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("RETOUR LI").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("SORTIE DI").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("SORTIE OF").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("TEMP").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("QNE").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("FACTURE MAG").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Changemen" Then
cell.EntireRow.Copy Destination:=Sheets("CHANGEMEN").Cells(Sheets("CHANGEMEN").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Sortie di" Then
cell.EntireRow.Copy Destination:=Sheets("sortie di").Cells(Sheets("sortie di").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Livraison" Then
cell.EntireRow.Copy Destination:=Sheets("LIVRAISON").Cells(Sheets("LIVRAISON").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Réception" Then
cell.EntireRow.Copy Destination:=Sheets("RECEPTION").Cells(Sheets("RECEPTION").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Entrée di" Then
cell.EntireRow.Copy Destination:=Sheets("ENTREE DI").Cells(Sheets("ENTREE DI").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Entrée OF" Then
cell.EntireRow.Copy Destination:=Sheets("ENTREE OF").Cells(Sheets("ENTREE OF").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Retour li" Then
cell.EntireRow.Copy Destination:=Sheets("RETOUR LI").Cells(Sheets("RETOUR LI").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Sortie OF" Then
cell.EntireRow.Copy Destination:=Sheets("SORTIE OF").Cells(Sheets("SORTIE OF").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("M2:M" & Sheets("BASE").Range("M65536").End(xlUp).Row)
If cell.Value = "TEMP" Then
cell.EntireRow.Copy Destination:=Sheets("TEMP").Cells(Sheets("TEMP").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("M2:M" & Sheets("BASE").Range("M65536").End(xlUp).Row)
If cell.Value = "QNE" Then
cell.EntireRow.Copy Destination:=Sheets("QNE").Cells(Sheets("QNE").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("FEUIL1").Select 'je récupère l’entête des colonnes copié sur la feuille 1 dans une autre macro'
Rows("1:1").Select
Selection.Copy
Sheets("CHANGEMEN").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ENTREE DI").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ENTREE OF").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("LIVRAISON").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("RECEPTION").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("RETOUR LI").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("SORTIE DI").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("SORTIE OF").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("FACTURE MAG").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("TEMP").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("QNE").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
A partir d'une base de donnée "mouvement de stock" remontée de L'ERP, je vais créer un tableau de bord logistique
pour cela je sépare en "couper coller" dans un premier temps mes différents sites logistiques appelés dans ce cas MAS; LRM; D03; D06 sur une feuille pour chaque, MAS restant sur la feuille "BASE" (colonne 1 entete A1=site) (macro1).
Par la suite je sépare encore une fois la base avec copier coller (car cela va beaucoup plus vite que couper coller) suivant le type de mouvement (macro2).
j'ai donc récupéré sur le site et adapté une macro "couper coller", mais mon fichier fait entre 80000 et 200000 lignes et c'est du ligne par ligne donc super long, donc si vous avez plus simple et plus rapide je suis preneur.
Par la suite je transforme des formules avec le développeur pour remplir les cases de mon tableau, des données désirés, (suivant entre autre, de la colonne TRS qui donne des sous ensemble de transaction) "nombre de lignes livraisons, réceptions, mouvements de rangement par jour et par opérateur, etc.."
en vous remerciant
entête des colonnes
Site | Art | Qté | Qté Us | Piece | Imputation | Date Creat | Heure | Operateur | Trs | Piece Origine | Type Trans | Empl | Pmp Moyen | vALO AU pmp mOY | Tiers | Statut Stock | Desig Mvt |
Sub macro1()
Dim cell As Range
Sheets("LRM").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("A1:A" & Sheets("BASE").Range("A65536").End(xlUp).Row)
If cell.Value = "LRM" Then
cell.EntireRow.Cut Destination:=Sheets("LRM").Cells(Sheets("LRM").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("D06").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("A1:A" & Sheets("BASE").Range("A65536").End(xlUp).Row)
If cell.Value = "D06" Then
cell.EntireRow.Cut Destination:=Sheets("D06").Cells(Sheets("D06").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("D03").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("A1:A" & Sheets("BASE").Range("A65536").End(xlUp).Row)
If cell.Value = "D03" Then
cell.EntireRow.Cut Destination:=Sheets("D03").Cells(Sheets("D03").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
End Sub
__________________
macro2 'chaque page = un mouvement de la colonne L'
Sub Test()
Dim cell As Range
Sheets("CHANGEMEN").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("ENTREE DI").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("ENTREE OF").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("LIVRAISON").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("RECEPTION").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("RETOUR LI").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("SORTIE DI").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("SORTIE OF").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("TEMP").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("QNE").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("FACTURE MAG").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Changemen" Then
cell.EntireRow.Copy Destination:=Sheets("CHANGEMEN").Cells(Sheets("CHANGEMEN").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Sortie di" Then
cell.EntireRow.Copy Destination:=Sheets("sortie di").Cells(Sheets("sortie di").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Livraison" Then
cell.EntireRow.Copy Destination:=Sheets("LIVRAISON").Cells(Sheets("LIVRAISON").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Réception" Then
cell.EntireRow.Copy Destination:=Sheets("RECEPTION").Cells(Sheets("RECEPTION").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Entrée di" Then
cell.EntireRow.Copy Destination:=Sheets("ENTREE DI").Cells(Sheets("ENTREE DI").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Entrée OF" Then
cell.EntireRow.Copy Destination:=Sheets("ENTREE OF").Cells(Sheets("ENTREE OF").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Retour li" Then
cell.EntireRow.Copy Destination:=Sheets("RETOUR LI").Cells(Sheets("RETOUR LI").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("L2:L" & Sheets("BASE").Range("L65536").End(xlUp).Row)
If cell.Value = "Sortie OF" Then
cell.EntireRow.Copy Destination:=Sheets("SORTIE OF").Cells(Sheets("SORTIE OF").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("M2:M" & Sheets("BASE").Range("M65536").End(xlUp).Row)
If cell.Value = "TEMP" Then
cell.EntireRow.Copy Destination:=Sheets("TEMP").Cells(Sheets("TEMP").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("BASE").Select
For Each cell In Sheets("BASE").Range("M2:M" & Sheets("BASE").Range("M65536").End(xlUp).Row)
If cell.Value = "QNE" Then
cell.EntireRow.Copy Destination:=Sheets("QNE").Cells(Sheets("QNE").Range("A65536").End(xlUp).Row + 1, 1)
End If
Next
Sheets("FEUIL1").Select 'je récupère l’entête des colonnes copié sur la feuille 1 dans une autre macro'
Rows("1:1").Select
Selection.Copy
Sheets("CHANGEMEN").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ENTREE DI").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("ENTREE OF").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("LIVRAISON").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("RECEPTION").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("RETOUR LI").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("SORTIE DI").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("SORTIE OF").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("FACTURE MAG").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("TEMP").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("QNE").Select
Range("A1").Select
ActiveSheet.Paste
End Sub