Application.ScreenUpdating = False ne fonctionne pas

Tout est dans le titre ... Je n'utilise cette commande que dans une macro ...

Private Sub CmdValider_Click()

Application.ScreenUpdating = False

'Feuille QUANTITE
 If CheckBoxQUANTITE.Value = True Then
    Sheets("QUANTITE").Visible = True
    Sheets("QUANTITE").PrintOut , , 1
    Sheets("QUANTITE").Visible = False
 End If

'Feuille FABRICATION
 If CheckBoxFABRICATION.Value = True Then
    Sheets("FABRICATION").Visible = True
    Sheets("FABRICATION").PrintOut , , 1
    Sheets("FABRICATION").Visible = False
 End If

'Feuille COMMANDE_HIVER - COMMANDE_ETE
If OptHIVER = True Then
    Sheets("COMMANDE_HIVER").Visible = True
        Sheets("COMMANDE_HIVER").PrintOut , , 1
    Sheets("COMMANDE_HIVER").Visible = False

ElseIf OptETE = True Then
     Sheets("COMMANDE_ETE").Visible = True
         Sheets("COMMANDE_ETE").PrintOut , , 1
     Sheets("COMMANDE_ETE").Visible = False

ElseIf OptPasDeFeuille = True Then
End If

'Feuille ETIQUETAGE_C
If OptCOMMANDE3 = True Then
        Sheets("ETIQUETAGE_C").Visible = True
            Sheets("ETIQUETAGE_C").PrintOut , , 3
        Sheets("FABRICATION").Visible = False

    ElseIf OptCOMMANDE2 = True Then
            Sheets("ETIQUETAGE_C").Visible = True
                Sheets("ETIQUETAGE_C").PrintOut , , 2
            Sheets("ETIQUETAGE_C").Visible = False

    ElseIf OptCOMMANDE1 = True Then
            Sheets("ETIQUETAGE_C").Visible = True
                Sheets("ETIQUETAGE_C").PrintOut , , 1
            Sheets("ETIQUETAGE_C").Visible = False

    ElseIf OptCOMMANDE0 = True Then

End If

'Feuille ETIQUETAGE_M
If OptMARCHE3 = True Then
        Sheets("ETIQUETAGE_M").Visible = True
            Sheets("ETIQUETAGE_M").PrintOut , , 3
        Sheets("ETIQUETAGE_M").Visible = False

    ElseIf OptMARCHE2 = True Then
        Sheets("ETIQUETAGE_M").Visible = True
            Sheets("ETIQUETAGE_M").PrintOut , , 2
        Sheets("ETIQUETAGE_M").Visible = False

    ElseIf OptMARCHE1 = True Then
        Sheets("ETIQUETAGE_M").Visible = True
            Sheets("ETIQUETAGE_M").PrintOut , , 1
        Sheets("ETIQUETAGE_M").Visible = False

    ElseIf OptMARCHE0 = True Then

End If

Unload FormulaireGestionDocs
ActiveWorkbook.Save
End Sub

Quelqu'un aurait il une idée ?

Bonsoir à tous!

Pigneau, faut réactiver à la fin de la procédure avec True

Application.ScreenUpdating = True

à placer juste avant End Sub

Bonne soirée!

Bonjour, nordik_nation

J'ai déjà testé ta solution mais rien à faire et sur certaines recherches que j'ai effectué sur le net certains évoquent que cela n'est pas nécessaire.

J'y comprends plus rien.

Bonjour Pigneau, Nordik_Nation,

ScreenUpdating a pour but de rafraîchir ou non l'écran.

C'est à dire s'il est True de voir sur la feuille toutes les modifications de calculs dans les cellules sur une feuille. Soit une actualisation en réel.

Au contraire s'il est sur False les modifications des cellules ne seront pas actualisées. Il faudra repasser à True pour voir l'actualisation.

Cela permet de gagner du temps lors de calculs importants.

Dans le code présenté, je ne vois pas l'intérêt. Que cherches tu? Ne pas voir l'aperçu de l'impression?

Réduire aussi le code, exemple fait sur la première feuille.

'Feuille QUANTITE
 If CheckBoxQUANTITE.Value = True Then
    With Sheets("Quantité")
    .Visible = True : .PrintOut , , 1: .Visible = False
   End with
 End If

Oups non de dieu, merci c'est bien False qu'il faut que j'utilise ...

encore merci x cellius pour la remarque et le bout de code, je le regarde de plus près ce soir. Désolé pour le dérangement.

je clos le sujet

Bonjour x cellius,

Encore merci pour le code modifié.

Ce que je recherche, c'est de rendre invisible à l'écran la petite fenêtre qui s'affiche et t'informe de l'impression du ou des documents.

D'avance merci

Bonjour Pigneau

Normalement comme ça

Sub Impression()
  Application.ScreenUpdating = False
  Sheets("QUANTITE").Visible = True
  Sheets("QUANTITE").PrintOut , , 1
  Sheets("QUANTITE").Visible = False
  Application.ScreenUpdating = True
End Sub

A+

Merci BrunoM45,

mais cela ne fonctionne pas pour moi.

Un exemple d'une partie de mon code.

If CheckBoxQUANTITE.Value = True Then
 Application.ScreenUpdating = False
    With Sheets("QUANTITE")
        .Visible = True
        .PrintOut , , 1
        .Visible = False
    End With
  Application.ScreenUpdating = True
End If

Il affiche toujours la petite fenêtre du message d'impression.

Bonjour Pigneau, BrunoM45,

Ce que je recherche, c'est de rendre invisible à l'écran la petite fenêtre qui s'affiche et t'informe de l'impression

En effet cette demande ne concerne pas ScreenUpdating.

Il faut faire comme ci dessous. Rajoutez False au PrintOut

If CheckBoxQUANTITE.Value = True Then
 Application.ScreenUpdating = False
    With Sheets("QUANTITE")
        .Visible = True
        .PrintOut , , 1, False
        .Visible = False
    End With
  Application.ScreenUpdating = True
End If

Car PrintOut est par défaut positionné à True, ce qui lance la fenêtre d'impression.

Bonjour Pigneau, X Cellus,

Je puis vous assurer que chez moi mon code fonctionne serait-ce une différence avec O365

A+

Suite,

Dans le cas de PrintOut la syntaxe est

From: ou De la page n° untel

To : à la page n° untel

Copies : soit le nombre de copies désirées

Preview : Aperçu de l'impression ou pas

Et c'est sur ce Preview, soit que l'on n'indique rien, il sera considéré comme True, donc l'aperçu de l'impression s'affichera. Sinon si marqué False, aucun aperçu.

Re, à tous les 2.

BrunoM45, je suis sur Excel Office Pro plus 2021, donc je ne sais pas si c'est un problème de version. Faut-il passer à 2021, je préfère pas passer à 365 pour l'instant.

X cellus :

Voilà ce que je ne voudrais pas voir s'afficher même si cela ne dure qu'une fraction de seconde (si j'ai un document à imprimer cela peut passer mais lorsqu'ils sont tous à imprimer, c'est moins sympa). Comme dit BrunoM45, chez lui cela fonctionne.

image

C'est à s'arracher les cheveux.

Suite,

Houla, ce n'est pas un aperçu de la feuille d'impression. Mais une alerte du nombre de pages qui sera imprimé.

C'est une imprimante réseau ou pas ?

Je ne suis pas sur Ordi là.

Mais sans doute les lignes de code ci-dessous seraient utiles.

Application.DisplayAlerts = False
'puis suite du code et en fin pour rétablir
Application.DisplayAlerts = True

Perso,

C'est bien ce que j'avais compris, mais je pense que c'est un problème de spooler d'impression

Donc il n'est pas possible de faire quoi que ce soit en VBA, il faut voir la DSI

Edit : à moins que les lignes données par X Cellus fassent le job

A+

Hello, à vous 2

Jai testé la solution de X cellus, rien à faire. Le message s'affiche toujours.

J'ai regardé un peu le soopler d'impression de ma Brother multifonctions, rien n'apparait sur la possibilité de ne pas afficher le message. S'il faut aller plus loin je ne pense pas que cela soit de ma compétence puis l'ami pour qui je fais l'application possède une Brother, multifonctions ...

Si besoin, je peux laisser mon fichier sur le sujet au cas où l'un de vous puissent le tester .... Il y a peut peut être une coquille mais là je vois pas.

A+

A nouveau,

Edit : à moins que les lignes données par X Cellus fassent le job

Non, car ici c'est le service Windows, spouleur d'impression (en français) qui effectivement fait office de "triage" entre imprimante(s).

image

Une solution pour éviter de lancer plusieurs impressions, vu la macro présentée est de :

Passer par l'imprimante PDF en la plaçant sur la Barre d'Outils Rapide Excel. Faire Fichier Options puis choisir dans les Commandes courantes:

Publier au format PDF ou XPS. Et l'envoyer par Ajouter vers le deuxième tableau avec le choix (par défaut) Pour tous les documents.

image image

La macro devra être modifiée pour sélectionner un ensemble de feuilles (celles ayant le contrôle à True). Donc il n'y aura qu'une seule impression au lieu de plusieurs.

Ensuite, il sera possible, plus tard, de ne sortir que la ou les feuilles du PDF (donc sauvegardé) que l'on souhaite.

Après si dans les propriétés de l'imprimante, il existe une option de ne pas renvoyer un message d'alerte du nombre de pages à imprimer.

Ce serait possible (case à cocher) de le bloquer. Mais attention, s'il existe des impressions très nombreuses, on ne pourra pas le voir et ainsi annuler.

Re,

Il y a peut-être aussi la possibilité de modifier la priorité du spooler, je ne sais pas si cela aura une grande incidence

Mais dans les propriétés de l'imprimante, onglet avancé
Mettez la priorité à 99 (maximum)

image

A+

Bonsoir à tous,

Je vais étudier la proposition de X Cellus mais ce n'est pas pour tout de suite et je ne sais pas si cela vaudra le coup. J'en parlerai à l'utilisateur pour savoir si la situation le dérange. Si cela ne le dérange pas, je laisserai tomber l'affaire.

BrunoM45, j'ai passé une partie de ma soirée à chercher comment ne pas afficher ce satané message mais rien à faire. J'ai effectué la manip que vous m'avez décrite elle eu pour effet que le message est resté un peu plus longtemps à l'affichage pour imprimer un seul document en recto/verso. J'ai pas de chance sur ce coup là.

Je vais voir si je peux tester mon application sur un autre ordinateur avec une autre version d'excel on sait jamais.

Je vous remercie infiniment d'avoir passer du temps sur mon problème.

A+

Rechercher des sujets similaires à "application screenupdating false fonctionne pas"