Aide bon de commande

  • Initiateur de la discussion Initiateur de la discussion Kim75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kim75

XLDnaute Occasionnel
Bonjour à tous,

Dans la rubrique “Téléchargements”, j’ai trouvé un vieux classeur qui correspond à mes tâches de gestion de commandes :

Excel Downloads - Commandes

J’ai tenté d’adapter le code en essayant de le paramétrer du mieux possible à la structure de mon classeur, mais ça fonctionne mal.

Ce serait sympa si quelqu’un, connaissant un peu ce classeur, pouvait y jeter un coup d’œil :

  • Toutes les données entrées dans la feuille ‘Saisie_Commande’ sont correctement reportées sur la feuille Listing, cependant dans cette même feuille ‘Listing’ je remarque que :
    - le nombre 3,3 s’inscrit étrangement dans la cellule IO3.
    - la forme des cellules A3 et B3 diffèrent de celle des autres cellules C3, D3 etc.
  • Après avoir cliqué sur le bouton ‘ENREGISTRER’ de la feuille Saisie_Commande, les donnés entrées ne s’y effacent pas automatiquement.
  • Le Bouton Toupie de la feuille ‘Visual_Commande’ n’a pas l’air de fonctionner.
  • Je ne me sers pas des colonnes I (livré le) et J (payé le) de la feuille ‘Listing’, que je n’ai pas reproduites dans mon classeur, et dont le code peut être de trop.
  • Ce serait inespéré d’avoir un récapitulatif mensuel des commandes, avec les principales données A3 à J3 de la feuille ‘Listing’, ainsi que l'évolutionla du CA et sa répartition par gamme de produit, mais bon, c’est une autre paire de manche.
Cordialement, Kim.
 
Dernière édition:
Re : Aide bon de commande

bonjour Kim
Cijoint.fr - Service gratuit de dépôt de fichiers
changement effectué
2 lignes en fin de code(evaluate et sumproduct)
met le total du mois présent dans la feuille cadumois,colonne c
à bientôtc
 
Re : Aide bon de commande

bonsoir Bebere, bonsoir à tous,

j'ai essayé le classeur que tu mets en ligne mais il ne fonctionne pas, je me demande comment ton essai du mois de janvier a fonctionné.

j'ai tenté avec le mois de février, mars et encore janvier, mais les données se reportent en dehors du cadre prévu, à partir de la ligne 56.

je redonne tout de même le lien du classeur déjà fonctionnel pour le CA mensuel par gamme, et auquel manque l'évolution annuelle du CA.



bien à toi, Kim
 
Re : Aide bon de commande

bonsoir Bebere, bonsoir à tous,

pour calculer les chiffres d’affaire des mois de janvier à décembre :



j’ai employé, pour les cellules de B47 à B58 de la feuille CA_du_Mois, les formules suivantes :

=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=1)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=2)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=3)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=4)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=5)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=6)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=7)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=8)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=9)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=10)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=11)*Listing!$J$3:$J$5000)
=SOMMEPROD((MOIS(Listing!$B$3:$B$5000)=12)*Listing!$J$3:$J$5000)

Le problème est que si on saisit un nouveau BdC, cela rajoute une ligne dans la feuille listing, et ces formules changent d’écriture en faussant finalement le calcul :

=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=1)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=2)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=3)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=4)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=5)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=6)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=7)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=8)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=9)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=10)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=11)*Listing!$J$4:$J$5001)
=SOMMEPROD((MOIS(Listing!$B$4:$B$5001)=12)*Listing!$J$4:$J$5001)

Kim
 
Re : Aide bon de commande

bonjour Kim
Cijoint.fr - Service gratuit de dépôt de fichiers
vois si cela te convient
dans module2,ton code est en commentaire
tu as le choix
j'ai changé L
si tu prends la version formule,emploi de décaler

à bientôt
 
Re : Aide bon de commande

bonsoir Bebere, le forum,

ton code marche très bien, je t’en remercie infiniment :



le seul souci est quand on affiche la msgbox de la feuille CA_du_Mois, que l’on n’y inscrit rien et que l’on clique sur Ok ou Annuler, on a une erreur d’exécution 13 et bogue, je me demandais si on ne pouvait pas mettre une liste déroulante avec les mois préinscrits au lieu du choix de mois via msgbox, cela évitera ces problèmes de msgbox

aussi, j’ai protégé les feuilles Visual_Commande, Listing et CA_du_mois, en mettant dans ThisWorkbook le code :

PHP:
Private Sub Workbook_Open()
  With Sheets("Listing")
  .Protect UserInterfaceOnly:=True
  End With
  With Sheets("CA_du_Mois")
  .Protect UserInterfaceOnly:=True
  End With
  With Sheets("Visual_Commande")
  .Protect UserInterfaceOnly:=True
  End With
End Sub



je l’ai testé en saisissant de nouveaux BdC, et ça marche, le seul souci est que le spinbutton de la feuille Visual_Commande reste verrouillé, même si on attribue à la feuille

PHP:
  End With
  With Sheets("Visual_Commande")
  .Protect DrawingObjects:=False, UserInterfaceOnly:=True
  End With

bien à toi, Kim.
 
Dernière édition:
Re : Aide bon de commande

Bonjour à tous,

Au cas où ça pourait servir, le plantage de la msgbox quand click sur Annuler ou Ok (avec valeur vide) a été remédié en remplaçant :

PHP:
Sub CAduMois()
Dim LaDate As Range, MonMois As Byte, I As Long, L As Long

Par :

PHP:
Sub CAduMois()
On Error Resume Next
Dim LaDate As Range, MonMois As Byte, I As Long, L As Long

Pour le déblocage du SpinButton de la feuille Visual_Commande, il suffisait de déprotéger la cellule K2 de la même feuille.

Kim.
 
Dernière édition:
Re : Aide bon de commande

Bonsoir à tous,

Pour voir si ça marche, j’ai repris le code de la macro Sub Modifier_Click() (la 2em macro du module 1) à partir du code de la macro Sub Enregistrer_Click() et sur la base de la constante 5, et ça marche tant qu'il s'agit de 5.



Mais la feuille “Modifier_Commande” n’est pas appelée à ne modifier que le bon de commande n°5, elle doit pouvoir modifier tout bon de commande dont le n° est entré dans la cellule K2 de la même feuille “Modifier_Commande”.

Ce serait vraiment sympa si quelqu’un pouvait aider à corriger le code de cette macro, Sub Modifier_Click(), en ce sens que la constante 5 soit substituée par une variable, en l’occurrence la valeur entrée dans la cellule K2.

Aussi, le “5” de la macro actuelle fait référence à la 5em ligne à partir du haut du tableau, ce qu’il faudrait c’est que la valeur entrée dans la cellule K2 soit interprétée comme étant la 5em ligne avant la dernière ligne non vide de la feuille “Listing”.

Par avance merci, Kim.
 
Dernière édition:
Re : Aide bon de commande

Bonsoir Bebere, bonsoir à tous,

Le code suivant que tu as fait, pour lequel je te remercie infiniment, part de la variable entrée dans sa cellule K2, la cherche dans la première colonne de la Feuille Listing pour ensuite déposer dans les colonnes B,C,D… de la ligne correspondante les valeurs de O2,I4,O4…, le code fonctionne parfaitement :

PHP:
Sub Modifier_Click()
Worksheets("Listing").Activate
ActiveSheet.Unprotect
    Set cel = Columns(1).Find(Range("Modifier_Commande!K2"))
    If Not cel Is Nothing Then
        L = cel.Row
        Else
        MsgBox "n° de commande inexistant"
        Worksheets("Modifier_Commande").Activate
        Exit Sub
    End If
    'Coordonnées
    Range("B" & L).Formula = "=Modifier_Commande!O2"
    Range("C" & L).Formula = "=Modifier_Commande!I4"
    Range("D" & L).Formula = "=Modifier_Commande!O4"
    'etc les coordonnées sont nombreuses
Rows("5:5").EntireRow.AutoFit
Rows(L).Copy
Rows(L).PasteSpecial Paste:=xlValues
madate = Range("B" & L)
Range("IU" & L) = Month(madate) * 1.1
End Sub
Ce que je cherchais en fait, c’est faire un bouton/macro qui servira à afficher la commande avant de la modifier, c'est-à-dire qui part de la variable entrée dans Feuille Modifier_Commande cellule K2, la cherche dans la première colonne de la Feuille Listing, récupère les valeurs trouvées dans les colonnes B,C,D… de la ligne correspondante, afin de les déposer dans les cellules O2,I4,O4… de la feuille Modifier_Commande, le code suivant permet de le faire :

PHP:
Sub Afficher_Click()
With Sheets("Listing")
.Unprotect
Set cel = .Columns(1).Find(Sheets("modifier_commande").Range("K2"))
If Not cel Is Nothing Then
L = cel.Row
Else
MsgBox "n° de commande inexistant"
Exit Sub
End If
End With
With Sheets("Modifier_Commande")
    'Coordonnées
    .Range("O2").Value = Worksheets("Listing").Range("B" & L)
    .Range("I4").Value = Worksheets("Listing").Range("C" & L)
    .Range("O4").Value = Worksheets("Listing").Range("D" & L)
    'etc les coordonnées sont nombreuses
End With
End Sub

Bien à toi, Kim.
 
Dernière édition:
Re : Aide bon de commande

Bonsoir à tous,

Voilà, ce classeur de gestion de bon de commande est pratiquement fini, grâce à Thierry DESTABEAU, Bebere, papounet, et les autres que je remercie bien, je le remets en ligne, ça pourrait servir à d'autres :

Cijoint.fr - Service gratuit de dépôt de fichiers

Cependant il reste quelques points à régler si quelqu’un pouvait le faire :

  1. Dans la cellule E11 (Section) de la feuille Saisie_Commande, je dois mettre la formule :

    =SI(E9="";"";INDEX(Section;EQUIV(E9;Bénéficiaire;0)))

    Le problème est que cette formule s’efface si l’on entre dans la cellule E11 une valeur autre que celle de la liste.

    Je l’ai mise à la fin du code de la macro "Sub _Enregistrer_Click()" du module 1 du classeur, mais elle plante, sans doute parce que sa forme ne convient pas :

    PHP:
    With Worksheets("Saisie_Commande") 'vidage des zones de saisie après enregistrement
        .Activate
        .Unprotect
    
    
        .Range("E11").Formula = "=SI(E9="";"";INDEX(Section;EQUIV(E9;Bénéficiaire;0)))"
    
    
        .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        Exit Sub
    End With
  2. Pour éviter que la feuille Listing s'affiche (quelques fractions de seconde) pendant le traitement de l’enregistrement, j’ai mis (.Visible = False) et (.Visible = True) en début et en fin de la macro "Sub _Enregistrer_Click()" du module 1 du classeur, mais ça provoque un plantage.

  3. Un troisième point, sans grande importance, mais utile esthétiquement, serait de diminuer la durée du traitement de la macro "Sub _Enregistrer_Click()" si cela est possible.
Thanks, Kim.
 
Re : Aide bon de commande

bonjour Kim
si tu mets la formule,comme suit
#.Range("E11").FormulaLocal = "=SI(E9;"""";INDEX(Section;EQUIV(E9;Bénéficiaire;0)))"#
ou
#=SI(ESTNA(EQUIV(E9;Bénéficiaire;0));"""";INDEX(Section;EQUIV(E9;Bénéficiaire;0)))#
ou
#.Range("E11").Formula = "=If(ESTNA(EQUIV(E9,Bénéficiaire;0)),"""",INDEX(Section,EQUIV(E9,Bénéficiaire,0)))"#
écrit comme suit
début
Worksheets("Listing").Rows("3:3").Select
Worksheets("Listing").Visible = False
fin
Worksheets("Listing").Visible = True

à bientôt
 
Re : Aide bon de commande

Bonjour Bebere, bonjour à tous,

Merci beaucoup pour la formule, ça fonctionne bien :

.Range("E11").FormulaLocal = "=SI(ESTNA(EQUIV(E9;Bénéficiaire;0));"""";INDEX(Section;EQUIV(E9;Bénéficiaire;0)))"

Pour ce qui est des "Worksheets("Listing").Visible = False et True", j'ai mis Worksheets("Listing").Activate à la place de Worksheets("Listing").Select, et ça marche à peu près :

Sub Enregistrer_Click()
Worksheets("Listing").Visible = False
ActiveSheet.Unprotect
Worksheets("Listing").Activate
Worksheets("Listing").Rows(3).Select

'........

madate = Range("B3")
Range("IU3") = Month(madate) * 1.1
Worksheets("Listing").Visible = True

Voilà donc prête dans la version finale du classeur, la précédente version portait une erreur que j’ai corrigée, maintenant c’est bon.

Cijoint.fr - Service gratuit de dépôt de fichiers

Bien à toi, Kim.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
947
Retour