Résolu 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
 
Ce fil a été résolu! Aller à la solution…

xUpsilon

XLDnaute Impliqué
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
 

DJISA

XLDnaute Occasionnel
Salut xUpsilon, le forum!
J'ai testé ta proposition mais ça ne fonctionne pas malheureusement.
Merci
DJISA
 

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
 
Ce message a été identifié comme étant une solution!

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas