Excel 2007 Mise en forme Majuscule sur des plages

Résolu
Mouftie Messages postés 234 Statut Membre -  
 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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  3. Mouftie Messages postés 234 Statut Membre 17
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      .... De rien
      0
    3. mouftie
       
      Merci Michel, C'est beaucoup mieux maintenant, désolée de ne pas avoir répondu plutôt, j'étais en déplacement.
      0