Bonjour,
Je souhaiterais imprimer 2 cellules "K40 + K41" depuis un bouton rapide avec pour nombre de copies ce qui est affiché dans la cellule C2.
Le petit problème est que quand il y a un 0 dans cette cellule C2, la macro ne veut pas imprimer les autres demandes qui elles ne sont pas à 0...
Impression K40+K41 depuis C2
Impression L40+L41 depuis C4
Impression M40+M41 depuis C6
Impression N40+N41 depuis C8
Est ce que quelqu'un pourrait me donner l'astuce pour que quand il y a 0 dans une des cellules (C2/C4/C6/C8) le reste s'imprime quand même SVP
Voici ma formule d'impression pour le moment :
Sub Impression()
ActiveSheet.PageSetup.PrintArea = "$K$40:$K$41"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C2")
ActiveSheet.PageSetup.PrintArea = "$L$40:$L$41"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C4")
ActiveSheet.PageSetup.PrintArea = "$M$40:$M$41"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C6")
ActiveSheet.PageSetup.PrintArea = "$N$40:$N$41"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C8")
ActiveSheet.PageSetup.PrintArea = "$K$45:$K$46"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C10")
ActiveSheet.PageSetup.PrintArea = "$L$45:$L$46"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C12")
ActiveSheet.PageSetup.PrintArea = "$M$45:$M$46"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C14")
ActiveSheet.PageSetup.PrintArea = "$N$45:$N$46"
ActiveWindow.SelectedSheets.PrintOut Copies:=Range("C16")
End Sub
C'est que j'ai mal compris, la formule que j'ai mise reprend les valeurs du haut, je n'avais pas compris que s'était un cumul général, je reprends cela.
Salut wDog66,
Je dois copier ta formule à quel niveau dans mes formules?
Je viens de faire cette formule mais si en C4 j'ai 0 ca ne veut pas m'imprimer le nombre de copies que j'ai en C6
Je viens de copier votre formule et ca ne fonctionne pas plus que ca...
En C2 j'ai le chiffre 2, ca m'imprime bien 2 copies des cellules associées, en C4 j'ai le chiffre 0 et ca m'imprime quand même une page avec les cellules qui lui sont associées aussi et ainsi de suite...
Ma demande étant de ne pas imprimer C4 vu que le chiffre est 0
Bonjour à toutes & à tous, bonjour @Steven36600 , @wDog66
vous pédalez un peu vite pour moi !
voilà ce que je propose :
VB:
Sub Impression()
With Sh2Print 'nom VB de la feuille à imprimer (voir dans la fenêtre Propriété)
If .[C2] > 0 Then .PageSetup.PrintArea = "$K$40:$K$41": .PrintOut Copies:=.[C2]
If .[C4] > 0 Then .PageSetup.PrintArea = "$L$40:$L$41": .PrintOut Copies:=.[C4]
If .[C6] > 0 Then .PageSetup.PrintArea = "$M$40:$M$41": .PrintOut Copies:=.[C6]
If .[C8] > 0 Then .PageSetup.PrintArea = "$N$40:$N$41": .PrintOut Copies:=.[C8]
If .[C10] > 0 Then .PageSetup.PrintArea = "$K$45:$K$46": .PrintOut Copies:=.[C10]
If .[C12] > 0 Then .PageSetup.PrintArea = "$L$45:$L$46": .PrintOut Copies:=.[C12]
If .[C14] > 0 Then .PageSetup.PrintArea = "$M$45:$M$46": .PrintOut Copies:=.[C14]
If .[C16] > 0 Then .PageSetup.PrintArea = "$N$45:$N$46": .PrintOut Copies:=.[C16]
End With
End Sub
voir le fichier joint (je n'ai pas encore regarder le fichier du post #7)
Re
Voilà ce que j'ai fait avec ton fichier :
j'ai nommé toutes les images :
Sandwich plus
Sandwich moins
Menu_Enfant plus
Menu_Enfant moins
Frites plus
Frites moins
Chips plus
Chips moins
Soft plus
Soft moins
Eau plus
Eau moins
Vin plus
Vin moins
Bière plus
Bière moins
Btn RàZ
Btn Imprimer
J'ai modifier ta macro d'impression (cf celle de mon post précédent) :
VB:
Sub Impression()
With Sh2Print 'nom VB de la feuille à imprimer (voir dans la fenêtre Propriété de la feuille)
If .[C2] > 0 Then .PageSetup.PrintArea = "$K$40:$K$41": .PrintOut Copies:=.[C2]
If .[C4] > 0 Then .PageSetup.PrintArea = "$L$40:$L$41": .PrintOut Copies:=.[C4]
If .[C6] > 0 Then .PageSetup.PrintArea = "$M$40:$M$41": .PrintOut Copies:=.[C6]
If .[C8] > 0 Then .PageSetup.PrintArea = "$N$40:$N$41": .PrintOut Copies:=.[C8]
If .[C10] > 0 Then .PageSetup.PrintArea = "$K$45:$K$46": .PrintOut Copies:=.[C10]
If .[C12] > 0 Then .PageSetup.PrintArea = "$L$45:$L$46": .PrintOut Copies:=.[C12]
If .[C14] > 0 Then .PageSetup.PrintArea = "$M$45:$M$46": .PrintOut Copies:=.[C14]
If .[C16] > 0 Then .PageSetup.PrintArea = "$N$45:$N$46": .PrintOut Copies:=.[C16]
End With
End Sub
J'ai supprimé toutes tes macros "lepousse" que j'ai remplacées par une seule :
VB:
Sub Change()
Const col = 3
Dim Cible As Range
Btn = Application.Caller
lgn = Sh2Print.Shapes(Btn).TopLeftCell.Row
tb = Split(Btn, " ")
Set Cible = Sh2Print.Cells(lgn, col)
If tb(1) = "plus" Then Cible = Cible + 1
If tb(1) = "moins" Then Cible = WorksheetFunction.Max(0, Cible - 1)
End Sub
En mettant un planché =0 au nombre contenu dans les cellules Ci (pas de commande négative)
J'ai réécrit ta macro RàZ :
VB:
Sub RaZ()
With Sh2Print
Union(.[C2], .[C4], .[C6], .[C8], .[C10], .[C12], .[C14], .[C16]).Value = 0
End With
End Sub
j'ai modifié le contenu des cellules B reprenant les nombres commandés avec la formule :
Enrichi (BBcode):
=RECHERCHEV($A30;$A$2:$C$16;3;FAUX)
tirée vers le bas de B30 à B37
remarque : ne faudrait-il pas créer un seul ticket avec tous les produits de la commande plutôt que n tickets ?
mais ça c'est toi qui vois ...
Je sais pas comment te dire merci la!!!!!!
Il y aura plusieurs tickets car la buvette et la tente repas ne seront pas au même endroit.
C'est parfait, il y a juste un tout petit soucis que je n'arriverais jamais à régler dans tes lignes de commandes...
Sur le sandwich, le + et le - ne se cumule pas comme les autres sur la cellule C30 et une fois que j'appuies sur la poubelle, ca me supprime toutes les quantités cumulées dans le tableau du bas...
Et petite question : vu que c'est un test pour un évènement mais qu'il y aura surement d'autres choses à rajouter, je fais comment?
C'est que j'ai mal compris, la formule que j'ai mise reprend les valeurs du haut, je n'avais pas compris que s'était un cumul général, je reprends cela.
Il n'y a que 3 macros à adapter, et à nommer les nouvelles images que tu ajouteras en respectant le principe que j'ai adopté (Nom_Du_Produit_sans_espacesespaceplus ou moins) et leur affecter la macro "Change"
Voilà une version qui prend en compte les deux 1er points, j'ai commenté les macros pour démystifier tout cela.
Macro d'impression :
VB:
Sub Impression()
'J'ai modifié le nom VB de la feuille à imprimer dans la fenêtre Propriété de cette feuille
'voir en bas à gauche la 1ère propriété "(name)" son nom est "Sh2Print"
'Pour chacune des cellules "C2", "C4", "C6", "C8", "C10", "C12", "C14", "C16" de la feuille Sh2Print
'si la cellule contient un nombre positif, on définit la zone d'impression et on imprime
With Sh2Print
If .[C2] > 0 Then .PageSetup.PrintArea = "$K$40:$K$41": .PrintOut Copies:=.[C2] ', Preview:=True 'Si aperçu avant impression
If .[C4] > 0 Then .PageSetup.PrintArea = "$L$40:$L$41": .PrintOut Copies:=.[C4] ', Preview:=True
If .[C6] > 0 Then .PageSetup.PrintArea = "$M$40:$M$41": .PrintOut Copies:=.[C6] ', Preview:=True
If .[C8] > 0 Then .PageSetup.PrintArea = "$N$40:$N$41": .PrintOut Copies:=.[C8] ', Preview:=True
If .[C10] > 0 Then .PageSetup.PrintArea = "$K$45:$K$46": .PrintOut Copies:=.[C10] ', Preview:=True
If .[C12] > 0 Then .PageSetup.PrintArea = "$L$45:$L$46": .PrintOut Copies:=.[C12] ', Preview:=True
If .[C14] > 0 Then .PageSetup.PrintArea = "$M$45:$M$46": .PrintOut Copies:=.[C14] ', Preview:=True
If .[C16] > 0 Then .PageSetup.PrintArea = "$N$45:$N$46": .PrintOut Copies:=.[C16] ', Preview:=True
End With
End Sub
(Si tu veux un aperçu avant impression enlève le ' juste avant Preview:=True)
Macro de modification Plus ou Moins :
VB:
Sub Change()
Const col = 3 'N° de la colonne "C"
Dim Cible As Range, Plage_Cumul As Range, Cumul As Range
Dim Produit$, tb
'Plage des cumuls (titres de ligne et cumuls inclus) à adapter si plus de produits :
Set Plage_Cumul = Sh2Print.[A30:B37]
'Nom du Bouton (image) ayant lancer la macro
Btn = Application.Caller
'N° de la ligne contenant le bouton appelant
lgn = Sh2Print.Shapes(Btn).TopLeftCell.Row
'Hachage du nom du bouton dans le tableau tb (séparateur espace)
tb = Split(Btn, " ") '(élément 0 = produit avec espaces remplacés par des _, élément 1 = "plus" ou "moins")
'Cellule cible du haut
Set Cible = Sh2Print.Cells(lgn, col)
'Cellule cible du bas
'on remplace dans tb(0) les _ par des espaces
Produit = Replace(tb(0), "_", " ")
'on recherche le résultat dans la 1ère colonne de la plage "Plage_Cumul"
lgn = WorksheetFunction.Match(Produit, Plage_Cumul.Columns(1), 0)
'on récupére la cellule corespondante dans la 2ème colonne)
Set Cumul = Plage_Cumul.Cells(lgn, 2)
'Actions en fonction du type de bouton appelant
Select Case tb(1)
Case "plus" 'il s'agit d'un bouton "plus"
Cible = Cible + 1
Cumul = Cumul + 1
Case "moins" 'il s'agit d'un bouton "moins
Cible = WorksheetFunction.Max(0, Cible - 1)
Cumul = WorksheetFunction.Max(0, Cumul - 1)
Case Else 'type de bouton inconnu
End Select
End Sub
Macro de RàZ :
VB:
Sub RaZ()
'pour l'ensemble des cellules "C2", "C4", "C6" ,"C8", "C10", "C13", "C14", "C16" de la feuille Sh2Print
'mettre une valeur nulle
With Sh2Print
Union(.[C2], .[C4], .[C6], .[C8], .[C10], .[C12], .[C14], .[C16]).Value = 0
End With
End Sub
Comme tu le vois, il n'y a pas beaucoup de changement à part la prise en compte du cumul général (cellules du bas) et les commentaires.
Essaie de faire des modifications en ajoutant des produits.