Changer la casse en majuscule

mikael2403

XLDnaute Junior
Bonjour,

J'utilise la macro suivante que je souhaiterai modifier :

Elle consiste à changer la casse d'une cellule de minuscule à majuscule.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Vl As Range
If Target.Address = "$U$30" Then Range("K38:O39", "R38:Y39").ClearContents
Application.ScreenUpdating = False
For Each Vl In ActiveSheet.UsedRange
Vl = UCase(Vl)
Next
Application.ScreenUpdating = True

End Sub

Je souhaite que la macro ne s'éxécute que sur les cellules AK14 et AJ22.
Comment faire ?

Merci.
Mikael.
 

mikael2403

XLDnaute Junior
Re : Changer la casse en majuscule

Bonsoir JP14,

Merci pour ta réponse.

J'ai fais le test avec la code ci-dessous :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Vl As Range
If Target.Address = "$U$30" Then Range("K38:O39", "R38:Y39").ClearContents
Application.ScreenUpdating = False
For Each Vl In ActiveSheet.UsedRange
If Vl.Address = "$AK$14" Or Vl.Address = "$J$22" Or Vl.Address = "$U$22" Then
Vl = UCase(Vl)
End If
Next
Application.ScreenUpdating = True

End Sub

Je ne peux plus rien sur Excel pendant près de 5mn.
J'ai l'impression que ça lance la macro sur toute la feuille quand même.

Existe-t-il une autre solution pour changer la casse de mes 3 cellules uniquement ?

Merci d'avance.
 

wilfried_42

XLDnaute Barbatruc
Re : Changer la casse en majuscule

re:

Code:
For Each Vl In ActiveSheet.UsedRange
If Vl.Address = "$AK$14" Or Vl.Address = "$J$22" Or Vl.Address = "$U$22" Then
Vl = UCase(Vl)
End If
Next
il n'ya a pas vraiement besoin de boucle pour gerer 2 cellules
Code:
Activesheet.range("$J$22") = ucase(Activesheet.range("$J$22"))
Activesheet.range("$U$22") = ucase(Activesheet.range("$U$22"))


Edit : Oups collision : bonjour Pierrot
 
Dernière édition:

mikael2403

XLDnaute Junior
Re : Changer la casse en majuscule

Re à tous,

En effet la boucle bloque complètement Excel.

La dernière solution de JP14 fonctionne parfaitement pour 1 cellule mais dès que je veux en ajouter 2 ou 3 ça ne fonctionne plus et excel se bloque à nouveau.

voici le code que j'y insère, peut-être qu'il a une erreur qui empêche la bonne exécution :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$U$30" Then Range("K38:O39", "R38:Y39").ClearContents
Sheets(ActiveSheet.Name).Range("$AK$14") = UCase(Sheets(ActiveSheet.Name).Range("$AK$14"))
Sheets(ActiveSheet.Name).Range("$J$22") = UCase(Sheets(ActiveSheet.Name).Range("$J$22"))
Sheets(ActiveSheet.Name).Range("$U$22") = UCase(Sheets(ActiveSheet.Name).Range("$U$22"))

End Sub


L'erreur surligne en Jaune la dernière ligne :

Code:
Sheets(ActiveSheet.Name).Range("$U$22") = UCase(Sheets(ActiveSheet.Name).Range("$U$22"))
 

JNP

XLDnaute Barbatruc
Re : Changer la casse en majuscule

Bonjour le forum :),
J'avoue qu'il y a quelque chose qui m'échappe: pourquoi vouloir passer en majuscule 1, 2 ou 3 cellules fixes à chaque fois qu'il y a un changement sur la feuille? Au premier changement, tout est dit et la macro ne sert plus à rien... Sauf si c'est toujours ces cellules fixes qui sont modifiées... A ce moment là, il est plus facile de juste vérifier à la désélection que c'est une des 3 cellules qui a changé et la passer en majuscule à ce moment là...
Si je peux avoir quelques lumières :confused:.
Bon dimanche :cool:
 

mikael2403

XLDnaute Junior
Re : Changer la casse en majuscule

Bonjour,

Et bien je viens de faire le test avec la méthode SelectionChange :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets(ActiveSheet.Name).Range("$AK$14") = UCase(Sheets(ActiveSheet.Name).Range("$AK$14"))
Sheets(ActiveSheet.Name).Range("$J$22") = UCase(Sheets(ActiveSheet.Name).Range("$J$22"))
Sheets(ActiveSheet.Name).Range("$U$22") = UCase(Sheets(ActiveSheet.Name).Range("$U$22"))

End Sub

ça fonctionne parfaitement.

Merci beaucoup pour votre aide.

Bon Dimanche.
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 443
Membres
103 211
dernier inscrit
pierrecharbs