VBA - Texte en majuscule ou minuscule dans plusieurs groupes de cellules

Bonjour,

J'ai ce code qui fonctionne très bien pour pouvoir mettre le texte de certaines cellules de ma colonne A en majuscule et j'aimerais le modifier pour pouvoir en faire autant avec certaines cellules de mes colonnes D et F (texte en MAJUSCULE), certaines cellules de mes colonnes H et J (texte en minuscule) et certaines cellules de mes colonnes L et N (texte avec uniquement la première lettre est en Majuscule).

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="."
Set Target = Intersect(Target, Range("A3:A9999"))
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Target In Target
If Application.IsText(Target) Then Target = UCase(Target)
Next
Application.EnableEvents = True
ActiveSheet.Protect AllowInsertingHyperlinks:=True, Password:="."
End Sub

Pouvez-vous m'aider?

Mes meilleures salutations,

Thierry

Bonjour,

ce code ne peut pas fonctionner correctement, après sa première utilisation.

worksheet_change ne fonctionne que s'il y a une modification d'une cellule. Or la protection, activée à la fin de cette macro événementielle, empêche toute modification ultérieure.

soit il faut supprimer cette protection, soit ne pas utiliser une macro événementielle (mais une macro déclenchée à la demande).

Private Sub Worksheet_Change(ByVal Target As Range)
    'ActiveSheet.Unprotect Password:="."
    Set Groupe = Application.Intersect(Target, Range("A:N"))
    If Not Groupe Is Nothing Then
        Application.EnableEvents = False
        For Each cell In Groupe
            If Application.IsText(cell) Then
                Select Case cell.Column
                    Case 1, 4, 6 'A,D,E
                        cell.Value = UCase(cell)
                    Case 8, 10 'H,J
                        cell.Value = LCase(cell)
                    Case 12, 14 'L,N
                        cell.Value = Application.Proper(cell)
                End Select
            End If
        Next
    End If
    Application.EnableEvents = True
    'ActiveSheet.Protect AllowInsertingHyperlinks:=True, Password:="."
End Sub

Bonjour h2so4,

Merci pour votre code qui me semble fonctionnel mais je souhaite vraiment garder le verrouillage de ma feuille.

Mes meilleures salutations,

Thierry

bonsoir,

une procédure à exécuter à lancer manuellement, (par exemple par alt-f8) quand souhaité.

Sub aargh()
    ActiveSheet.Unprotect Password:="."
    For Each col In split("A,D,E,H,J,L,N",",") 'les colonnes à prendre en compte
        Application.EnableEvents = False
        dl = Cells(Rows.Count, col).End(xlUp).Row
        For i = 3 To dl
            Set cell = Cells(i, col)
            If Application.IsText(cell) Then
                Select Case col
                    Case "A","D","E"
                        cell.Value = UCase(cell)
                    Case "H","J"
                        cell.Value = LCase(cell)
                    Case "L","N"
                        cell.Value = Application.Proper(cell)
                End Select
            End If
        Next i
    Next col
    Application.EnableEvents = True
    ActiveSheet.Protect AllowInsertingHyperlinks:=True, Password:="."
End Sub

Bonjour h2so4,

Je me rends compte que je n'ai pas répondu à votre dernier post et je m'en excuse.

Votre code à lancer manuellement fonctionne très bien et je vous en remercie.

Mes meilleures salutations et belles fêtes de fin d'année!

Rechercher des sujets similaires à "vba texte majuscule minuscule groupes"