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

Mettre en Majuscule

  • Initiateur de la discussion Christian
  • Date de début
C

Christian

Guest
Bonjour,
J'ai un formulaire réalisé sous Excel et je souhaiterai que la personne n'ai pas a appuyer sur la touche majuscule. Existe t'il un moyen de forcer Excel a ecrire en Majuscule.
Merci d'avance pour votre réponse.
Christian
 
S

steplof

Guest
Bonsoir à tous

Tu peux contourner le problème en mettant une procédure évenementielle qui va transformer la saisie de ton user en majuscule à la fermeture du classeur par exemple:

si les données saisies sont en colonne A:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each cell In Range("a1:a15")
cell.Value = UCase$(cell.Value)
Next

End Sub
ou en masquant la colonne qui reçoit les données de ton formulaire (A par exemple) et en B insérer une colonne avec la formule = majuscule(a(ligne))

en espérant t'avoir un peu aidé.

Steplof
 
J

Jacques

Guest
Bonsoir Christian,
Il n'existe pas à ma connaissance de moyen d'obliger Excel à écrire en majuscule (contrairement à Word où il y a une option majuscule pour la police).

Si ton utilisateur ne valide les données qu'il entre qu'avec la touche entrée ou les touches de direction, tu peux mettre le code suivant :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lig = ActiveCell.Row
col = ActiveCell.Column
If lig < 3 Then i = 1 - lig Else i = -2
If col < 3 Then j = 1 - col Else j = -2
For Each Cell In Range(ActiveCell.Offset(i, j), ActiveCell.Offset(2, 2))
Cell.Value = UCase(Cell.Value)
Next
End Sub

Mais cela ne fonctionnera pas si on passe d'une cellule à une autre avec la souris. Dans ce dernier cas il faut utiliser la procédure que te propose Steplof.

Bonne soirée
 
J

jacquesderyes

Guest
Bonsoir Christian


Code a placer dans la feuille concernée


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False ---->evite de boucler lorsque la macro tourne



vérifie si des cellules contiennent des formules ou des chiffres afin de ne pas les modifier

If (Not ActiveCell.HasFormula) And _
(Not IsNumeric(ActiveCell.Value)) Then _

ActiveCell.Value = UCase(ActiveCell.Value)
Application.EnableEvents = True
End Sub

Celà devrait marcher
Amitiés à tous

Jacques de ryes
 
A

andré

Guest
Salut Christian, steplof, Jacauqes et toutes et tous les autres,

J'ai rencontré un problème similaire, mais en sens inverse.
J'en fais un nouveau post sous "format".

André.
 
S

Stéph

Guest
Bonjour,

Je suis ravie de voir que l'informatique est aussi complexe que je pouvais le penser, mais moi je suis nul !!!!

Voila mon problème:
J'ai un fichier de 2000 adresses écritent en mininuscules et je souhaite tout passer en majuscule, comment puis-je faire sans reécrire les 2000 adresses une par une???

Pouvez-vous me l'expliquer simplement, et me dire quelles touches de mon clavier dois je solliciter !!!
Merci
 
M

michel

Guest
bonjour steph

je ne sais pas si cela peut fonctionner en activant des touches de clavier

par contre la procedure ci dessous et le fichier joint en exemple devraient te permettre de transformer toutes les minuscules d'un feuille ( Feuil1 dans l'exemple ) en majuscule

Sub majuscule()
Dim Val As Range
For Each Val In Sheets("feuil1").UsedRange
Val = UCase(Val)
Next
End Sub

bonne après midi
Michel
 

Pièces jointes

  • majuscule.zip
    8.3 KB · Affichages: 44
  • majuscule.zip
    8.3 KB · Affichages: 42
  • majuscule.zip
    8.3 KB · Affichages: 41
F

fabrice

Guest
Bonjour à vous tous :=)

J'ai aussi un souci avec les majuscules et XL !!!

Pour le résoudre, j'ai pris la méthode de Steplof:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each cell In .Range("b65536").End(xlUp)
cell.Value = UCase$(cell.Value)
Next

End Sub

J'ai modifier le range pour qu'il aille jusqu'a la dernière cellule de la colonne mais si il y a une cellule vide, il ne met en majuscule que la dernière et pas celles d'avant!!!

Est ce que quelqu'un à la réponse à ce problème???

Merci de votre aide
FAb
 
@

@Christophe@

Guest
Bonjour Fab

Remplace ton code par celui la:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each cell In Range("B1:B" & Range("b65536").End(xlUp).row)
cell.Value = UCase$(cell.Value)
Next
End sub

Bonne journée

@Christophe@
 
@

@Christophe@

Guest
Re

Ben si on veux, lol

Ce que tu dois faire, tu dois constituer une Range ou il doit agir, comme Range("A1:A15") dans l'exemple de Steplof

Maintenant toi, tu veux et tu as raison, faire pour la colonne, du moins jusqu'a la dernière celulle, alors que dois tu faire, constituer une range

tu es sur que tes données commenct en B1, donc tu as le début, en VBA cela donne

Range("B1:

Maintenant il te manque la deuxième partie

tu es sur que c'est toujours en colonne B donc:

Range("B1:B

la il te reste plus qu'a trouvé la ligne de la dernière cellule utilisé de ta collone donc

Range("B1:B" & Range("b65536").End(xlUp).row)

Tu peux très bien stocké la ligne suivant dans un varialbe:
Range("b65536").End(xlUp).row

Cela donne

Dim dernCell as interger

Derncell = Range("b65536").End(xlUp).row

Range("B1:B" & Derncell)

Comme tu veux


Range("b65536").End(xlUp).row tu donne le numéro de la dernière ligne utilisé

Voila pour ton info

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