Changer la casse dans les cellules selectionnées

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 626 fois - Téléchargée 48 fois

Contenu du snippet

Cette procédure permet de basculer alternativement le contenu des cellules sélectionnées, de Majuscule en Minuscule ou en Initiale Majuscule (Majuscule en début de chaque mot)
Cette procédure pourra être stockée dans le classeur de macros personnelles et rattachée à un raccourci clavier (exemple CTRL k (k comme lettre "K"apitale)) ou mieux encore convertie en macro complementaire
REMARQUE : A CE PROPOS IL EST IMPOSSIBLE DE MODIFIER UNE MACRO COMPLEMENTAIRE AUSSI N'OUBLIEZ PAS DE GARDER LE CODE SOURCE DE CELLE-CI

Source / Exemple :


Sub ConvertCasse()

' Déclaration des variables

Dim element

' Traitement de la sélection

For Each element In Selection

Select Case True
' le contenu est en minuscule -> conversion en Majuscule (UCASE = Upper Case)
    Case element.Value = LCase(element.Value)
        element.Value = UCase(element.Value)
' le contenu est en majuscule -> conversion en initiale majuscule par appel à la fonction EXCEL : "NOMPROPRE()"
    Case element= UCase(element.Value)
        element.Value = Application.WorksheetFunction.Proper(element.Value)
    Case Else
' le contenu n'est ni majuscule, ni minuscule -> conversion en minuscule (LCASE= Lower Case)
        element.Value = LCase(element.Value)
    End Select

Next

' Ajustement automatique de la colonne

ActiveCell.Columns.AutoFit

End Sub

A voir également

Ajouter un commentaire

Commentaires

papol2
Messages postés
1
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
15 avril 2008
-
Intéressant, sauf que cela ne marche pas si la cellule ne contient qu'une lettre ou des lettres unitaires séparées par des signes ou chiffres (par exemple a-b , elle(s) reste(nt) désespérément en majuscule(s), car dans ce cas il n'y apas de différence entre "tout en majuscule" et "nom propre".
Il suffit pour y remédier de changer l'ordre des comparaisons, soit :

Sub ConvertCasse()
' Déclaration des variables
Dim element
' Traitement de la sélection
For Each element In Selection
' Il ne faut pas modifier les cellules qui ne soient pas du texte
If element.HasFormula = False And element.Value <> "" Then
Select Case True
' le contenu est en majuscule
' -> conversion en minuscule (LCASE= Lower Case)
Case element.Value = UCase(element.Value)
element.Value = LCase(element.Value)
' le contenu est en minuscule -> conversion en nom propre par
' appel à la fonction EXCEL : "NOMPROPRE()"
Case element = LCase(element.Value)
element.Value = Application.WorksheetFunction.Proper(element.Value)
Case Else
' le contenu n'est ni en minuscule, ni nom propre,
' -> conversion en majuscule (UCASE = Upper Case)
element.Value = UCase(element.Value)
End Select
End If
Next
' Ajustement automatique de la colonne
ActiveCell.Columns.AutoFit
End Sub

Et hop ! ça marche. (J'ai rajouté un test pour éviter de replacer les formules par leur résultat.

Papol2
taubalo
Messages postés
1
Date d'inscription
mercredi 22 septembre 2004
Statut
Membre
Dernière intervention
22 septembre 2004
-
enfin ,,,,,cela fait 1 mois que je cherchais ce code et en plus il fonctionne j'ai simplement supprimé la ligne
"ActiveCell.Columns.AutoFit"
merci encore
cs_Isa45
Messages postés
7
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
27 octobre 2003
-
interressant !!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.