[VBA] ScreenUpdating

  • Initiateur de la discussion Initiateur de la discussion W660
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

W

W660

Guest
bonjour,
je n'arrive pas a figer l’écran avec Application.ScreenUpdating = false . je précise que je souhaite l'utiliser pour masquer le déroulement des actions d'un Userform.
voici mon code:
Code:
Private Sub Ajout_Click()
  Application.ScreenUpdating = False
    Sheets("ALIAS").Select
    Range("a65536").End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = Activité.TextBox1.Value
    Range("a65536").End(xlUp).Offset(, 1).Select
    ActiveCell.Value = Activité.TextBox2.Value
    Range("A2", Range("a65536").End(xlUp)).Select
        With ActiveWorkbook.Names("libelle")
        .Name = "libelle"
        .RefersToR1C1 = Selection
        End With
    Range("A2", Range("b65536").End(xlUp)).Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Sheets("POINTAGE").Select
  Application.ScreenUpdating = True
  End Sub
et un fichier joint
merci d'avance de votre aide
 

Pièces jointes

Re : [VBA] ScreenUpdating

Bonsoir W660

Essaye avec ça dans ton USF
Code:
Private Sub Ajout_Click()' Empêcher le rafraichissement
  Application.ScreenUpdating = False
  ' Empêcher les évènements
  Application.EnableEvents = False
  With Sheets("ALIAS")
    .Range("a65536").End(xlUp).Offset(1, 0).Value = Activité.TextBox1.Value
    .Range("a65536").End(xlUp).Offset(, 1).Value = Activité.TextBox2.Value
    With ActiveWorkbook.Names("libelle")
      .Name = "libelle"
      .RefersToR1C1 = Sheets("ALIAS").Range("A2", Range("a65536").End(xlUp))
    End With
    .Range("A2", .Range("b65536").End(xlUp)).Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
                                                  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  'Sheets("POINTAGE").Activate
  ' Réactiver les évènements
  Application.EnableEvents = True
  ' Réactiver l'affichage
  Application.ScreenUpdating = True
End Sub
et
Code:
Private Sub UserForm_Activate()
  'Worksheets("ALIAS").Activate
  ComboBox1.RowSource = "ALIAS!libelle"
End Sub

A+
 
Re : [VBA] ScreenUpdating

merci de ta réponse.
tout d'abord merci d'avoir "épurer" mon code.
ensuite ce code génère une erreur 1004 au niveau de la ligne .referstor1c1
sinon le ScreenUpdating semble fonctionner
 
Re : [VBA] ScreenUpdating

Bonjour

Il suffit de faire une petite recherche sur google de "RefersToR1C1" 🙄
Code:
.RefersTo:=Sheets("ALIAS").Range("A2", Range("a65536").End(xlUp))


A+
 
Re : [VBA] ScreenUpdating

bonjour,
merci de m'avoir répondu.
si je pose les question sur le forum c'est que je n'ai pas trouvé de réponse ailleurs.
le code donnée ci dessus me renvoie une erreur de syntaxe. le debogueur me surligne les ":=" après refersto alors que d’après ton code et mes recherche sur le net cela semble être correct.

J'ai essayé avec la syntaxe suivante:
Code:
.RefersTo = .Sheets("ALIAS").Range("A2", Range("a65536").End(xlUp))

mais là l'erreur me dit que la méthode n'est pas geré (code 438)
 
Re : [VBA] ScreenUpdating

Re,
Désolé, je n'avais effectivement pas testé le code 😛

Le voici corrigé
Code:
Private Sub Ajout_Click()
  ' Empêcher le rafraichissement
  Application.ScreenUpdating = False
  ' Empêcher les évènements
  Application.EnableEvents = False
  ' Avec la feuille
  With Sheets("ALIAS")
    ' Ajouter les valeurs
    .Range("a65536").End(xlUp).Offset(1, 0).Value = Activité.TextBox1.Value
    .Range("a65536").End(xlUp).Offset(, 1).Value = Activité.TextBox2.Value
    ' Faire le tri
    .Range("A2", .Range("B65536").End(xlUp)).Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
                                        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  ' Redéfinir la plage
    ThisWorkbook.Names.Add _
      Name:="libelle", _
      RefersToR1C1:="=ALIAS!R2C1:R" & Sheets("ALIAS").Range("A65536").End(xlUp).Row & "C1"
  ' Pourrais être fait via la formule suivante dans le nom
  ' =DECALER($A$1;1;;NBVAL($A:$A)-1)
  
  ' Réactiver les évènements
  Application.EnableEvents = True
  ' Réactiver l'affichage
  Application.ScreenUpdating = True
End Sub

Mais je pense que tu n'as plus besoin du ScreenUpdating du coup, puisqu'on active plus la feuille

A+
 
Re : [VBA] ScreenUpdating

exact merci beaucoup pour ton aide.
voici le code "final" et qui marche bien:
Code:
Private Sub Ajout_Click()
  ' Avec la feuille
  With Sheets("ALIAS")
    ' Ajouter les valeurs
    .Range("a65536").End(xlUp).Offset(1, 0).Value = Activité.TextBox1.Value
    .Range("a65536").End(xlUp).Offset(, 1).Value = Activité.TextBox2.Value
    ' Faire le tri
    .Range("A2", .Range("B65536").End(xlUp)).Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
                                        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  ' Redéfinir la plage
    ThisWorkbook.Names.Add _
      Name:="libelle", _
      RefersToR1C1:="=ALIAS!R2C1:R" & Sheets("ALIAS").Range("A65536").End(xlUp).Row & "C1"
  ' Pourrais être fait via la formule suivante dans le nom
  ' =DECALER($A$1;1;;NBVAL($A:$A)-1)
    Unload Activité
    Activité.Show
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
791
Réponses
5
Affichages
910
Réponses
1
Affichages
323
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour