Excel 2007 Mise en forme Majuscule sur des plages

Résolu/Fermé
Signaler
Messages postés
215
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
6 septembre 2020
-
 mouftie -
Bonjour,
Je voudrais que les saisies faites sur certaines plages de toutes les feuilles du classeur se mettent automatiquement en majuscule ; j'ai trouvé pleins de solutions, aucune ne fonctionne pour moi (toutes positionnées dans ThisWorkbook) :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:C3, A6:C7, A11:C14")) Is Nothing Then Target = UCase(Target)
End Sub

ou encore :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        'Converti les saisies en majuscule
        Target.Value = UCase(Target.Value)
End Sub

ou encore
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then 'Si la modification a été effectuée sur la ligne 1 alors on met tout en majuscule
   Target.Value = UCase(Target.Value) 'On met en majuscule
End If
End Sub

Est-ce que qq'1 vcomprend mon pb et peut m'aider ?

3 réponses

Messages postés
16547
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2022
3 258
Bonjour
Si tes macros sont dans le module Thisworkbook, la syntaxe est par exemple
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 



Michel
0
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 304
Bonjour,

je confirme ce que vient de dire Michel_m :
- les macros dans 'Thisworkbook' commencent par Workbook_
- les macros dans une feuille commencent par Worksheet_

Donc soit tu déplaces tes macros Worksheet sur la feuille concernée par la conversion en majuscules, soit tu les modifies selon ce qu'a gentiment indiqué michel_m.

Cordialement.
0
Messages postés
215
Date d'inscription
vendredi 28 novembre 2008
Statut
Membre
Dernière intervention
6 septembre 2020
14
Bonjour, Merci à vous deux.
Effectivement, comme débutante, j'ai encore du mal avec le choix pour inserrer le code.
Maintenant que j'ai mis, dans thisWorkbook,
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        'Converti les saisies en majuscule
If Not Intersect(Target, Range("A1:s3, A6:s7, A11:s14")) Is Nothing Then Target = UCase(Target)
End Sub
si j'écris qq sur n'importe quelle feuille (dans les plages spécifiées), Excel converntit bien en majuscule, mais il moulinne en clignotant jusqu'à ce que j'échappe ou pause.
Pourquoi ?
0
Messages postés
16547
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2022
3 258
C'est normal car ton déclenchement s'effectue lors d'un changement dans la cellule cible donc la macro mouline...
If Not Intersect(Target, Range("A1:s3, A6:s7, A11:s14")) Is Nothing Then  
     Application.EnableEvents = False  
     Target = UCase(Target)  
     Application.EnableEvents = True  
End If

Enableevents=False désamorce les événements délencheurs
0
Messages postés
16547
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2022
3 258
.... De rien
0
Merci Michel, C'est beaucoup mieux maintenant, désolée de ne pas avoir répondu plutôt, j'étais en déplacement.
0