personnaliser un bon de commande/association

averty

XLDnaute Junior
Bonjour à tous
je reviens vers vous qui m'avez plusieurs fois aidé lorsque je ne m'en sortais pas tout seul.
je voudrais, à partir du classeur joint:
-saisir autant de bons de commandes que de familles qui répondent (ça pourrait aller jusqu'à 50 ou 60 il me semble
-une fois les commandes saisies, éditer un bon par famille (même s'ils sont tous ensemble) qui ne garde que les lignes des articles commandés.

J'ai essayé plusieurs trucs mais je n'arrive pas à synthétiser tout ça alors je bidouille avec des copier/coller que je colle les uns à côté des autres. Je me dis qu'on doit pouvoir faire plus efficace et c'est là que je suis coincé et que j'aurais besoin de vos lumières.
Je pense que j'arriverai plus facilement à faire un bon de commande synthétique qui totalisera les commandes individuelles.
Merci pour votre aide
 

Pièces jointes

  • commande NOËL 2017.xlsx
    60 KB · Affichages: 63

youky(BJ)

XLDnaute Barbatruc
Bonjour averty,
Voici un beau cadeau de Noel en avance, j'ai fait un fichier avec macro ou tout fonctionne comme tu le souhaite je pense....
il faudra bien activer les macros à l'ouverture du fichier passé en .xlsm au lieu .xlsx
Si pas de message activer les macros il faudra aller dans les options pour régler la sécurité.
Si PB ou renseignements reviens ici
Bruno
 

Pièces jointes

  • commande NOËL 2017.xlsm
    50.9 KB · Affichages: 50

vgendron

XLDnaute Barbatruc
Hello
Hello Youky
un début de piste ici
VB:
Sub BonDeCommande()
Application.ScreenUpdating = False

NbBon = WorksheetFunction.CountA(Sheets("SAISIE COMMANDES").Rows(2)) - 1
NbLigne = Range("D" & Rows.Count).End(xlUp).Row

ActiveSheet.Range("$B$8:$N$299").AutoFilter
For i = 1 To NbBon
    ActiveSheet.Copy after:=Worksheets("SAISIE COMMANDES")
    ActiveSheet.Name = "Famille " & i
    Range("I2") = "FAMILLE " & i
    Range("A:E").Clear
    Range("L:L").Resize(, (NbBon - 1) * 3).Delete
    Rows("9:" & NbLigne).Delete
  
    Sheets("SAISIE COMMANDES").Activate
    colonne = 7 + i * 3 - 1
    ActiveSheet.Range("$B$8:$N$299").AutoFilter Field:=colonne, Criteria1:="<>"
    ActiveSheet.Columns(colonne).Resize(, 3).SpecialCells(xlCellTypeVisible).Copy

    With Sheets("Famille " & i)
        .Range("I:K").PasteSpecial
    End With
    Sheets("SAISIE COMMANDES").Activate
  
    ActiveSheet.Range("$B$8:$N$299").AutoFilter
Next i
Application.ScreenUpdating = True
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Dans les boutons Imprime je vais seulement en Aperçu avant Impression sans imprimer.
Pour imprimer il suffit ensuite de cliquer dans cette fenêtre sur imprimer,..... si on le souhaite.
Dans les macros je peux lui dire d'imprimer direct sans l'aperçu avant impression mais je préfère procéder ainsi comme cela on voit si c'est bon.
Je te remets un second fichier avec quelques plus et corrections effectuées.
Certaines de tes cellules paraissaient vide mais non (sans doute des espaces).
j'ai couplé un combobox (à droite)pour facilité le choix des familles, c'est pas sur que cela fonctionne chez toi
Si marche pas on supprimera ce combobox
Bonjour à vgendron........j'ai pas trop compris mais je pense que tu es parti du principe que les tableaux se suivent dans l'onglet famille 1 à famille 50.

Bruno
 

Pièces jointes

  • commande NOËL 2017.xlsm
    55.7 KB · Affichages: 39

averty

XLDnaute Junior
Hello
Hello Youky
un début de piste ici
VB:
Sub BonDeCommande()
Application.ScreenUpdating = False

NbBon = WorksheetFunction.CountA(Sheets("SAISIE COMMANDES").Rows(2)) - 1
NbLigne = Range("D" & Rows.Count).End(xlUp).Row

ActiveSheet.Range("$B$8:$N$299").AutoFilter
For i = 1 To NbBon
    ActiveSheet.Copy after:=Worksheets("SAISIE COMMANDES")
    ActiveSheet.Name = "Famille " & i
    Range("I2") = "FAMILLE " & i
    Range("A:E").Clear
    Range("L:L").Resize(, (NbBon - 1) * 3).Delete
    Rows("9:" & NbLigne).Delete
 
    Sheets("SAISIE COMMANDES").Activate
    colonne = 7 + i * 3 - 1
    ActiveSheet.Range("$B$8:$N$299").AutoFilter Field:=colonne, Criteria1:="<>"
    ActiveSheet.Columns(colonne).Resize(, 3).SpecialCells(xlCellTypeVisible).Copy

    With Sheets("Famille " & i)
        .Range("I:K").PasteSpecial
    End With
    Sheets("SAISIE COMMANDES").Activate
 
    ActiveSheet.Range("$B$8:$N$299").AutoFilter
Next i
Application.ScreenUpdating = True
End Sub
Merci,
je vais essayer maintenant de garder les liaisons avec le descriptif des articles, les quantités commandées et les prix et cumuls de prix dans chaque onglet.
Je te tiens au courant de mes "progrès"...
 

averty

XLDnaute Junior
Merci,
je vais essayer maintenant de garder les liaisons avec le descriptif des articles, les quantités commandées et les prix et cumuls de prix dans chaque onglet.
Je te tiens au courant de mes "progrès"...
Re
j'ai réussi à faire référence aux cellules d'une feuille "constante" (onglet "listes") ce qui fait que ça reporte aussi le descriptif et le prix des articles. Du coup, je suis putto content car ça s'approche de ce que je souhaitais.
Une petite amélioration si possible: peut-on lors de l'exécution de la macro générale, ne reporter que les 3 colonnes de chaque bon de commande?
merci pour tout
 

Pièces jointes

  • commande NOËL 2017 copie.xlsm
    109.1 KB · Affichages: 37

youky(BJ)

XLDnaute Barbatruc
Bonjour averty,
Désolé du retard,
Je ne comprends pas trop, mon fichier joint réponds bien à la demande
de plus il est simple d'emploi (complément de commande facile, impression géré)
Tu parles de PC mac et les macros sous mac ne fonctionnent pas ou mal.
As-tu testé mon fichier sous Windows . . .
Je peux toujours apporter des + si besoin (en utilisation Windows.)
Sans doute ton dernier fichier peut être utilisé sous Mac mais je ne peux pas tester.
Bruno
 

Discussions similaires

Réponses
21
Affichages
917
  • Résolu(e)
Microsoft 365 Bon de commandes
Réponses
6
Affichages
842
Réponses
4
Affichages
311

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 864
dernier inscrit
abderrashmaen