Les Application.ScreenUpdating = False & True sont-ils au bon endroit?

Bonjour le forum

Comme dit dans le titre

Merci pour vos éventuels retours

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  ActiveSheet.Range("A1").Select
End Sub

Private Sub Workbook_Open()
Dim wSheet As Worksheet
Dim Feuille As String, AMasquer As String
Dim I As Integer

 Application.ScreenUpdating = False
  For Each wSheet In Worksheets
'    wSheet.Protect UserInterfaceOnly:=True
  Next wSheet

  Feuille = MonthName(Month(Date)) & " " & Year(Date)
  If FeuilleExiste(Feuille) = False Then Exit Sub
  If UCase(Feuille) <> UCase(ActiveSheet.Name) Then
      ' Teste le nom en majuscule de la feuille du mois en cours avec le nom en majuscule de la feuille affichée
    AMasquer = ActiveSheet.Name
    With Sheets(Feuille)
      .Visible = True
      .Select
    End With
    Sheets(AMasquer).Visible = xlSheetVeryHidden
  End If

  For I = 1 To Sheets.Count
    If UCase(Sheets(I).Name) <> UCase(Feuille) Then Sheets(I).Visible = xlSheetVeryHidden
  Next I
  Range("A1").Select
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim NombreJour As Integer
Dim LaDate As Date
Dim MoisSuivant As String
Dim sDate As String, ValDate As Variant

    Application.ScreenUpdating = False
    Application.EnableEvents = False
    ' On recherche si la page est surveillée
    If InStr(1, "JanvierFévrierMarsAvrilMaiJuinJuilletAoûtSeptembreOctobreNovembreDécembre", _
                Split(Sh.Name, " ")(0), vbTextCompare) Then
      ' Calcul du nombre de jour dans le mois indiqué par le nom de la feuille
      NombreJour = Day(DateAdd("m", 1, DateValue(Sh.Name)) - 1)

'      If Target.Row - 5 > Day(Date) Then      'En commentaires ces 4 lignes pour afficher ligne données dans feuille
'        Beep
'        MsgBox "PAS LE BON JOUR"
'      Else

        ' Surveille la plage du 1er au dernier jours du mois
        If Not Intersect(Range("B6:C" & 5 + NombreJour, "F6:G" & 5 + NombreJour), Target) Is Nothing Then
          ' Reconstruit la date de fonction du nom de la feuille et du numéro de ligne sélectionnée
          LaDate = DateSerial(Split(Sh.Name, " ")(1), Month(DateValue(Sh.Name)), Target.Row - 5)
          ' Si la colonne B et la colonne C est vide on efface la date
          Range("A" & Target.Row) = IIf(Range("B" & Target.Row) = "", "", Application.Proper(Format(LaDate, "dddd dd mmmm yyyy")))
          '
          If Range("B" & Target.Row) = "" Then Range("C" & Target.Row) = "": Range("E" & Target.Row) = ""
          '
          Range("F" & Target.Row) = IIf(Range("B" & Target.Row) = "", "", LaDate)

'          End If
          Target.Select
        End If
      End If
'    End If                                        'En commentaires cette ligne pour afficher ligne données dans feuille
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub
Function FeuilleExiste(Nom As String) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function
Sub ret()
Application.EnableEvents = True
End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 Cancel = Not Cancel
  Select Case Target.Address
    Case "$A$3": If Not Target.Comment Is Nothing Then KilometrageDeDepart
    Case "$B$2"
      Application.ScreenUpdating = False
      Columns("F:F").Hidden = Not Columns("F").Hidden
      Application.ScreenUpdating = False
      Case "$G$1"
         UsfChoix.Show 0
    Case Else
  End Select

     If Not Intersect(Range("D3"), Target) Is Nothing Then
    Cancel = True
    TbCoul = Array(3, 5, 5, 5)
    Tb = Array("", "SP 95", "SP 98")

    'X = UCase(Trim(Target))   'Pour mettre en Majuscule
    X = (Trim(Target))
    If UBound(Filter(Tb, X)) >= 0 Then
      Indice = Application.Match(X, Tb, 0) Mod (1 + UBound(Tb))
        Target = Tb(Indice)
        Couleur = TbCoul(Indice)
        If Couleur = 0 Then
          Couleur = Target.Offset(0, -1).Interior.ColorIndex
        End If
        Target.Interior.ColorIndex = Couleur
    Else
        Target = ""
    End If

         ElseIf Not Intersect(Range("D2", "D4:D5"), Target) Is Nothing Then
    Cancel = True
    TbCoul = Array(3, 5, 5, 5)
    Tb = Array("", "Super U Labussière", "Super U Corgnac", "Leclerc Limoges")

    'X = UCase(Trim(Target))   'Pour mettre en Majuscule
    X = (Trim(Target))
    If UBound(Filter(Tb, X)) >= 0 Then
      Indice = Application.Match(X, Tb, 0) Mod (1 + UBound(Tb))
        Target = Tb(Indice)
        Couleur = TbCoul(Indice)
        If Couleur = 0 Then
          Couleur = Target.Offset(0, -1).Interior.ColorIndex
        End If
        Target.Interior.ColorIndex = Couleur
    Else
        Target = ""
    End If
End If
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim LaDate As Date, J As Long
  If Target.Address <> Selection.Address Then Exit Sub
    If Target.Column = 2 Then
        Application.ScreenUpdating = False
        For J = 6 To 36
            If Cells(J, "B") = "" Then Cells(J, "A").ClearContents
        Next J
        ' Reconstruit la date de fonction du nom de la feuille et du numéro de ligne sélectionnée
        LaDate = DateSerial(Split(Sh.Name, " ")(1), Month(DateValue(Sh.Name)), Target.Row - 5)
        If UCase(MonthName(Month(LaDate))) = UCase(Split(Sh.Name, " ")(0)) Then
            ' Si la colonne B et la colonne C est vide on efface la date
            Range("A" & Target.Row) = Application.Proper(Format(LaDate, "dddd dd mmmm yyyy"))
        End If
    End If
End Sub

Bonjour

Application.ScreenUpdating = False

Se met en début de macro après les conditions

If FeuilleExiste(Feuille) = False Then Exit Sub

Ne pas oublier de mettre
Application.ScreenUpdating =true
avant la fin de la macro

A+ François
Ps: vous pouvez mettre:
If FeuilleExiste(Feuille) = False Then
Application.ScreenUpdating =true
exit sub
endif

Bonjour à tous

Contrairement à d'autre variables Excel, il n'est pas (plus ?) indispensable de rétablir Application.ScreenUpdating en fin de Sub car il se rétablit seul

Donc pour ma part sauf un besoin de ré-affichage en cours du sub, je n'utilise jamais le True

Re à tous

Quelqu'un aurait-il la bonté de mettre Application.ScreenUpdating = False dans toutes les macros au bon endroit

Je sais que je vais m'attirer les foudres de certains

Merci à vous 2

Cordialement

Bonjour AL87,

Fanfan38 vous a donné la solution, @78Chris un complément, vous avez donc tout ce qu'il faut !

De plus et comme à votre habitude vous ne respectez pas la charte du forum concernant le cross posting

Je clôture donc le sujet pour éviter de faire du temps à qui que ce soit.

Rechercher des sujets similaires à "application screenupdating false true bon endroit"