Une cellule écrite en minuscule, la mettre automatiquement en majuscule

pepsister

XLDnaute Junior
Bonjour,

J'ai un fichier d'adhérents dans lequel je dois mettre une adresse. Pour la colonne ville, j'ai mis une liste déroulante avec toutes les villes alentours en majuscules avec la possibilité d'écrire une ville qui n'est pas dans cette liste.
Je voudrais par contre forcer les majuscules de telle manière que si je rentre une ville qui n'est pas dans la liste elle soit automatiquement mise en majuscule. Comment puis-je faire ca? Je pense que la macro est obligatoire non? Si c'est possible sans macro je préfèrerais mais je ne trouve pas.
Merci de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Bonjour,

essaye peut être ceci, procédure événementielle à placer dans le module de la feuille concernée => click droit sur l'onglet => visualiser le code, s'appliquera à la colonne A :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
With Application
    .EnableEvents = False
    Target = UCase(Target)
    .EnableEvents = True
End With
End Sub

bonne journée
@+
 

Dormeur74

XLDnaute Occasionnel
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Bonjour tout le monde,

Autre proposition (même démarche) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Range(Target.Address).Select
    If Selection.Cells.Count > 1 Then Exit Sub
    Range(Target.Address).Value = VBA.UCase(Range(Target.Address).Value)
End Sub
 

pepsister

XLDnaute Junior
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Merci ca marche impeccable, par contre je voudrais le faire pour plusieurs colonnes, j'ai essayé avec:

If Target.Column <> 5 Or Target.Count > 5 Or Target.Column <> 11 Or Target.Count > 11 Then Exit Sub
mais là plus aucun des deux ne fonctionnent

j'ai aussi essayé:
If Not Intersect(Target, Columns("E:E","K:K")) Is Nothing Then Exit Sub
et là il me met en mode déboguage avec une erreur de compilation 13

Sachant que je dois le faire pour cinq colonnes environ avez vous une idée de comment rationnaliser la chose et éviter de répéter plusieurs fois l'instruction Target.column ... (et encore même avec cette solution je n'y arrive pas, mais je dois recontrer un pb de syntaxe car il n'y a pas de raison que ca ne marche pas de cette manière)

Merci encore!
 

Pierrot93

XLDnaute Barbatruc
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Re,

essaye ceci :
Code:
If Target.Column <> 5 And Target.Column <> 11 Or Target.Count > 1 Then Exit Sub

A noter "Target.Count" sert à controler le nombre de cellules modifiées afin d'éviter un plantage si action sur une szlection multiple....

Edition : un "And" au lieu du "Or"
 
Dernière édition:

pepsister

XLDnaute Junior
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Bon je ne comprends plus rien, ma fonction majuscule ne marche plus sans que j'ai pu toucher a ce code.

Là j'ai repris celle du début où je suis sure qu'elle marchait:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Then Exit Sub
With Application
.EnableEvents = False
Target = UCase(Target)
.EnableEvents = True
End With
End Sub

et même ca, ca ne marche plus. Tout reste en minuscule.

Quelqu'un sait-il pourquoi?
 

eriiic

XLDnaute Barbatruc
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Bonjour,

Si tu l'as arrêtée au milieu tu n'as pas rétabli la supervision des évènements avec application.enableEvents=true
Crée-toi un petit sub avec juste cette ligne pour la rétablir et re-teste.

eric
 

Pierrot93

XLDnaute Barbatruc
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Re,

le mieux est de savoir se qui a provoqué l'erreur ???? post #2 je proposais :
Code:
If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
pour éviter le plantage si modification plusieurs cellules...

bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Une cellule écrite en minuscule, la mettre automatiquement en majuscule

Re,

pour relancer les événements si plantage :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
On Error GoTo fin
With Application
    .EnableEvents = False
    Target = UCase(Target)
fin:
    .EnableEvents = True
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 237
Membres
103 497
dernier inscrit
JP9231