Majuscule dans colonnes

Résolu
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   -  
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un fichier ou dans les colonnes D H et O par macro je mets en majuscule
la macro fonctionne bien jusqu'à ce que je sélectionne plusieurs cellules et que je veux effacer la macro se met en erreur de type.
je comprends que les cellules sélectionnées ne sont pas dans la plage "zone_maj "
que j'ai définie de 3 a 250 dans les colonnes D H et O.
comment contourner ce problème?
peut on définir les cellules a mettre en majuscule sur toute la colonne ou au fur et a mesure que l'on rajoute des lignes?
je vous mets le fichier en exemple
https://www.cjoint.com/c/DEkqExeGhxC
merci de votre aide
a bientot
surplus

3 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    essaye comme cela

    Private Sub Worksheet_Change(ByVal Target As Range)
    'if Range("zone_maj")
    On Error Resume Next
    Application.EnableEvents = False
    If Not Intersect(Target, Range("zone_maj")) Is Nothing Then
    Application.EnableEvents = False
    Target = UCase(Target)
    End If
    Application.EnableEvents = True
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  2. surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
     
    bonjour
    cela fonctionne bien
    pour que je comprenne bien
    vous avez rajouté
    On Error Resume Next
    cela veut dire que si y a erreur d"abandonner la macro?
    merci
    a bientot
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Oui c'est exactement cela, ça évite de mettre le Visual en Erreur
    j'ai également libéré cette ligne
    Application.EnableEvents = False
    si on applique l'Application.EnableEvents en début avec un False il faut rétablir l'application en fin de procédure avec Application.EnableEvents = True

    uniquement Application.EnableEvents = True en fin de procédure comme tu avais fait ne sert à rien, autant le supprimer puisqu'en début tu n'avais pas suspendu l'application
    0
    1. surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
       
      Re,
      merci pour tes lumières
      a bientôt
      0