Plan récapitulatif
Bonsoir à tous,
Pour rendre le fichier plus lisible, je souhaiterais, dans un nouveau classeur récupérer chaque référence et y indiquer les besoins demandés, confirmés ainsi que les prévisions.
1) Dans un premier temps, j'ai un problème avec mon userform, je souhaiterais afficher le nom du fichier source à partir de la boite de dialogue, mais je n'y arrive pas. Dans la capture d'écran ci-dessous, j'ai dû faire un copier coller.
Voici mon code:
Private Sub Bouton_Selection_Click()
Dim Repertoire As FileDialog
Set Repertoire = Application.FileDialog(msoFileDialogOpen)
With Repertoire
.InitialFileName = ActiveWorkbook.Path
.Show
If Repertoire.SelectedItems.Count > 0 Then Selection_Box.Value = ActiveWorkbook.Path
End With
End Sub2) Pour l'instant ma macro pour la mise en page fonctionne correctement, mais j'ai un petit problème pour récupérer les données. J'aurais besoin de votre aide car je ne comprends pas et ne vois pas mes erreurs.
F1 représente les prévisions que l'on va mettre dans la deuxième ligne du fichier cible. C1 les commandes.
Les infos de la colonne j du fichier source, doivent se retrouver sur la ligne client du fichier cible en fonction de la semaine
Les infos de la colonne l du fichier source, doivent se retrouver sur la ligne fournisseur du fichier cible en fonction de la semaine également.
Voici mon code:
Type typeinfoProduit
designationProduit As String
CodeCST As String
CodeSup As String
RQty As Integer
DQty As Integer
Type As String
End Type
Sub plan()
Dim source_Semaine As Integer
source_Semaine = Liste_Semaine
'Les mois
semaine = Array("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", "47", "48", "49", "50", "51", "52")
For nsemaine = 0 To 51
If source_Semaine = semaine(nsemaine) Then
Semaine0 = "S0"
SemaineP1 = semaine(nsemaine + 1)
SemaineP2 = semaine(nsemaine + 2)
SemaineP4 = semaine(nsemaine + 3)
SemaineP5 = semaine(nsemaine + 4)
SemaineP6 = semaine(nsemaine + 5)
SemaineP7 = semaine(nsemaine + 6)
SemaineP8 = semaine(nsemaine + 7)
SemaineP9 = semaine(nsemaine + 8)
SemaineP10 = semaine(nsemaine + 9)
End If
Next
End Sub
Sub creation()
Dim produit() As Variant
Dim k As Integer
Dim colDesignProduit As String
Dim colCodeFour As Integer
Dim colSP As Integer
Dim colExped As Integer
Dim colRAL As Integer
Dim colType As Integer
Dim info() As typeinfoProduit
Dim debutLigneEcriture As Integer
colDesignProduit = Cells.Find(what:="Description", MatchCase:=True, LookAt:=xlWhole).Column
colCodeFour = Cells.Find(what:="Customer Material Number", MatchCase:=True, LookAt:=xlWhole).Column
colSP = Cells.Find(what:="Material entered", MatchCase:=True, LookAt:=xlWhole).Column
colExped = Cells.Find(what:="Open Qty", MatchCase:=True, LookAt:=xlWhole).Column
colRAL = Cells.Find(what:="Scheduled", MatchCase:=True, LookAt:=xlWhole).Column
colType = Cells.Find(what:="Sales Document", MatchCase:=True, LookAt:=xlWhole).Column
ligne_FinDocument = Range("H2").End(xlDown).Row
k = 0
For i = 3 To ligne_FinDocument
If Cells(i, colType) = "ZEC1" Then
k = k + 1
End If
Next
ReDim info(k)
info(0).DQty = k
k = 0
For i = 3 To ligne_FinDocument
If Cells(i, colType) = "ZEC1" Then
k = k + 1
info(k).designationProduit = Cells(i, colDesignProduit)
info(k).CodeCST = Cells(i, colCodeFour)
info(k).CodeSup = Cells(i, colRefCourt)
info(k).RQty = Cells(i, colExped)
info(k).DQty = Cells(i, colRAL)
End If
Next
Call newPlan
Call mep
Activeworkbooks.Activate
For i = 1 To k
debutLigneEcriture = 2 + 12 * (i - 1)
Cells(debutLigneEcriture - 1, 1) = "Part"
Cells(debutLigneEcriture - 1, 2) = "Designation"
Cells(debutLigneEcriture - 1, 3) = "CPN"
Cells(debutLigneEcriture - 1, 5) = Semaine0
Cells(debutLigneEcriture - 1, 6) = SemaineP1
Cells(debutLigneEcriture - 1, 7) = SemaineP4
Cells(debutLigneEcriture - 1, 8) = SemaineP5
Cells(debutLigneEcriture - 1, 9) = SemaineP6
Cells(debutLigneEcriture - 1, 10) = SemaineP7
Cells(debutLigneEcriture - 1, 11) = SemaineP8
Cells(debutLigneEcriture - 1, 12) = SemaineP9
Cells(debutLigneEcriture - 1, 13) = SemaineP10
Cells(debutLigneEcriture, 1) = info(i).CodeSup
Cells(debutLigneEcriture, 2) = info(i).designationProduit
Cells(debutLigneEcriture, 3) = info(i).CodeCST
Cells(debutLigneEcriture + 4, 5) = info(i).RQty
Cells(debutLigneEcriture + 6, 5) = info(i).DQty
Cells(debutLigneEcriture, 4) = "PREVISION"
Cells(debutLigneEcriture + 1, 4) = "BESOIN"
Cells(debutLigneEcriture + 2, 4) = "STOCK"
Cells(debutLigneEcriture + 3, 4) = "CLIENT"
Cells(debutLigneEcriture + 4, 4) = "CS"
Cells(debutLigneEcriture + 6, 4) = " FOURNISSEUR"
Cells(debutLigneEcriture + 7, 4) = " CS"
Cells(debutLigneEcriture + 8, 4) = " RAL"
Next
Call MEF
End Sub
Private Sub newPlan()
Workbooks.Add
ActiveWorkbook.SaveAs FileName:="Supply plan", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
'Ouverture du fichier cible
Workbooks.Open "Supply plan", 0, ReadOnly:=False
End SubMerci d'avance pour votre aide !
Bonjour,
à tester,
Private Sub Bouton_Selection_Click()
Dim FD As Office.FileDialog
Set FD = Application.FileDialog(msoFileDialogFilePicker)
With FD
.InitialFileName = ThisWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then Me.Selection_Box = .SelectedItems(1)
End With
End Subpour la suite...peux-tu joindre ton fichier ?
Bonjour,
Merci pour le retour!
Je vais essayer le code et voir ce que ça donne.
Mon fichier test ci-joint.
Cordialement,
Bonjour,
Le code fonctionne correctement. Merci bien !
Juste une petite question pour "ma culture personnelle", qu'est-ce que le "me"? Je ne connaissais pas du tout cette fonction ?
Cordialement,
Bonjour,
Le code fonctionne correctement. Merci bien !
Juste une petite question pour "ma culture personnelle", qu'est-ce que le "me"? Je ne connaissais pas du tout cette fonction ?
Cordialement,
re,
Me représente l'objet parent à partir duquel réside le code,
dans ce cas-ci c'est le UserForm
peux-tu montrer un aperçu du résultat à obtenir avec l'autre macro ?
Bonsoir,
Je devrais avoir quelque chose de ce genre
cdt,
re,
par rapport à la base (Feuil1) du fichier (VL PLAN TEST.xlsm) transmis
je ne vois pas les données correspondantes
pour les données S0 à S13
et non plus pour les données de la colonne D ( de l'image)
Bonjour,
Pour les données par S0 à S13, j'ai dû faire une erreur alors.
Cela devrait ressembler à ça
Par contre pour la colonne D, je devrais voir ces intitulés de ligne. Qu'est-ce qui diffère ?
cdt,
re,
ça ne correspond pas au fichier que tu as transmis, (VL PLAN TEST.xlsm) ?
Re,
J'ai récupéré les données à partir de ce fichier.
Les informations de la colonne D sont rajoutées à l'aide du code ( Macro Creation )
Peut être que le problème vient de ceci :
Pour lignes avec une livraison créée:
- Si la quantité totale est envoyée (réf F010043) alors colonne k = colonne J et je change "Delivery created" à la date du jour" afin de récupérer la semaine avec la macro semaine
- Si quantité partielle est envoyée (réf F021357) alors colonne k= Colonne J - la quantité en retard donc la deuxième ligne de commande.
(13 000-7 000=6 000) puis je change également à la date du jour.
Si ce n'est toujours pas ça le problème, je vais renvoyer un fichier à jour.
Je m'excuse d'avance,
Cdt,