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

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

DJISA

XLDnaute Occasionnel
Bonsoir le forum
Nous joignons le fichier oublié dans la discussion précédente intitulé Mise en majuscule et minuscule automatique(boucle sur plusieurs feuilles)
DJISA
 

Pièces jointes

  • Mise en majuscule ou en minuscule automatisée.xlsm
    18.6 KB · Affichages: 4

xUpsilon

XLDnaute Accro
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
 

Staple1600

XLDnaute Barbatruc
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
 

Staple1600

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
0
Affichages
243

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo