XL 2013 Format date dans userform et VBA pour imprimer un formulaire userfom

ANTONY34200

XLDnaute Occasionnel
Bonsoir,
j'avais déjà créé un post sur ce forum pour un coup de main.
J'ai pas mal bosser dessus avec des tuto et le soutien du forum, et j'ai pas mal amélioré mon projet, mais la je ne trouve plus aucun tuto pour ce que j'ai à faire, c'est pourquoi j'en appelle a vous.

J'ai faire un userform pour créer des commandes, les archiver, et revenir dessus pour modifié au cas ou, par contre je rencontre un problème sur le format des dates ... quand je saisie dans mon userform la date suivante : 05/04/2017, il me sort dans ma feuille archive 05/04/2017. Le jour et le mois s'inverse. C'est mon premier souci.

Mon second souci : Dans le userform, j'ai mis un bouton IMPRIMER, que j'aimerais faire fonctionner. je m'explique, une fois toute ma commande saisie, et une fois validé, j'aimerais faire en sorte de pouvoir l'imprimer, selon un modèle précis que j'ai créer sur le classeur.

Je joint le fichier que j'ai créé afin d’être plus clair.

Je vous remercie par avance d'un coup main volontier.
 

Pièces jointes

  • Commande SAPY.xlsm
    37 KB · Affichages: 107

ANTONY34200

XLDnaute Occasionnel
Re,
J'ai continué a travailler sur mon projet, j'ai trouvé une autre solution sans passer par le bouton imprimer, mais sa me gène un peu, par des codes de recherche via le numéro de la fiche. en PJ ce que ça donne.

Par contre si quelqu'un sait comment mettre a jour automatiquement les numéro de fiche dans le userform, je suis preneur.

A bientôt, et merci d'avance pour l'aide ...
 

Pièces jointes

  • Commande SAPY.xlsm
    38.5 KB · Affichages: 84

Lone-wolf

XLDnaute Barbatruc
Bonsoir Antony :)

Ton fichier en retour. Avant de faire une commande, regarde la macro d'enregistrement.

EDIT: qu'est-ce que tu entends par fiche, le numéro du bon de commande?

EDIT: J'ai ajouté un numéro automatique . Tu peux utiliser ce numéro pour le bon de commande. Ce numéro se trouve dans la feuille catalogue en J1 si tu veux le changer. Mais avoir mis 12 combobox pour sasir un article est complètement inutile, une seule suffit.
 

Pièces jointes

  • Commande SAPY.xlsm
    37.9 KB · Affichages: 129
Dernière édition:

ANTONY34200

XLDnaute Occasionnel
Bonsoir Lone-wolf et merci pour cette réponse,
oui, le numéro de fiche est le numéro de commande ... je me suis mal exprimer ...
les 12 combo vont me servir, c'est que ma liste d'article n'est pas à jour, j'ai juste mis 1 ou 2 articles pour les essais, et pour ne pas que mon fichier soit trop lourd ...
Sur le fichier joint, je n'ai pas de macro d'enregistrement, j'ai juste ma macro "ouvrir"
et pour l'impression de la commande, rien de s'incrémente ... est ce normal ?

dans l'attente de te lire, et encore merci pour le coup de pouce
 

Lone-wolf

XLDnaute Barbatruc
Re

J'ai réédité mon précédent message. Pour le bon de commande, il te faut faire la macro. Et encore une fois, tu n'as pas besoin de 12 combos. Regarde mon formulaire et j'ai environ 200 articles.

Note: dans ton fichier le numéro de commande s'incrémente à chaque ouverture du formulaire.

Form-Commandes.gif
 

ANTONY34200

XLDnaute Occasionnel
Re,
OK pour les combo, mais je ne comprend pas ...
En ce qui concerne la macro a créer pour l’impression de la commande, pourrais-tu m'aiguiller en me donnant la première ligne STP. Si j'ai bien compris, la macro viens après :
sheet("archives").activate
End With
J'ai créé mon fichier avec des tuto trouvé sur le net, je ne suis pas super expérimenté ...
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    6.1 KB · Affichages: 115

Lone-wolf

XLDnaute Barbatruc
Re

J'avais mis la macro pour imprimer le bon déjà, ici j'ai remplacer PrintPreview par PrintOut(impression directe). Mais il te faut créer la macro pour remplir le bon.

En PJ, ton fichier avec quelques modifications. Affichage de la date du jour + différence de jours entre date deb et date fin. La différence va s'afficher après avoir mis la date de fin.

OK pour les combo, mais je ne comprend pas. Il n'y a rien à comprendre, quoi que si. Si tu as 1000 articles par exemple, tu ne vas pas me dire que tu vas mettre milles combobox?! o_O

Un exemple sur comment remplir le bon de commande, à adapter à ton fichier

VB:
Private Sub CmdEnregister_Click()

    With Application
        .EnableEvents = False
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .StatusBar = False
    End With

    If Client = "" Then MsgBox "Vueillez saisir le client.", , "Les Milles Merveilles": _
            Article.SetFocus: Exit Sub
    If Representant = "" Then MsgBox "Vueillez saisir votre nom.", , "Les Milles Merveilles": _
            Article.SetFocus: Exit Sub

    With Sheets("Archives")
        lig = .Range("a65536").End(xlUp).Row + 1
        .Range("a" & lig) = lig - 1
        .Range("b" & lig) = Format(CDate(DateCom), "dd.mm.yyyy")
        .Range("c" & lig) = Format(Val(NmCom), "0")
        .Range("d" & lig) = Article
        .Range("e" & lig) = Format(Val(Quantite), "0")
        .Range("f" & lig) = Format(Val(Prix), "0.00")
        .Range("g" & lig) = Format(Val(Rabais) / 100, "0%")
        .Range("h" & lig) = Format(Val(DifMontant), "0.00")
        .Range("i" & lig) = Format(Val(Montant), "0.00")
    End With

    With Sheets("Bon de Commande")
        derlig = .Range("c" & Rows.Count).End(xlUp).Row
        Set plage = .Range("c2:c" & derlig)
        Clt = Application.Match(Client, WsCl.Columns(2), 0)
        Rep = Application.Match(Representant, WsRep.Columns(2), 0)

        x = 17

        Set cel = plage.Find(NmCom, , xlValues)
        If Not cel Is Nothing Then
            premaddress = cel.Address

            WsBC.Range("g2") = Format(Val(NmCom) - 1400, "0")
            Do
                x = x + 1
                rw = Application.Match(cel.Offset(0, 1), WsProd.Columns(3), 0)

                            .Range("b" & x) = WsProd.Cells(rw, 2)         'Code article
                            .Range("c" & x).Value = cel.Offset(0, 1).Value  'Article
                            .Range("d" & x).Value = cel.Offset(0, 2).Value  'Quantité
                            .Range("e" & x).Value = cel.Offset(0, 3).Value  'Prix
                            .Range("f" & x).Value = cel.Offset(0, 5).Value  'Rabais
                            .Range("g" & x).Value = cel.Offset(0, 6).Value  'Total
                            .Range("g45") = WorksheetFunction.Sum(.Range("g18:g40"))
                            .Range("g46") = ((.Range("g45") * 0.08) * 100) / 100  ' Rabais
                            .Range("g4") = Format(CDate(DateCom), "dd.mm.yyyy")
                            .Range("c13") = Format(Val(NmCom) + 910, "0")
                            .Range("g14") = Format(Val(NmCom), "0")
                            .Range("g7") = Client
                            Clt = Application.Match(.Range("g7"), WsFact.Columns(4), 0)
                            .Range("g6") = WsCl.Cells(Clt, 16)
                            .Range("g8") = WsCl.Cells(Clt, 6)
                            .Range("g9") = WsCl.Cells(Clt, 7) & " " & WsCl.Cells(Clt, 8)
                            .Range("c14") = WsCl.Cells(Clt, 14)
                            .Range("g11") = Representant
                            Rep = Application.Match(.Range("g11"), WsRep.Columns(2), 0)
                            .Range("g12") = WsRep.Cells(Rep, 5)
                            .Range("b10") = WsC.Range("x1").Value & "  " & WsRep.Cells(Rep, 9)
                            .Range("b11") = WsC.Range("y1").Value & " " & WsRep.Cells(Rep, 11)
                            ar1 = WorksheetFunction.RoundDown(.Range("g46"), 1)
                            .Range("g46") = ar1
                            .Range("g47") = .Range("g45") + .Range("g46")
                            ar2 = WorksheetFunction.RoundDown(.Range("g47"), 1)
                            .Range("g47") = ar2
                        End With
                    End If
                Next i
                Set cel = plage.FindNext(cel)
            Loop While Not cel Is Nothing And cel.Address <> premaddress
        End If
    End With
 

Pièces jointes

  • Commande SAPY.xlsm
    40.2 KB · Affichages: 131
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re

Si tu doute encore, regarde le fichier. J'ai ajouté les boutons (Suivant et Précedent) pour la recherche des lignes, mais dans ce formulaire il ne sont pas utiles.
 

Pièces jointes

  • Commande SAPY-V3.xlsm
    52.2 KB · Affichages: 72
Dernière édition:

ANTONY34200

XLDnaute Occasionnel
Re,
j'ai bien pris connaissance du dernier fichier, seulement, le bouton aller ne fonctionne plus, et comment faire si sur une seul commande je dois y inclure plusieurs produits ?? je ne comprends pas ...
De plus le nb de jour, je ne souhaite pas qu'il se calcul car bien souvent sur une période d'une semaine soit 7 jours, je peu avoir que 3 ou 4 jours à renseigner.
je te joint le fichier que j'ai retravaillé de mon coté, je n'arrive toujours pas a mettre les dates au bon format, et pour imprimer le bon de commande, je me mets sur la feuille dans la cellule C1 je cherche le bon de commande que je souhaite imprimer et tout s'incrémente automatiquement, sauf les dates qui sonrt au mauvais format
 

Pièces jointes

  • Commande SAPY OK.xlsm
    64.6 KB · Affichages: 51

Lone-wolf

XLDnaute Barbatruc
Re

Regarde le fichier joint. J'ai ajouté un 2ème formulaire, c'est là que tu va modifier ou supprimer la où les lignes. Pourquoi me diras-tu? Par-ce que tu va avoir des doublons et pour celà, j'ai ajouté une colonne avec le code client.

Si tu veux utiliser les boutons (Suivant et Précédent), je te conseil de prendre en considération la colonne code client vu qu'il y a un code unique. Mais je te souhaite bon courage pour afficher le 1000ème enregistrement.

Pour ce, dans le 2ème formulaire, fait une recherche, clique sur une des lignes de la listbox, modifie ou supprime les données à l'aide des textbox's.

Pour date dep et fin, dans ce cas je ne vois pas l'utilité de les avoir mises. Mais bon, c'est toi qui sait.
 

Pièces jointes

  • Commande SAPY-V4.xlsm
    64.6 KB · Affichages: 59
Dernière édition:

ANTONY34200

XLDnaute Occasionnel
Re,
merci pour le boulot, mais on ne doit pas être sur la même longue d'ondes ... je m'explique

Mes codes clients sont intitulés clé client, il est donc unique. (Cf le fichier joint)

Pour mes commandes, j'ai parfois plusieurs articles différents à renseigné, donc je n'ai pas assez d'une seule ligne, c'est pour cela que j'en ai prévu 12.

en ce qui concerne le bouton modifié que je souhaite ajouté, j'aimerais qu'il soit sur le formulaire de commande déjà créé, et faire une recherche par N° de commande, qui sera unique aussi pour le coup.

Regarde mon fichier, il manque juste le code pour le modifié. Je cherche ce code ... mais en vain.
sinon, tout le reste du fichier est correct pour moi.
 

Pièces jointes

  • Commande SAPY OK.xlsm
    68.6 KB · Affichages: 59

Lone-wolf

XLDnaute Barbatruc
Re

Pour mes commandes, j'ai parfois plusieurs articles différents à renseigné, donc je n'ai pas assez d'une seule ligne, c'est pour cela que j'en ai prévu 12.

Faut pas me racconter des conneries, surtout pas à moi qui en a fait plus d'une dixaine. Si tu n'est pas au courant, Excel vas jusqu'à 1 milions de lignes environ; je pense que tu en as assez pour au moins 10 ans ou pas??. Encore une fois, ouvre bien grand les yeux, regarde archives et ensuite le bon de commande. Et dans le bon de commande, pas de cellules fusionnées, mise à part les cellules qui partent depuis Commentaire.

NOTE: entre-nous, tu vend ou tu achète la marchandise gratuitement? Par-ce que je ne vois pas de prix. Change aussi le titre du message, parce que tu n'imprime pas le formulaire mais une feuille.
 

Pièces jointes

  • Commande SAPY-V5.xlsm
    69.7 KB · Affichages: 62
Dernière édition:

Discussions similaires

Réponses
16
Affichages
293

Statistiques des forums

Discussions
311 725
Messages
2 081 939
Membres
101 844
dernier inscrit
pktla