Encore dans mes msgbox

bonjour a tous

dans le fichier joint j'ai deux msgbox un qui se déclenche si je clique sur masquez lignes et qui fonctionne très bien que j' ai réussi a adapter d'après une solution que ma donner Yvouille que je remercie

mais j'en ai une autre quand je clique sur l'icone imprimer et la et le problème c'est que quand j'imprime elle se déclenche deux fois (certainement du au fait que cela masque les lignes avant d'imprimer) quelqu'un aurais t'il une idée de comment faire pour quelle ne se déclenche qu'une fois

amicalement

Tu appelles deux fois masquer lignes qui lui contient la msgbox donc normal qu'il s'affiche deux fois.

Tu as trente millions de solutions. La plus simple introduire une variable booléenne globale qui sera mise à faux lors de l'impression puis remise en fin d'impression et mettre la messagebox dans un if qui teste cette variable booléenne

Sub imprimer()
Call masquerlignes
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
        Call masquerlignes
       Flag = False
End Sub

En regardant les comptes de votre société... Je m'apperçois de quelques incohérences.

En 2012 un CA de 2.167.900€ avec un EBE de 98500€ et un RN de -13100€ ?

Gestion du FR très très précaire ou marges insufisantes à moins d'une charge exceptionnelle démentielle ou une arnaque au fisc...

re

ta réponse et bcp trop compliqué pour moi et mes petites connaissances sur excel et ses macro

de plus effectivement un investissement très très lourd a été fait mais pas comme tu dis une "arnaque au fisc" les comptes sont confié a une experte a la cour des comptes a moins qu'elle n'ai fait une erreur ce qui me parait peu probable.

Cadeau.

L'investissement ne justifie pas le passage d'un EBE de 98k à un RN de -13k , l'experte ne voit que ce qu'on lui donne! Et encore plus si votre experte veut rentrer tôt pour faire à manger à ses enfants!

re

merci je vois que tu a rajouter une partie de code

mais cela s'ouvre toujours deux fois quand je veux imprimer

amicalement

Je n'avais pas vu que tu avais un beforeprint...

Il va peut être falloir la passer en globale

global message as boolean

re

désolé de t'ennuier

quand je clique sur masquez lignes plus rien ne ce passe ni le masquage ni le msbox

de plus quand je clique sur l'icone imprimer l'impression ce lance sans avoir masquer les lignes vides et une fois l'impression lancé le msbox s'ouvre

amicalement

Je ne comprends donc pas ton programme...

Estce que celui là te va ?

re

quand je clique sur masquez lignes cela masque les lignes vides donc c'est parfait OK

quand je clique sur l'icone de l'imprimante j'ai le msbox qui me propose de continuer en cliquant sur oui (donc cela masque les lignes et cela imprime donc cela fonctionne OK )

mais si si clique sur annuler sur le msbox de l'imprimante l'impression ce lance or je voudrais que cela annule et revienne sur la page pour éventuellement rajouter du poids pour avoir le franco

amicalement

re

merci de ta patience EngueEngue

mais quand je clique sur l'icone imprimer puis sur annuler cela fonctionne tres bien

pour ce qui et du bouton masquez lignes cela fonctionne tres bien

mais si je clique sur ok cela ne masque pas les lignes et surtout l'impression ce lance et ne s'arrete plus elle tourne en boucle et imprime a tout vas

je suis désolé de t'ennuier comme ca

je doit m'absenter pendant 3 heures

je regarde vers 16 h quand je revient

amicalement

Change la macro imprimer

Sub imprimer()
Dim cel As Range
Application.ScreenUpdating = False
If [M5] < 40 Then
    Reponse = MsgBox("Votre poids et de  " & ActiveSheet.[M5] & " KG" & Chr(10) & "Vous n'avez pas le franco de port qui est de 40 KG" & Chr(10) & "Je vais devoir vous sortir le prix du transport", _
        vbOKCancel + vbCritical, "Avertissement")
    If Reponse = vbOK Then
For Each cel In Range("N17:N90")
If cel = "" Or cel = 0 Then
cel.EntireRow.Hidden = True
    Else
      Cancel = True
    End If
Next
End If
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End If

       Flag = False
End Sub

me revoilou

desole mais quand on clique sur l'icone imprimante sur ok cela fonctionne les lignes vide se masque puis cela imprime

mais si on clique sur annuler l'impression se lance aussi

amicalement

L'intérêt d'indenter un minimum son code..

Sub imprimer()
Dim cel As Range
Application.ScreenUpdating = False
If [M5] < 40 Then
    Reponse = MsgBox("Votre poids et de  " & ActiveSheet.[M5] & " KG" & Chr(10) & "Vous n'avez pas le franco de port qui est de 40 KG" & Chr(10) & "Je vais devoir vous sortir le prix du transport", _
        vbOKCancel + vbCritical, "Avertissement")
    If Reponse = vbOK Then
For Each cel In Range("N17:N90")
If cel = "" Or cel = 0 Then
cel.EntireRow.Hidden = True
    Else
      Cancel = True
    End If
Next
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End If

End If

       Flag = False
End Sub

re

un grand merci a ton expérience et a ton dévouement et milles excuse pour le temps que je t'ai fait perdre

cela fonctionne parfaitement bien

une dernière petite question quitte a passer pour un idiot mais si on ne demande pas on reste ignorant (qu'entend tu par "L'intérêt d'indenter un minimum son code" cela veux dire quoi...)

amicalement

Voilà un code indenté on y voit directement plus clair pour savoir ou se termine chaque boucle ou condition

Sub imprimer()
    Dim cel As Range
    Application.ScreenUpdating = False
    If [M5] < 40 Then
            Reponse = MsgBox("Votre poids et de  " & ActiveSheet.[M5] & " KG" & Chr(10) & "Vous n'avez pas le franco de port qui est de 40 KG" & Chr(10) & "Je vais devoir vous sortir le prix du transport", _
            vbOKCancel + vbCritical, "Avertissement")
            If Reponse = vbOK Then
            For Each cel In Range("N17:N90")
                If cel = "" Or cel = 0 Then
                    cel.EntireRow.Hidden = True
                    Else
                          Cancel = True
                    End If
            Next
                ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
        End If
    End If
        Flag = False
End Sub

encore milles merci et milles excuses pour le temps perdu

amicalement

Rechercher des sujets similaires à "encore mes msgbox"