Ce code permet la convertion majucules-minuscules et vis-versa de chaînes de caractères au sein d'un classeur Excel.
Il a pour avantages :
- de convertir successivement le contenu de chaque cellule d'une plage sélectionnée sans qu'il n'y ait aucun "format" à spécifier (menu de sélection de la plage au sein de la subroutine, avec récupération dynamique des coordonnées de la cellule).
- d'utiliser une MsgBox (standard Excel) et non une UserForm (utilisateur), ce qui le rend portatif par simple copie des subroutines dans un module d'un classeur dans l'éditeur VBA.
Source / Exemple :
Sub globale()
Dim plage As Range, cel As Range
On Error GoTo finerreur
'SelectionPlage
Set plage = Application.InputBox("Sélectionnez les cellules à convertir :", "Sélection de cellules", Type:=8)
'Boucle sur chaque cellule de la plage sélectionnée
For Each cel In plage 'Sélection de la cellule dans la plage définie
cel.Select 'Convertion de la cellule sélectionnée
Call Convertion
Next cel
MsgBox "Traitement terminé.", vbInformation, "Convertion" 'information de fin
GoTo Fin
finerreur:
Fin:
End Sub
Sub Convertion()
Select Case ActiveCell.Value 'Valeur de la cellule
'CASSE UNIFROME (minimum 1 caractère)
Case ""
MsgBox ("BASCULEMENT IMPOSSIBLE :" & Chr(10) & "Cellule sélectionnée vide"), vbExclamation
Case Is = LCase(ActiveCell.Value) 'Passage en minuscules
ActiveCell.Value = UCase(ActiveCell.Value)
Case Is = UCase(ActiveCell.Value) 'Passage en majuscules
ActiveCell.Value = LCase(ActiveCell.Value)
Case Else
If IsNumeric(ActiveCell.Value) = True Then 'Test si la cellule est numérique
MsgBox ("BASCULEMENT IMPOSSIBLE :" & Chr(10) & "La cellule sélectionnée ne contient que des chiffres."), vbInformation
End If
'CASSE NON UNIFROME (minimum 2 caractères)
Select Case Mid(ActiveCell.Value, 2, 1) 'Test de la casse sur le 2ème caractère
Case Is = LCase(Mid(ActiveCell.Value, 2, 1)) 'Passage en minuscules
ActiveCell.Value = UCase(ActiveCell.Value)
Case Is = UCase(Mid(ActiveCell.Value, 2, 1)) 'Passage en majuscules
ActiveCell.Value = LCase(ActiveCell.Value)
End Select
End Select
End Sub
Conclusion :
Ce code utilise deux subroutines:
- la première (globale) affiche une MsgBox avec sélection de l'adresse des cellules de la plage sélectionnée, puis au sein de cette plage, sélectionne itérativement chaque cellule et appelle la subroutine de convertion du contenu.
- la seconde (convertion) effectue, comme son nom l'indique, la convertion du contenu de la cellule. Pour cefaire, j'utilise deux CAS : le premier convertit le contenu de la cellule lorsque sa casse est uniforme (LCase <-> Ucase), le second teste la casse sur le SECOND caractère (Mid("chaîne", pos. déb., long.)), de sorte à prendre en compte les chaînes en minuscules qui comportaraient un premier caractère en majuscule, puis effectue la convertion en fonction du résultat.
N.B.: Une MsgBox prévient des méprises qui consisteraient à tenter de convertir des chiffres!
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.