XL 2013 Mise en majuscule et minuscule automatique (boucle sur plusieurs feuilles)

  • Initiateur de la discussion Initiateur de la discussion DJISA
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DJISA

XLDnaute Occasionnel
Bonjour le forum!
Nous voudrions automatiser la mise en majuscule ou minuscule simultanément sur plusieurs feuilles d'un classeurs. Mais nous avons rencontré des difficultés avec le code ci-dessous. C'est un essai pour la mise en minuscule. Le problème est que le code ne s'applique que dans la feuille active.
Pour être plus concret nous joignons un fichier exemple.

VB:
Sub Mise_en_minuscule()
Dim sheet As Worksheet
Dim Plageprenom As Range
Dim Plagenom As Range
Dim cell As Range

For Each sheet In Worksheets
Set Plageprenom = Range("B5:B2000")
Set Plagenom = Range("C5:C2000")
For Each cell In Plageprenom
cell = LCase(cell)
Next
Next
End Sub

Merci d'avance.
DJISA
 
Solution
Re

Et une version paramétrée pour tout "casser"
😉
VB:
Sub Minuscules()
ChangerCasse
End Sub
Sub Majuscules()
ChangerCasse vbUpperCase
End Sub
Sub NomPropre()
ChangerCasse vbProperCase
End Sub

Private Sub ChangerCasse(Optional Casse As VbStrConv = vbLowerCase)
Dim sheet As Worksheet, cell As Range
Application.ScreenUpdating = False
For Each sheet In Worksheets
For Each cell In sheet.Range("B5:C2000")
If Len(cell) Then
cell = StrConv(cell, Casse)
End If
Next
Next
End Sub
Bonjour,

Quelques éclaircissements :
- l'outil Range s'applique par défaut au classeur actif et à la feuille active.
- c'est donc pour ça que votre code ne s'exécute que sur la feuille active
- pour travailler sur les autres feuilles 2 possibilités :
- appeler la feuille et l'activer : Worksheets(i).Activate
- devant Range, ajouter Worksheets(i) de manière à avoir Worksheets(i).Range(__), ce qui va travailler sur le range de la ième feuille, sans pour autant l'activer.
Je vous laisse choisir la solution que vous convient le mieux.

Bonne continuation
 
Bonsoir le fil

Une possible façon de modifier la macro initiale
(test OK)
VB:
Sub Mise_en_minuscule2()
Dim sheet As Worksheet, cell As Range
Application.ScreenUpdating = False
For Each sheet In Worksheets
For Each cell In sheet.Range("B5:C2000")
If Len(cell) Then
cell = LCase(cell)
End If
Next
Next
End Sub
 
Re

Et une version paramétrée pour tout "casser"
😉
VB:
Sub Minuscules()
ChangerCasse
End Sub
Sub Majuscules()
ChangerCasse vbUpperCase
End Sub
Sub NomPropre()
ChangerCasse vbProperCase
End Sub

Private Sub ChangerCasse(Optional Casse As VbStrConv = vbLowerCase)
Dim sheet As Worksheet, cell As Range
Application.ScreenUpdating = False
For Each sheet In Worksheets
For Each cell In sheet.Range("B5:C2000")
If Len(cell) Then
cell = StrConv(cell, Casse)
End If
Next
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
316
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
447
Réponses
4
Affichages
581
Réponses
21
Affichages
978
Retour