[VBA] ScreenUpdating

W660

XLDnaute Nouveau
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

  • pointageanon.xls
    89 KB · Affichages: 89
  • pointageanon.xls
    89 KB · Affichages: 80
  • pointageanon.xls
    89 KB · Affichages: 91
C

Compte Supprimé 979

Guest
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+
 

W660

XLDnaute Nouveau
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
 
C

Compte Supprimé 979

Guest
Re : [VBA] ScreenUpdating

Bonjour

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


A+
 

W660

XLDnaute Nouveau
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)
 
C

Compte Supprimé 979

Guest
Re : [VBA] ScreenUpdating

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

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+
 

W660

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
6
Affichages
136

Statistiques des forums

Discussions
312 211
Messages
2 086 284
Membres
103 170
dernier inscrit
HASSEN@45