J'aimerai imprimer des liste si mon total est supérieur à 0
La cellule où se trouve le total est variable
J'aimerai imprimer des liste si mon total est supérieur à 0
La cellule où se trouve le total est variable
Est-ce que ça veut dire que tu veux lancer une impression automatiquement chaque fois que ton total passe à 0 ou est-ce que tu veux empêcher l'impression si ton total est différent de 0 ?
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Bonsoir
Je veux empêcher l'impression si mon total est à 0. Et non mon total est toujours sur la meme colonne D et pas la même cellule
Merci à vous
Pas la même ligne
Il faut que tu utilises le paramètre de la macro évènementielle Workbook_BeforePrint.
Quelque chose qui ressemble à
Cela dit, il me semble plus simple de jeter un coup d'oeil sur la case en question avant de lancer l'impression...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Workbook_BeforePrint(Cancel As Boolean) If WorkSheets("MaFeuille").Range("D10") = 0 Then Cancel = True End Sub
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Bonjour Menhir
Merci pour ta réponse
Le pb c'est que je n'ai pas qu'un seul fichier ...
Si je défini une cellule dans la formule c'est bloquant parce que du coup c'est jamais la meme ... Et j'ai des filtre qui s'applique du coup des lignes qui se masque
Et je suis perdue
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Range("D10") = 0
Dans ce cas, il faudra mettre la macro en question dans tous les fichiers concernés.
Dans ce cas, comment la macro est-elle supposée trouver la bonne cellule à tester ?Si je défini une cellule dans la formule c'est bloquant parce que du coup c'est jamais la meme ... Et j'ai des filtre qui s'applique du coup des lignes qui se masque
La fonction "boule de cristal" n'existe pas encore en VBA.
Et tu espères qu'avec le peu d'informations que tu fournis, ceux qui essayent de comprendre ton problème ne le soient pas ???Et je suis perdue
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
C'est quoi qui est incompréhensible dans mon poste??
Mon total se trouve dans la colonne D c'est la dernière ligne mais cest jamais la meme
La dernière ligne occupée de la colonne D, en VBA, ça s'écrit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(Rows.Count, 4).End(xlUp)
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Merci menhir
Du coup ça donne ça ?? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private Sub Workbook_BeforePrint(Cancel As Boolean) If WorkSheets("MaFeuille").Cells(Rows.Count, 4).End(xlUp)= 0 Then Cancel = True End Sub
Mettre un If sur la même ligne qu'un sub, ça ne va pas le faire.
Mettre un .Value après le End, ça n'est pas obligatoire mais ça serait plus sûr si la cellule contient une formule.
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Je suis sur smartphone dsl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Workbook_BeforePrint(Cancel As Boolean) If WorkSheets("MaFeuille").Cells(Rows.Count, 4).End(xlUp).value= 0 Then Cancel = True End Sub
Bonjour j'ai essayé mais je suis bloquée Ca me met un msg d'erreur comme j'ai déjà une macro je ne doit pas mettre un sub private en plus A l'intérieur je pense que c'est pour ça que je beugue?
Alors j'ai retiré le privât sub mais cela me bloque tout de même c'est le As boolean qui bloque ...
J'ai excel 2010
Je sais pas si cela a un lien
Merci pour votre aide
Peut-être que si tu prenais la peine de décrire clairement et en détail ton problème, tu pourrais avoir plus de réponses.
Personnellement, devoir te tirer les vers du nez pour obtenir des informations au compte-goutes, je m'en suis lassé.
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Bonjour Menhir tu es toujours aussi fin merci
Je veux lancer une impression que si mon total de ma dernière ligne de la colonne D soit supérieur à 0
Si il est égale à 0 je ne souhaite pas que mes listes sortent
J'ai tous jours des listes d'encaissement à traiter ce sont plusieurs listes encaissement clients fournisseurs etc.
Du coup j'ai déjà mis en place le plus gros Fr la macros qui filtre et qui tri etc
Mais mon souci c'est que ça me lance des impressions de tous mes fichiers et onglets lorsque j'en ai plusieurs
Moi ce que j'aimerais c'est que quand Ç A 0 Ca n'imprime pas
Du coup j'ai testé ce que tu m'a donner et Ça ne fonctionne pas j'ai essayé par moi même avant de venir ici
Alors oui c'est vrai je ne me connecte pas souvent car je le fais de chez moi et pas du boulot donc je mets du temps à répondre ....
Merci de m'aider
Mais pas la peine d'insinuer que je ne cherche pas ... J'attends ma formation pour mieux comprendre VBA
Vu que je viens de faire la demande ce sera pas pour le moment
Après si je vous embête dites le Ça ira plus vite
Bne fin de journée
Ca semble vouloir dire (sans que ce soit indiqué clairement ) que c'est cette macro qui lance les impressions.
On progresse.
Parce que jusqu'ici, ce que tu présentais laissait penser que l'impression était lancée manuellement.
Tu n'as pas l'impression que pour t'indiquer comment modifier ton code, il faudrait que tu montres ce code ???
C'est normal puisque c'était fait pour bloquer des impressions lancées à la main.Du coup j'ai testé ce que tu m'a donner et Ça ne fonctionne pas
Le problème n'est pas le temps de réponse mais les informations fournies.Alors oui c'est vrai je ne me connecte pas souvent car je le fais de chez moi et pas du boulot donc je mets du temps à répondre ....
Un seul message aurait sans doute suffit pour te renvoyer une réponse satisfaisante s'il avait contenu les informations nécessaires.
Jusqu'à présent, je n'ai pas insinué ça.Mais pas la peine d'insinuer que je ne cherche pas ...
Par contre, je persiste à dire que tu fais peu d'efforts pour la description de ton problème.
Il faut attendre le 10è de tes messages pour apprendre que l'impression dont tu parles était lancé par macro.
Et tu n'as pas présenté le code qui te sert à imprimer. Il semble pourtant logique que pour indiquer comment modifier ce code, il faut le connaitre, non ?
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
J'ai mis également un post sur le TCD mais je n'ai pas eu de réponse tu peux y jeter un œil menhir ?
Je m'explique
La Ç des listes de décaissement que je gére j'ai plusieurs lignes par jour
Et chaque jour c'est un nouveau fichier
Car on traite par journée comptable
Et tous les jours j'ai un nouveau fichier (on va pas décaisser la même chose tous les jours )
Bref, je crée tous les jours un TCD pour avoir les infos qui m'intéresse soir les totaux des décaissements effectué (on en a des "ordonnancé" mais non effectués)
Par chèques et virement
Voici mon code
Mais ca beugue ...
Du coup je vais retirer la dernière partie ou j'actualise car ce que j'ai compris la dernière fois comme c'est pas le TCD initiale qui doit se modifier mais bien à chaque fois un TCD et comme ma base je la change pas j'ai pas besoin de cette partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Sub G3_TCD_Decaissements_App() ' Sélection des données ActiveWorkbook.Sheets("Sheet1").Select Range("A1").Select Set objTable = Sheet1.PivotTableWizard ' Création du TCD Set objField = objTable.PivotFields("Mode règlement") objField.Orientation = xlRowField Set objField = objTable.PivotFields("Situation") objField.Orientation = xlPageField CurrentPage = "effectué" Set objField = objTable.PivotFields("Montant") objField.Orientation = xlCount objField.Function = xlSum objField.NumberFormat = "$ #,##0" ' Actualiser Range("B6").Select ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh End sub
Mais je beugue au niveau des "montant"
C'est Ca qui va pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Set objField = objTable.PivotFields("Montant") objField.Orientation = xlCount objField.Function = xlSum objField.NumberFormat = "$ #,##0"
Là, je n'arrive plus à suivre.
Tu dis que ton problème est de limiter la zone d'impression et dans ce code, je ne vois rien qui corresponde à une impression.
En plus "Ca va pas" ou "Ca beugue", tu trouves vraiment que c'est précis comme description de problème ?
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Bonsoir Menhir
Le je t'ai copier mon code concernant mon TCD et je ne l'imprime pas celui la
C'est autre chose rien avoir avec mon pb d'impression
Et quand je dis c'est Ca qui ne va pas cela veut dire que c'est à ce niveau là de ma macros qu'il y a un beugue
Un blocage
Voici ma macros où j'ai mon pb d'impression
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194 Sub A_Apporteurs() ' ' A_Apporteurs Macro ' Modification format de cells 'Sub Enter_Values() Columns("D:D").Select Selection.NumberFormat = "0.00" ' Remarque: "0.00" détermine le nombre de décimales. For Each xCell In Selection xCell.Value = xCell.Value Next xCell 'Trier par montant + format de cellule en nombre et séparateur de milliers ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D2:D4426" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A1:V4426") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("D:D,J:J").Select Range("J1").Activate Selection.NumberFormat = "#,##0.00" Range("D16").Select 'Le fameux total de colonne d: ' - colonne d : 'selectionner la ligne 65536 de la colonne e et remonter jusqu'a la cellule vide Range("e65536").End(xlUp).Offset(4, -1).Select 'faire la somme de d5 à la dernière ligne non vide du tableau ActiveCell.Formula = "=SUBTOTAL(9,D2:d" & ActiveCell.Row - 2 & ")" Selection.Font.Bold = True Range("d65536").End(xlUp).Offset(0, -1).Select ActiveCell.FormulaR1C1 = "Total" Selection.Font.Bold = True ActiveWindow.ScrollColumn = 12 'filtres à appliquer 'les colonnes à masquer Range("A:A,G:G,H:H").Select Range("H1").Activate ActiveWindow.ScrollColumn = 14 Range("A:A,G:G,H:H,J:J,N:N").Select Range("J1").Activate Selection.EntireColumn.Hidden = True ' Macro_form_cell Macro Range("E19").Select Columns("L:L").EntireColumn.AutoFit Columns("N:N").EntireColumn.AutoFit Columns("M:M").EntireColumn.AutoFit 'mise en page, insertion des 3 lignes + insertion du titre + forme Rows("1:1").Select Range("B1").Select Range("B1").Activate Rows("1:1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("b1").Select ActiveCell.FormulaR1C1 = "Encaissements apporteurs du" Selection.Font.Bold = True With Selection.Font .Name = "Arial" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone ActiveSheet.Range("$A$1:$N$5").AutoFilter Field:=5, Criteria1:="Chèque" ActiveSheet.Range("$A$4:$N$8").AutoFilter Field:=13, Criteria1:="CHECY" End With 'renseigner la date de la journée comptable au format JJ/MM/AAAA Date_max = InputBox("Saisie de la date du jour au format MM/JJ/AAAA", "mm/dd/yyyy") Range("f1") = Date_max Range("f1").Select Selection.Font.Bold = True Selection.Font.Size = 14 Columns("F:F").Select Selection.ColumnWidth = 18 Application.PrintCommunication = False With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With Application.PrintCommunication = True ActiveSheet.PageSetup.PrintArea = "" Application.PrintCommunication = False With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.75) .RightMargin = Application.InchesToPoints(0.75) .TopMargin = Application.InchesToPoints(1) .BottomMargin = Application.InchesToPoints(1) .HeaderMargin = Application.InchesToPoints(0.5) .FooterMargin = Application.InchesToPoints(0.5) .PrintHeadings = False .PrintGridlines = True .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = False .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With Application.PrintCommunication = True ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Worksheets("Sheet1").Copy After:=Worksheets("Sheet1") Sheets("Sheet1 (2)").Select Sheets("Sheet1 (2)").Name = "PARIS" Application.ScreenUpdating = True ActiveSheet.Range("$A$4:$N$8").AutoFilter Field:=13, Criteria1:="PARIS" Range("B1").Select ActiveCell.FormulaR1C1 = "Encaissements apporteurs PARIS du" Application.PrintCommunication = True ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Worksheets("Sheet1").Copy After:=Worksheets("Sheet1") Sheets("Sheet1 (2)").Select Sheets("Sheet1 (2)").Name = "CHATEAUROUX" Application.ScreenUpdating = True ActiveSheet.Range("$A$4:$N$8").AutoFilter Field:=13, Criteria1:="CHATEAUROUX" Range("B1").Select ActiveCell.FormulaR1C1 = "Encaissements apporteurs CHATEAUROUX du" Application.PrintCommunication = True ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveWorkbook.Save ' End Sub
Bonjour,
Pour la dernière fois, et venant de quelqu'un d'autre que Menhir, penses-tu vraiment que cette information nous aide?
Il ne te viendrait pas à l'idée de nous dire comment se manifeste ce "blocage"?
D'une part, nous ne sommes pas devins et, d'autre part, il faut que tu t'impliques un minimum pour nous fournir un maximum d'informations.
Les messages d'erreur ne sont pas là pour décorer.
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager