sans plus de précisions de ta part ........Je commence avec les techniques VBA sous excel.
J'ai un fichier dont je veux quand ne peux l'imprimer que si un test est fait por verifier q'il n'y a aucune erreur sur tout une colonne.
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim cel As Range 'déclare la variable cel
Dim c As Integer 'déclare la variaable c (Colonne)
c = x 'ou x désigne le numéro de la colonne à traiter
With Sheets("Ton_Onglet") 'prend en compte l'onglet à traiter (à adapter à ton cas)
For Each cel In .Range(.Cells(1, c), .Cells(applications.Rows.Count, c).End(xlUp)) 'boucle sur toutes les cellules éditées cel de la colonne c
'si la cellule vaut "ton_critère", annule l'impression et sort de la procédure
If cel.Value = "Ton_Critère" Then Cancel = True: Exit Sub
Next cel 'prochaine cellule de la boucle
End Sub
Bonjour ASNJ, bonjour le forum,
Tu ne nous aides pas beaucoup... Peut-être avec cette macro événementielle du composant ThisWorkbook :
Code:Private Sub Workbook_BeforePrint(Cancel As Boolean) Dim cel As Range 'déclare la variable cel Dim c As Integer 'déclare la variaable c (Colonne) c = x 'ou x désigne le numéro de la colonne à traiter With Sheets("Ton_Onglet") 'prend en compte l'onglet à traiter (à adapter à ton cas) For Each cel In .Range(.Cells(1, c), .Cells(applications.Rows.Count, c).End(xlUp)) 'boucle sur toutes les cellules éditées cel de la colonne c 'si la cellule vaut "ton_critère", annule l'impression et sort de la procédure If cel.Value = "Ton_Critère" Then Cancel = True: Exit Sub Next cel 'prochaine cellule de la boucle End Sub
[Édition]
Bonjour Philippe on s'est croisé.
La cellule D3 n'est pas vide.
La colonne voucher check ne présente aucune erreur au retour de la formule.
Dans le cas ou les 2 hypotheses sont fausses afficher un message
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim cel As Range
' test si D3 non-vide
If Sheets(1).[D3] = "" Then
MsgBox ("D3 est vide")
Cancel = True
Exit Sub
End If
' test si erreur en colonne L
For Each cel In Range("L8:L35")
On Error GoTo fin
test = Left(Str(cel), 1)
Next cel
Exit Sub
fin:
MsgBox ("il y a au moins une erreur en colonne L")
Cancel = True
End Sub
la solution la plus simple est de mettre ici ton fichier sans oublier les formules dans la colonne Ld'apres ceque je peux lire sur votre code, tout doit marcher normalement sauf que ça imprime toujours à tous les coups, j'ai essayer de mettre le code dans la page VBA de la feuille, et meme en creant un module ou j'ai fait un copier coller ?
la réponse est "nulle part pour l'instant"@ASNJ: Peux-tu répondre, s'il te plait, à la question de mon précédent message ?
Où sont les formules dont tu parles ?