impression autorisée seulement si cellule identiques

belaubre

XLDnaute Nouveau
Bonjour à tous et à toutes,

Quel code pour traduire ceci :

Dans ma feuille excel nommée : CAISSE, si le montant dans cellule "F20" est différent de la cellule "M4", affiche un message "CALCUL INCORRECT : LES CELLULES F20 et M4 SONT DIFFÉRENTES" et refuser l'impression.

Mais si les cellules F20 et M4 sont identiques, alors imprimer.

Si vous pouviez m'aider, s'il vous plait.
 
Dernière édition:

belaubre

XLDnaute Nouveau
Je joint mon fichier d'essai car je me sent comme Staple "invisible" auprès de l'ami belaubre
Bruno

Vous n'êtes pas invisible, votre macro ne fonctionne pas à priori, mais comme je suis débutante, je suis entrain de faire du tri dans les 15000 macro que j'ai créer et qui ne me serve pas. Pour m'y retrouver.

Je veux aussi chercher par moi-même la solution pour ne pas que l'on me fasse tout le travail.

Après je ne suis pas venu demander de l'aide pour avoir se genre de remarque :(

bref,
 

Lone-wolf

XLDnaute Barbatruc
Re Bruno

Il y a un souci avec la macro. J'ai écrit bruno à la place de youky et le msgbox s'affiche quand même.

@belaubre : mais pourquoi tu instiste à passer par fichier > imprimer, alors que tu demande une macro?? o_O

Essaie comme ceci

VB:
Sub Impression()
Dim x&, plage As Range, f As Range
Dim m As Range, rw1, rw2

    Sheets("CAISSE").Activate

    With ActiveSheet
        x = .Range("a" & Rows.Count).End(xlUp).Row
        Set plage = .Range("a1:m" & x): Set f = .Range("f20"): Set m = .Range("m4")
        rw1 = Replace(f.Address, "$", ""): rw2 = Replace(m.Address, "$", "")

        If .Range("f20") <> .Range("m4") Then
            MsgBox "CALCUL INCORRECT : LES CELLULES " & rw1 & " et " & rw2 & " SONT DIFFÉRENTES.", , "ERREUR"
            .Protect Password:="belaubre"
            .Range("f20, m4").Locked = True
        Else
            .Unprotect Password:="belaubre"
            .Range("f20, m4").Locked = False
            .PageSetup.PrintArea = plage.Address
            '.PrintPreview  pour visualiser
            '.PrintOut      pour imprimer
        End If
    End With
End Sub
 
Dernière édition:

belaubre

XLDnaute Nouveau
Salut Lone-Wolf, bonjour tous
Moi j'ai vu comme ça...sans col O
Ce code est à mettre en Thisworkbook
Bruno
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "CAISSE" Then Exit Sub
If [F20] <> [M4] Then
MsgBox "CALCUL INCORRECT :" & vbCr & "LES CELLULES 019 et 024 SONT DIFFÉRENTES"
Cancel = True 'annule impression
End If
End Sub



Je viens de réussir avec votre macro,

Donc elle fonctionne parfaitement quand je fait Fichier-->Imprimer,

Si le montant est faux, un message s'affiche et bloque l'impression, c'est parfait de chez parfait.

Je voulais l'associer à mon bouton de raccourci, mais la à priori, sa ne veux pas,

Ce n'est pas grave, le plus important fonctionne

Merci beaucoup pour le coup de pouce, efficace et rapide,

Il y a 2 mois encore je ne savais pas faire une somme sur excel, alors je galere encore un peu, désolé

A bientôt peut etre
 

belaubre

XLDnaute Nouveau
Re Bruno

Il y a un souci avec la macro. J'ai écrit bruno à la place de youky et le msgbox s'affiche quand même.

@belaubre : mais pourquoi tu instiste à passer par fichier > imprimer, alors que tu demande une macro?? o_O

Essaie comme ceci

VB:
Sub Impression()
Dim x&, plage As Range, f As Range
Dim m As Range, rw1, rw2

    Sheets("CAISSE").Activate

    With ActiveSheet
        x = .Range("a" & Rows.Count).End(xlUp).Row
        Set plage = .Range("a1:m" & x): Set f = .Range("f20"): Set m = .Range("m4")
        rw1 = Replace(f.Address, "$", ""): rw2 = Replace(m.Address, "$", "")

        If .Range("f20") <> .Range("m4") Then
            MsgBox "CALCUL INCORRECT : LES CELLULES " & rw1 & " et " & rw2 & " SONT DIFFÉRENTES.", , "ERREUR"
            .Protect Password:="belaubre"
            .Range("f20, m4").Locked = True
        Else
            .Unprotect Password:="belaubre"
            .Range("f20, m4").Locked = False
            .PageSetup.PrintArea = plage.Address
            '.PrintPreview  pour visualiser
            '.PrintOut      pour imprimer
        End If
    End With
End Sub


C'est pour mon travail, c'est une feuille de caisse :)

Donc si les montants ne sont pas justes je ne veux pas que les caissiers puissent imprimer quand même la feuille de caisse, je veux qu'ils trouvent leurs erreurs avant l'impression.

Normalement ils cliquent sur le bouton '' IMPRIMER '' que j'ai fais en raccourci. Mais ils sont malins, si ça ne marche pas, ils vont me faire FICHIER --> IMPRESSION et ça je ne veux pas ^^
 

belaubre

XLDnaute Nouveau
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "CAISSE" Then Exit Sub
If [F20] <> [M4] Then
MsgBox "IMPRESSION REFUSEE :" & vbCr & " LE MONTANT ESPECE BANQUE EST DIFFERENT DE L'ENCAISSEMENT REEL"
If [M20] <> [N20] Then
MsgBox "IMPRESSION REFUSEE :" & vbCr & " LE TOTAL ENCAISSEMENT DOIT CORRESPONDRE AU TOTAL SUR LE TICKET Z "
Cancel = True 'annule impression
End If
End Sub


Je viens d'essayer d'ajouter une deuxieme condition dans ma macro, apparament une erreur d'écriture :/ Vous la voyez ?:O
 

youky(BJ)

XLDnaute Barbatruc
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "CAISSE" Then Exit Sub
If [F20] <> [M4] Then
MsgBox "IMPRESSION REFUSEE :" & vbCr & " LE MONTANT ESPECE BANQUE EST DIFFERENT DE L'ENCAISSEMENT REEL"
Cancel=True
End If
If [M20] <> [N20] Then
MsgBox "IMPRESSION REFUSEE :" & vbCr & " LE TOTAL ENCAISSEMENT DOIT CORRESPONDRE AU TOTAL SUR LE TICKET Z "
Cancel = True 'annule impression
End If
End Sub
 

Discussions similaires

Réponses
4
Affichages
309

Statistiques des forums

Discussions
312 145
Messages
2 085 762
Membres
102 966
dernier inscrit
InitialPP