OVH Cloud OVH Cloud

Début de texte en majuscule

8 réponses
Avatar
Sulpice
Bonjour,
Excel 2000/WIN98SE. Ma question n'est certainement pas inédite mais je n'ai
rien trouvé dans le ng. Je voudrais que la 1ère lettre du texte entré dans
une cellule soit en majuscule. L'option "Mettre la 1ère lettre d'une phrase
en majuscule" est inopérante dans ce cas. Y a t-il une solution ? un réglage
? une macro ?
D'avance merci de vos conseils
Sulpice

8 réponses

Avatar
verificator
bonjour Sulpice,

pour ton problème, sans macro, point de salut. Tu fais un
clic droit sur le nom de ton onglet, visualiser le code,
et tu copies ce code

------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Columns("A")) Is Nothing Then
Target.Value = WorksheetFunction.Proper(Target)
End If
End Sub
------------------------------

Tu peux remplacer "Columns("A")" par la zone que tu
désires être concernée par la macro.

amicalement

-----Original Message-----
Bonjour,
Excel 2000/WIN98SE. Ma question n'est certainement pas
inédite mais je n'ai

rien trouvé dans le ng. Je voudrais que la 1ère lettre
du texte entré dans

une cellule soit en majuscule. L'option "Mettre la 1ère
lettre d'une phrase

en majuscule" est inopérante dans ce cas. Y a t-il une
solution ? un réglage

? une macro ?
D'avance merci de vos conseils
Sulpice


.



Avatar
Sulpice
verificator" a écrit dans le message de
news:11bd01c4e5c3$7360be80$
bonjour Sulpice,

pour ton problème, sans macro, point de salut. Tu fais un
clic droit sur le nom de ton onglet, visualiser le code,
et tu copies ce code

------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Columns("A")) Is Nothing Then
Target.Value = WorksheetFunction.Proper(Target)
End If
End Sub
------------------------------

Tu peux remplacer "Columns("A")" par la zone que tu
désires être concernée par la macro.

amicalement

-----Original Message-----
Bonjour,
Excel 2000/WIN98SE. Ma question n'est certainement pas
inédite mais je n'ai

rien trouvé dans le ng. Je voudrais que la 1ère lettre
du texte entré dans

une cellule soit en majuscule. L'option "Mettre la 1ère
lettre d'une phrase

en majuscule" est inopérante dans ce cas. Y a t-il une
solution ? un réglage

? une macro ?
D'avance merci de vos conseils
Sulpice

Bonjour "verificator",

C'est génial ce truc ! même si je ne comprends pas comment ça
marche....Reste à l'enregistrer...
Un grand merci.
Cordialement,
Sulpice

Avatar
Sulpice
"Sulpice" <ahouyez@(otezceci)tele2.fr> a écrit dans le message de
news:%23k7$
verificator" a écrit dans le message de
news:11bd01c4e5c3$7360be80$
bonjour Sulpice,

pour ton problème, sans macro, point de salut. Tu fais un
clic droit sur le nom de ton onglet, visualiser le code,
et tu copies ce code

------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Columns("A")) Is Nothing Then
Target.Value = WorksheetFunction.Proper(Target)
End If
End Sub
------------------------------

Tu peux remplacer "Columns("A")" par la zone que tu
désires être concernée par la macro.

amicalement

-----Original Message-----
Bonjour,
Excel 2000/WIN98SE. Ma question n'est certainement pas
inédite mais je n'ai

rien trouvé dans le ng. Je voudrais que la 1ère lettre
du texte entré dans

une cellule soit en majuscule. L'option "Mettre la 1ère
lettre d'une phrase

en majuscule" est inopérante dans ce cas. Y a t-il une
solution ? un réglage

? une macro ?
D'avance merci de vos conseils
Sulpice

Bonjour "verificator",

C'est génial ce truc ! même si je ne comprends pas comment ça
marche....Reste à l'enregistrer...
Un grand merci.
Cordialement,
Sulpice

Mais, en y regardant de plus près, il y a un hic ! TOUS les mots du texte

ont leur première lettre en majuscule, et je me serais bien contenté du
premier mot uniquement...Comment corriger le tir ?
Sulpice


Avatar
AV
...je me serais bien contenté du
premier mot uniquement...Comment corriger le tir ?


Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If Not Intersect(zz, [A:A]) Is Nothing Then
zz = UCase(Left(zz, 1)) & Right(zz, Len(zz) - 1)
End If
End Sub

AV

Avatar
Daniel.M
Bonjour,

On peut aussi supprimer les événements temporairement pour éviter l'effet
cascade.

Private Sub Worksheet_Change(ByVal zz As Range)
If Not Intersect(zz, [A:A]) Is Nothing Then
Application.EnableEvents = False
zz = UCase(Left(zz, 1)) & Right(zz, Len(zz) - 1)
Application.EnableEvents = True
End If
End Sub

Salutations,

Daniel M.
Avatar
Sulpice
"AV" a écrit dans le message de
news:%
...je me serais bien contenté du
premier mot uniquement...Comment corriger le tir ?


Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If Not Intersect(zz, [A:A]) Is Nothing Then
zz = UCase(Left(zz, 1)) & Right(zz, Len(zz) - 1)
End If
End Sub

AV

Bonjour AV,
OK, ça marche. Merci. Je vais essayer de comprendre pourquoi !

Sulpice


Avatar
Sulpice
"Daniel.M" a écrit dans le message de
news:
Bonjour,

On peut aussi supprimer les événements temporairement pour éviter l'effet
cascade.

Private Sub Worksheet_Change(ByVal zz As Range)
If Not Intersect(zz, [A:A]) Is Nothing Then
Application.EnableEvents = False
zz = UCase(Left(zz, 1)) & Right(zz, Len(zz) - 1)
Application.EnableEvents = True
End If
End Sub

Salutations,

Daniel M.

Bonjour Daniel,

Effectivement, ça marche également. Il est curieux que cette option n'existe
pas dans Excel alors qu'elle existe dans Word.
Merci beaucoup
Cordialement,
Sulpice

Avatar
Daniel.M
Bonsoir,

Effectivement, ça marche également. Il est curieux que cette option n'existe
pas dans Excel alors qu'elle existe dans Word.
Merci beaucoup


Word n'a pas un moteur de recalcul automatique qui met à jour les résultats de
formules instantanément: on n'a donc pas besoin d'indiquer par VBA qu'il faut
supprimer temporairement les événements (le _Change et les recalculs associés)
qui sont générés par la saisie d'une nouvelle valeur. Si cette option n'existait
pas en Excel, on aurait le cycle suivant : saisie => recalcul => changements de
valeurs => recalcul => ... (sans fin) si la procédure _Change continue à
rechanger les valeurs.

Il faut donc une instruction qui supprime temporairement les événements, ce qui
montre toute la puissance d'Excel. La compétition des logiciels libres (suite
OpenOffice, StarOffice) a été capable d'émuler remarquablement bien les autres
produits d'Office (Word, PowerPoint, Publisher) mais elle tarde à reproduire
adéquatement les fonctionnalités d'un logiciel comme Excel, une preuve
supplémentaire de son évolution.

Salutations,

Daniel M.