Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…