Gestions de Commandes Journalieres

Bearn 64

XLDnaute Occasionnel
[Resolu] Gestions de Commandes Journalieres

Bonsoir.

Sous Excel 2007

Nouveau avec Projet ambitieux trop peu être pour moi, mais bon je fonce.(Débutant en USERFORM VBA)

Je voudrai gérer mes commandes journalières avec un USERFORM.
Pouvoir alimenter une feuille Commandes (Feuil1) a partir de donnée contenus dans Clients (Feuil2) et
produits (Feuil3), plus des infos saisies au moment de la prise de commande

Un USERFORM FrmClients qui gère la Feuil Clients.
Un USERFORM FrmProduits qui gère la Feuil Produits.
Mon USERFORM FrmCommandes Gestions des Commandes

Ce lien n'existe plus

La Frame Commandes me permet de gérer les Commandes déjà effectuées.

Ce que n'arrive pas a faire :

1) Tous les jours je vide ma Feuille Commandes erreur quand je lance mon USERFORM.
car rechercher des enregistrements

2) Frame Clients deux parties
---Gestion des Clients me permet d'ajouter des Clients. OK

---Nom de Clients ComboBox devant afficher les Clients présent dans la Feuille Clients.

Idem pour Frame Produits

3) Apres saisie du Clients et Produits qui alimentent La Frame Commande avec les infos contenus dans la Feuille Clients et Produits.
Pour après compléter les infos supplémentaires

Merci de vos conseils éclairés et critiques constructives.
 
Dernière édition:

Bearn 64

XLDnaute Occasionnel
Re :Gestions de Commandes Journalieres

Bonsoir jpb388, Bonsoir le forum

Deux petites erreurs :

1) Si je choisi un produit sans avoir sélectionné un client voir fichier joint erreur. (après plusieurs appui sur échap je peut reprendre la main et fermer).

2) Puis si choix d'un client et pas de produits si je fait supprimer commande, fichier ci joint erreur2.

Merci de m'expliquer les modifs pour supprimer ces erreurs.

Derrière la gestion des commandes j'ai préparé plusieurs feuilles de tris et d'impressions.

merci de vos réponses.
 

Pièces jointes

  • erreur.jpg
    erreur.jpg
    24.1 KB · Affichages: 53
  • erreur.jpg
    erreur.jpg
    24.1 KB · Affichages: 52
  • erreur.jpg
    erreur.jpg
    24.1 KB · Affichages: 51
  • erreur2.jpg
    erreur2.jpg
    117.9 KB · Affichages: 63
  • erreur2.jpg
    erreur2.jpg
    117.9 KB · Affichages: 65
  • erreur2.jpg
    erreur2.jpg
    117.9 KB · Affichages: 65
Dernière édition:

jpb388

XLDnaute Accro
Re : [Resolu]Gestions de Commandes Journalieres

Bonjour le forum et Bearn64

Pour la 2 ème erreur j'ai rectifié, quand a la 1 ère j'ai beau rentrée des produits sans sélectionner un nom je n'ai pas de message d'erreur qui s'affiche (formulaire commande)

Peux tu revoir cela

A +
JPB
 

Pièces jointes

  • essaiGestionCommandes_Def.xlsm
    85.5 KB · Affichages: 41
  • essaiGestionCommandes_Def.xlsm
    85.5 KB · Affichages: 44
  • essaiGestionCommandes_Def.xlsm
    85.5 KB · Affichages: 43

Bearn 64

XLDnaute Occasionnel
Re : [Resolu]Gestions de Commandes Journalieres

Bonjour le Forum, Bonjour jpb388

La 1 ère erreur se produit après une ou plusieurs saisies ou suppression de ligne. Si je choisi un produit sans avoir sélectionné un client voir fichier joint erreur. (après plusieurs appui sur échap je peut reprendre la main et fermer).

Merci pour la correction de la 2 ème erreur.
 

jpb388

XLDnaute Accro
Re : [Resolu]Gestions de Commandes Journalieres

Bonjour le forum,Bean64
ci joint le fichier
teste le
demain jusqu'à vendredi inclus je serai absent
 

Pièces jointes

  • essaiGestionCommandes_Def.xlsm
    98.1 KB · Affichages: 83
  • essaiGestionCommandes_Def.xlsm
    98.1 KB · Affichages: 86
  • essaiGestionCommandes_Def.xlsm
    98.1 KB · Affichages: 86

Bearn 64

XLDnaute Occasionnel
Re : [Resolu]Gestions de Commandes Journalieres

Bonsoir le Forum, Bonsoir jpb388

Apres un long moment de test et d'avancement du projet je reviens pour quelques questions.

Quand on supprime une commande le client "nom prénom date" reste visible dans la liste de sélection du client. (si l'on ferme et l'on ré ouvre Ok).

Merci pour votre réponse.
 

Bearn 64

XLDnaute Occasionnel
Re : Gestions de Commandes Journalieres

Bonsoir le Forum, Bonsoir jpb388

Merci de cette réponse rapide et pertinente. Modif faite OK

Le 23/07/2013 18h44 je te soumettais une erreur Valeur de propriété non valide OK.
Si je choisi un client et clique sur produit sans en sélectionner un le message apparaît.

Je clique sur Ok deux fois et le message disparaît je sélectionne un produit puis je "supprime commande" ok.

A++
 

Bearn 64

XLDnaute Occasionnel
Re : Gestions de Commandes Journalieres

Bonjour jpb388, Bonjour le Forum

Me revoilà tout est ok juste une petite info.

Est-il possible de forcer la saisie de Qte et taille a numérique?
Pour Taille et en fonction du champ catégorie n'autoriser que certaines valeurs. avec affichage popup d'info au moment de la saisie.


Ex : Catégorie est C001 donc Taille peut être 1 ou 2 ou 4 ou 6 ou 8 ou 10 ou 12

Si Catégorie est C002 donc Taille peut être 1 ou 2 ou 4

Si Catégorie est C003 donc Taille peut être 1

Merci pour votre réponse.
 

jpb388

XLDnaute Accro
Re : Gestions de Commandes Journalieres

Bonjour à tous,Béarn

pour le numérique
a mettre dans le module de classe "CTextbox"

Code:
Private Sub Txt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Left(Txt.Name, 3) = "Qte" Or Left(Txt.Name, 6) = "Taille" Then
    If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End If
End Sub

pour le texte
remplacer la macro existante dans le module de classe "cCombo" par celle ci
Code:
Sub AfficheProduitsCommandes(Cbo As Control)
If Cbo.ListIndex = -1 Then Exit Sub
Dim Usf As MSForms.UserForm, Pre$
Set Usf = Cbo.Parent
        Lg = Cbo.ListIndex + 2
Select Case Cbo.Name
    Case "CboClients"
    Pre = IIf(Cbo.Parent.Name = "FrmClients", "Txt", "Eti")
        Set Sh = Sheets("Clients")
        Usf.Controls(Pre & "Nom") = Cbo.Text
        Usf.Controls(Pre & "Prenom") = Sh.Range("B" & Lg)
        Usf.Controls(Pre & "Tel") = Sh.Range("C" & Lg)
        Usf.Controls(Pre & "Adresse") = Sh.Range("D" & Lg)
        Usf.Controls(Pre & "Complement") = Sh.Range("E" & Lg)
        Usf.Controls(Pre & "CP") = Sh.Range("F" & Lg).Text
        Usf.Controls(Pre & "Ville") = Sh.Range("G" & Lg).Value
        If Cbo.Parent.Name = "FrmCommandes" Then
            LireCommandesInscrite Cbo
        End If
     Case "CboProduits"
        Set Sh = Sheets("Produits")
        If Cbo.Parent.Name = "FrmProduits" Then
            Usf.TxtProduits = Usf.CboProduits.Text
            Usf.TxtCategorie = Sh.Cells(Lg, 2)
        End If
    Case "Produits1", "Produits2", "Produits3", "Produits4", "Produits5", "Produits6", "Produits7", "Produits8", "Produits9", "Produits10", "Produits11", "Produits12"
            Dim i%
            i = Right(Cbo.Name, Len(Cbo.Name) - 8)
            Usf.Controls("EtiCategorie" & i) = Sheets("Produits").Cells(Cbo.ListIndex + 2, 2)
           Select Case Usf.Controls("EtiCategorie" & i).Caption
                Case "C001"
                    Usf.Controls("Taille" & i).ControlTipText = "1 ou 2 ou 4 ou 6 ou 8 ou 10 ou 12"
                Case "C002"
                    Usf.Controls("Taille" & i).ControlTipText = "1 ou 2 ou 4"
                Case "C003"
                     Usf.Controls("Taille" & i).ControlTipText = "1"
           End Select
            Usf.Controls("Qte" & i).SetFocus
    End Select
End Sub
 

Bearn 64

XLDnaute Occasionnel
Re : Gestions de Commandes Journalieres

Bonjour jpb388, Bonjour le Forum

Merci de ta reactivité.

Est-il possible de forcer la saisie de
Qte uniquement numérique et jusqu'à 999 max.

Taille a numérique avec les valeurs si dessous en fonction de la Categorie.
Pour Taille et en fonction du champ catégorie n'autoriser que certaines valeurs.
Affichage popup d'info au moment de la saisie. (si l'on arrive sur Taille avec la touche Tab pas d'affichage)

Si je saisi 3 par exemple refus de passer au textbox suivant.

Ex :
Si Catégorie est C001 donc Taille peut être 1 ou 2 ou 4 ou 6 ou 8 ou 10 ou 12
Si Catégorie est C002 donc Taille peut être 1 ou 2 ou 4
Si Catégorie est C003 donc Taille peut être 1

Merci pour votre réponse.
 

jpb388

XLDnaute Accro
Re : Gestions de Commandes Journalieres

Bonjour Béarn,le forum
elles vont toutes dans le module de classe cTextbox

celle ci remplace l'existante (gère le numérique)
Code:
Private Sub Txt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Left(Txt.Name, 3) = "Qte" Then
   Select Case KeyAscii
    Case Is < 48, Is > 57
        KeyAscii = 0
    Case Else
       If Len(Txt.Value) = 3 Then KeyAscii = 0
    End Select
End If
If Left(Txt.Name, 6) = "Taille" Then
    Select Case FrmCommandes.Controls("EtiCategorie" & Right(Txt.Name, Len(Txt.Name) - 6)).Caption
        Case "C001"
            Select Case KeyAscii
                Case 48, 49, 50, 52, 54, 56 ' 1 ou 2 ou 4 ou 6 ou 8 ou 10 ou 12
                    If Len(Txt.Value) > 1 Then If Txt.Value & KeyAscii <> 10 Or Txt.Value & KeyAscii <> 12 Then KeyAscii = 0
                Case Else
                    KeyAscii = 0
            End Select
        Case "C002"
            Select Case KeyAscii
                Case 49, 50, 52  ' 1 ou 2 ou 4
                    If Len(Txt.Value) = 1 Then KeyAscii = 0
                Case Else
                    KeyAscii = 0
            End Select
        Case "C003"
            Select Case KeyAscii
                Case 49
                    If Len(Txt.Value) = 1 Then KeyAscii = 0
                Case Else
                    KeyAscii = 0
            End Select
        Case Else
            If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
  End Select
End If
End Sub

rajouter celle la
l'affichage de l'info bulle se fait uniquement avec la souris pour le déplacement avec la touche tab j'ai opté pour la statusBar seul moyen non contraignant d'afficher un message (pas d'appui sur un OK ou autre)

Code:
Private Sub Txt_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim i%
If Left(Txt.Name, 6) = "Taille" Then
    i = Right(Txt.Name, Len(Txt.Name) - 6)
    Select Case FrmCommandes.Controls("EtiCategorie" & i).Caption
     Case "C001"
        Application.StatusBar = "1 ou 2 ou 4 ou 6 ou 8 ou 10 ou 12"
     Case "C002"
        Application.StatusBar = "1 ou 2 ou 4"
     Case "C003"
        Application.StatusBar = "1"
    End Select
End If
End Sub
Private Sub Txt_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Left(Txt.Name, 6) = "Taille" Then Application.StatusBar = False
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 067
Membres
103 451
dernier inscrit
Souleymane