Bonjour à tous,
Pourriez vous m'aider encore? Je cherche à imprimer la feuil2, seulement si la date de la cellule A1 de la Feuil3 à moins de 3 jours...?
Merci
Version imprimable
Bonjour à tous,
Pourriez vous m'aider encore? Je cherche à imprimer la feuil2, seulement si la date de la cellule A1 de la Feuil3 à moins de 3 jours...?
Merci
Bonjour,
Code:
1
2
3
4
5
6 If Sheets("Feuil3").Range("A1") > Now - 3 Then 'impression Else MsgBox ("Plus de 3 jours") End If
Bonjour Helas, merci d'avoir répondu
J'ai réussi à mettre la condition en fonction de la date mais maintenant ce sont les IF le problème. La MsgBox s'affiche plusieurs fois au lieu de tenir compte du GoTo ...
Voila ce que j'essai de coder:
Code:
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 Sub PrintDoc() Dim la_date As Date la_date = Sheets("Commande").Range("J1").Value If la_date < Now() - 2 Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True GoTo STOPPP End If 'Si clic sur ANNULER If MsgBox("La commande à été mise à jour le " & la_date & ", voulez vous l'imprimer?", vbYesNoCancel + vbDefaultButton1 + vbInformation, "Commande") = vbCancel Then GoTo Line2 End If 'Si clic sur NON If MsgBox("La commande à été mise à jour le " & la_date & ", voulez vous l'imprimer?", vbYesNoCancel + vbDefaultButton1 + vbInformation, "Commande") = vbNo Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True GoTo Line2 End If 'Si clic sur OUI If MsgBox("La commande à été mise à jour le " & la_date & ", voulez vous l'imprimer?", vbYesNoCancel + vbDefaultButton1 + vbInformation, "Commande") = vbYes Then GoTo Line1 End If Line1: ActiveWorkbook.PrintOut Line2: End Sub
bonjour,
je ne comprend pas pourquoi tu utilises des GOTO dans ton code
voici une proposition à continuer, ne sachant pas ce que fait ton Goto STOPPP
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub PrintDoc() Dim la_date As Date la_date = Sheets("Commande").Range("J1").Value If la_date < Now() - 2 Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True GoTo STOPPP End If Select Case MsgBox("La commande à été mise à jour le " & la_date & ", voulez vous l'imprimer?", vbYesNoCancel + vbDefaultButton1 + vbInformation, "Commande") Case vbNo ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Case vbYes ActiveWorkbook.PrintOut End Select End Sub
Bonjour,
Désolé pour le temps de réponse, j'étais en déplacement.
Le GoTo Stopp était un essai que j'ai oublié de supprimer.
J'ai testé ta macro mais j'ai toujours un problème avec la date.
La macro n'en tient pas compte et m'affiche toujours la msgBox.
J'ai juste modifié la fin puisque je veux imprimer 2 onglets en cas de vbYes.
Et quelle fonction puis-je ajouter à vbCancel pour qu'il stop l'impression en cours?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Sub PrintDoc() Dim la_date As Date la_date = Sheets("Commande Bocaux").Range("J1").Value If la_date < Now() - 2 Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End If Select Case MsgBox("La commande de bocaux à été mise à jour le " & la_date & ", voulez vous l'imprimer?", vbYesNoCancel + vbDefaultButton1 + vbInformation, "Commande Bocaux") Case vbNo Sheets("Commande").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Case vbYes Sheets("Commande Bocaux").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("Commande").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Select End Sub
Bonjour,
Tu veux que la boite de message ne s'affiche que si la date est inférieure à 3 jour par rapport au jour actuel ?
Dans ce cas, il te faut incorporer le code dans le bloc If :
mais pourquoi ceci avant la boite de message ?Code:
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 Sub PrintDoc() Dim la_date As Date la_date = Sheets("Commande Bocaux").Range("J1").Value If la_date < Now() - 2 Then ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Select Case MsgBox("La commande de bocaux à été mise à jour le " & la_date & ", voulez vous l'imprimer?", vbYesNoCancel + vbDefaultButton1 + vbInformation, "Commande Bocaux") Case vbNo Sheets("Commande").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Case vbYes Sheets("Commande Bocaux").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("Commande").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Select End If End Sub
Hervé.Code:
1
2 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Bonjour Hervé,
Le principe est que lorsque je lance ma macro par un bouton "Imprimer", je vérifie que la date soit inférieur à 3 jours.
- Si ce n'est pas le cas la feuille "Commande" doit être imprimée seule.
- En revanche, si la date est inférieure à 3 jour, la feuille "commande" doit être imprimée et en plus le message me demande si je souhaite imprimer la feuille "commande bocaux"
Bonjour,
autrement formulé, voici ce que doit réaliser ta procédure :
1) Imprimer la page "Commande"
2) Regarder si la date en J1 de la feuille "Commande Bocaux" est inférieure à [Date du jour]-3 (pourquoi tu utilises 2 dans ton code ??)
==> ce qui revient à dire [LaDate > DateDuJour - 3] !
==> Exemple : nous sommes le 05/08/2015 ... j'imprime uniquement si LaDate est postérieurs au 02/08/2015 (à partir du 03/08/2015)
3) si condition 2 est vérifiée : proposer l'impression de la feuille "Commande Bocaux"
Code:
1
2
3
4
5
6
7
8
9
10 Sub PrintDoc() Sheets("Commande").PrintOut Copies:=1, Collate:=True With ThisWorkbook.Worksheets("Commande Bocaux").Range("J1") If .Value > Date - 3 Then If MsgBox("La commande de bocaux à été mise à jour le " & .Value & ", voulez vous l'imprimer?", vbYesNo + vbInformation, "Commande Bocaux") = vbYes Then Sheets("Commande Bocaux").PrintOut Copies:=1 End If End If End With End Sub
PARFAIT !!!!!!!
Merci beaucoup pour votre aide. Ca fonctionne nikel !!!!