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 Sub

2) 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 Sub

Merci 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 Sub

pour 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,

13vl-plan-test.xlsm (25.14 Ko)

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.

capture d ecran 2020 02 13 a 06 28 53

Si ce n'est toujours pas ça le problème, je vais renvoyer un fichier à jour.

Je m'excuse d'avance,

Cdt,

Rechercher des sujets similaires à "plan recapitulatif"