Minuscule / majuscule

  • Initiateur de la discussion Initiateur de la discussion niala
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

niala

Guest
Bonjour à toutes et à tous
Je voudrai que la saisie dans une cellule (n'importe laquelle) soit automatiquement ( sans validation d'une macro par exemple) affichée en majuscule.
Et ce même après effacement par exemple et réécriture.
Merci pour votre aide
 
Re : Minuscule / majuscule

Bonjour niala,
Si il s'agit de modifier n'importe quelle cellule de la feuille active, tu peux utiliser une macro dans le code de la feuille.(Dans l'exemple, click droit sur l'onglet / Visualiser le code)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Count = 1 Then
        If .Value <> "" Then .Value = UCase(.Value)
    End If
End With
End Sub

Cordialement
 

Pièces jointes

Re : Minuscule / majuscule

Bonjour à tous


Une petite variante (histoire de croiser Efgé que je salue 😉) et parce que seules les lettres se "majusculisent" 😉
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Count = 1 Then
        If Not IsNumeric(.Value) Then .Value = UCase(.Value) 'parce les chiffres ne connaissent pas les majuscules
'ni les minuscules d'ailleurs ;-)
    End If
End With
End Sub

EDITION
: En y repensant, que la cellule soit vide , on s'en fiche, une cellule vide en majuscule reste une cellule vide
Donc on peut se contenter de simplement écrire:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
.Value = IIf(.Count = 1, UCase(.Text), .Value)
End With
End Sub
ou une variante avec StrConv

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
.Value = IIf(.Count = 1, StrConv(.Text, vbUpperCase), .Value)
End With
End Sub
 
Dernière édition:
Re : Minuscule / majuscule

Re


Essaies avec cette modif
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
.Value = IIf((.Count = 1 And Not IsDate(.Value)), UCase(.Text), .Value)
End With
End Sub

EDITION: On risque davoir des soucis lores de copier/coller incluant une sélection de plusieurs cellules, ou si on fait des drag'n drop

Je vais chercher comment gérer la chose et reviens après avoir tester
 
Dernière édition:
Re : Minuscule / majuscule

Re

EDITION: Finalement mieux vaut 3 IF qu'un IIF, donc avec la syntaxe Egféienne, cest mieux (et plus de soucis pour les copier/coller et glisser/déposer)

Je te conseille donc d'oublier mes codes avec IIF 😱 mais plutot d'utiliser celui-là, ci-dessous
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Areas.Count > 1 Then Exit Sub
With Target
    If .Count = 1 Then
        If Not IsDate(.Value) Then
        If Not .HasFormula Then
        .Value = UCase(.Value)
        End If
        End If
    End If
End With
End Sub



On avait oublier le cas ou tu veux saisir une formule
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Areas.Count > 1 Then Exit Sub
With Target
.Value = IIf(.Count = 1 And Not IsDate(.Value) And Not .HasFormula, UCase(.Text), .Value)
End With
End Sub


PS: Reste le problème évoqué dans mon précédent message.
 
Dernière édition:
Re : Minuscule / majuscule

Re niala, Bonjour Staple 🙂
Il faut quand même vérifiier si la cellule est vide (pas de ucase de "" 😀)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Count = 1 Then
        If .Value <> "" And Not IsDate(.Value) Then .Value = UCase(.Value)
    End If
End With
End Sub
@ Staple
Pour le "formula", sans il n'y a pas de problème.
Le vrai souci, que je ne vois pas comment éviter est :
On commence une formule de type = SOMME(
On sélectiionne les cellules à sommer
==> Plantage

Je regarde de mon coté aussi, mais si tu as une idée..
Cordialement
 
Re : Minuscule / majuscule

Merci à tous les deux,

La macro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Areas.Count > 1 Then Exit Sub
With Target
.Value = IIf(.Count = 1 And Not IsDate(.Value) And Not .HasFormula, UCase(.Text), .Value)
End With
End Sub

fonctionne très bien.
Les cellules dates gardent le format demandées et les autre cellules sont automatiquement en majuscules.

Grand merci et bon dimanche
 
Re : Minuscule / majuscule

Bonjour,

Je trouve bizarre cette ligne de code des procédures proposées :

With Target
If .Count = 1 Then <<<<<==========

Quelqu'un veut bien cette obsession de limiter le truc à une cellule.

Qu'est-ce qui se passe, si on fait un copier-coller d'une liste?
Pourquoi la procédure ne s'appliquerait pas?


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
Application.EnableEvents = False
For Each C In Target
    If C.HasFormula = False Then  'afin de ne pas affecter les formules
        C.Value = UCase(C.Value)
    End If
Next
Application.EnableEvents = True
End Sub
 
Dernière édition:
Re : Minuscule / majuscule

Bonjour MichD

MichD
Sur mon PC, avec mon code utilisant IIF, si je fais un drag'n drop une dizaine de lignes d'une colonne dans une autre
le curseur de la souris reste en sablier pendant une dizaine de seconde.
(Sur une feuille sans procédure événementielle, le sablier ne s'affiche pas)
C'est pour cela que j'ai testé en réécrivant le code sans IIF (cf précédent message et avec ce code réécrit pas de sablier)


PS: En utilisant Application.EnableEvents, je n'ai plus le phénomène avec le sablier. Merci 😉
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'code VBA avec IIF
Application.EnableEvents = True
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 archivage excel
Réponses
12
Affichages
274
  • Question Question
XL pour MAC mise en forme
Réponses
2
Affichages
621
Réponses
10
Affichages
408
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
312
Retour