Changer la casse automatiquement

Bonjour,

J'ai trouver un code pour modifier la casse d'une cellule qui fonctionne très bien (dans mon exemple cellule C5).

Par contre je n'arrive pas à le rendre automatique en passant par "Private Sub Worksheet_Change(ByVal Target As Range)"...

Quelqu'un a t'il une réponse ?

Merci d'avance.

Sub Uppercase()

   For Each x In Range("C5")

      x.Value = UCase(x.Value)
   Next
End Sub

Bonjour,

un essai :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C5")) Is Nothing Then
        Application.EnableEvents = False
        Target.Value = UCase(Target.Value)
        Application.EnableEvents = True
    End If
End Sub

@ bientôt

LouReeD

Bonjour

Code à essayer

Dim ok As Boolean
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If ok = True Then Exit Sub
If Not Intersect(Target, Range("C5")) Is Nothing Then
ok = True
Target = UCase(Target)
End If
ok = False
End Sub

Si ok, merci de cloture le fil en cliquant sur le V vert à coté du bouton EDITER lors de votre réponse

Cordialement

Edit : Loureed, l'instruction Enableevents est à éviter car en cas de plantage en plein milieu du code, toutes macros événementielles seront désactivées.

Bonjour,

C'est nickel. Merci.

Bonjour Dan,

et merci pour l'avertissement, mais pour moi si ça existe c'est qu'il y a une raison...

Et puis même les plus grand on des bugs à corriger dans leur code... non ?

@ bientôt

LouReeD

Re Loureed

"Avertissement" est un grand mot et effectivement si cela existe c'est que cela sert.

Mettons que personnellement si je les évite par expérience cas de plantage. Quelques fois on tourne en rond pour donner une solution parce que plus rien ne fonctionne et au final c'est uniquement parce que l'utilisateur a eu un plantage ou simplement parce qu'il a arrêté le code en cours d'exécution.

Si je devais utiliser cette instruction, j'ajouterais un deuxième code qui s'exécute à l'ouverture du fichier par exemple pour être sûr que les événements soient bien actifs.

voili voilou

Sinon bonne fête de fin d'année

Re_bonjour,

En fait j'ai tout de même un petit bug :

Le code fonctionne très bien seul, mais lorsque je mets dans un module une macro pour insérer une ligne, alors j'ai un plantage sur la ligne Target = UCase(Target) (j'ai mis un exemple en pièce jointe). Pourtant, si je met des caractères minuscules en C5, j'ai bien la modification de la casse souhaitée. C'est après que ça plante...

J'avoue ne pas comprendre exactement ce qui peut se passer quand j'exécute la macro "Nouvelle entrée"...

Savez-vous pourquoi ?

Merci d'avance.

Bonjour,

Essaie comme cela

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim ok As Boolean
    If ok = True Or Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C5")) Is Nothing Then
        ok = True
        Target = UCase(Target)
    End If
    ok = False
End Sub

A+

Bonjour,

Effectivement comme ça tout fonctionne.

Merci et bonnes fêtes !

Re,

Aïe, juste le même plantage lorsque je supprime la valeur de la cellule C5...

Sinon lors de l'incrémentation pas de soucis...

Rien de grave, mais il faut juste que je ferme et ré-ouvre.

Y'a t'il moyen de contrer cela ?

Bonne après-midi.

J'ai mal positionné la déclaration de la variable ok.

Fais le test comme cela

A+

Effectivement comme ça c'est parfait.

Merci et bon réveillon !

A+

Rechercher des sujets similaires à "changer casse automatiquement"