XL 2016 accelérer une macro pour écrire en majuscule

la fifine

XLDnaute Occasionnel
bonsoir à tous
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   For Each x In Range("z47,ad47,o51,s51,j55:j57,n55:n57,u55:u57,y55:y57,aj55:aj57,r62:r66,v62:v66,ah62:ah64,al62:al64,n66:n89")
      x.Value = Application.Proper(x.Value)
   Next
end sub
est-il possible d'accélérer cette macro qui prends environ 2 secondes à chaque changement de cellule?
je pense que je ne suis pas dans le bon évènement mais je ne vois pas où
merci de votre aide
 

vgendron

XLDnaute Barbatruc
Bonsoir

la mise en majuscule de la zone définie s'effectue dès que tu changes n'importe quelle cellule de ta feuille..
à priori, il faudrait que la mise en majuscule ne se fasse QUE si tu changes une des cellules de la zone..
donc. essaie ceci

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if not intersect(target, Range("z47,ad47,o51,s51,j55:j57,n55:n57,u55:u57,y55:y57,aj55:aj57,r62:r66,v62:v66,ah62:ah64,al62:al64,n66:n89")) is nothing then

      target.Value = Application.Proper(target.Value)
   end if
end sub
 
C

Compte Supprimé 979

Guest
Bonjour le fil

Il faut lancer la macro seulement au moment d'un changement dans la cellule
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("z47,ad47,o51,s51,j55:j57,n55:n57,u55:u57,y55:y57,aj55:aj57,r62:r66,v62:v66,ah62:ah64,al62:al64,n66:n89")) Is Nothing Then
    ' Penser à désactiver les évènements
    Application.EnableEvents = False
    ' Mettre en majuscule
    Target.Value = Application.Proper(Target.Value)
    ' Réactiver les évènements
    Application.EnableEvents = True
   End If
End Sub

A+
 

Statistiques des forums

Discussions
312 104
Messages
2 085 345
Membres
102 868
dernier inscrit
JJV