Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 

jp14

XLDnaute Barbatruc
Re : Changer la casse en majuscule

Bonsoir

La réponse est dans la macro.

En testant l'adresse de la cellule
For Each Vl In ActiveSheet.UsedRange
if Vl.Address = "$AK$14" or Vl.Address ="$AJ$22" then
Vl = UCase(Vl)
end if
JP
 

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.
 

Pierrot93

XLDnaute Barbatruc
Re : Changer la casse en majuscule

Bonsoir Mikael, lp14

pas sur d'avoir tout compris, mais j'aurais peut être essayé comme ceci :

Code:
Dim c As Range
For Each c In Range("AK14,AJ22")
    c.Value = UCase(c.Value)
Next c

bonne soirée
@+
 

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:

jp14

XLDnaute Barbatruc
Re : Changer la casse en majuscule

Bonsoir

Il faut supprimer la boucle for next et utiliser simplement

Sheets(ActiveSheet.Name).range("$AK$14")=UCase(Sheets(ActiveSheet.Name).range("$AK$14"))

par exemple
 

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 .
Bon dimanche
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…