Mettre majuscule après point automatiquement
Résolu/Fermé
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
-
13 juil. 2017 à 12:48
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 18 juil. 2017 à 14:11
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 18 juil. 2017 à 14:11
A voir également:
- Mettre majuscule après point automatiquement
- Mettre un texte en majuscule - Guide
- É majuscule - Guide
- Point de restauration - Guide
- Point de suite word - Guide
- Automatiquement - Guide
10 réponses
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
14 juil. 2017 à 16:11
14 juil. 2017 à 16:11
Bonjour à tous
Si le point est collé au caractère suivant, la correction automatique ne fonctionne pas (du moins sur mon vieil excel 2003)
Une petite macro
http://www.cjoint.com/c/GGoojN7wleB
Cdlmnt
Si le point est collé au caractère suivant, la correction automatique ne fonctionne pas (du moins sur mon vieil excel 2003)
Une petite macro
http://www.cjoint.com/c/GGoojN7wleB
Cdlmnt
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
14 juil. 2017 à 17:36
14 juil. 2017 à 17:36
Bonjour le Forum
Bonjour ccm81, chez moi ton code ne fonctionne pas : il ajoute un majuscule après le point sans supprimer la minuscule correspondante.
De toute façon, en français, une phrase se termine par un point mais la suivante du même paragraphe doit toujours commencer par un espace avant la majuscule. Et la première lettre du paragraphe doit aussi commencer par une majuscule.
Voici ton code modifié pour répondre à la demande initiale:
Bonjour ccm81, chez moi ton code ne fonctionne pas : il ajoute un majuscule après le point sans supprimer la minuscule correspondante.
De toute façon, en français, une phrase se termine par un point mais la suivante du même paragraphe doit toujours commencer par un espace avant la majuscule. Et la première lettre du paragraphe doit aussi commencer par une majuscule.
Voici ton code modifié pour répondre à la demande initiale:
Option Explicit Public Sub ok() Dim plage As Range, cel As Range, s As String, r As Long Set plage = Selection For Each cel In plage s = cel.Value Mid(s, 1, 1) = UCase(Mid(s, 1, 1)) 'début de paragraphe r = InStr(1, s, ". ") While r > 0 And r <> Len(s) Mid(s, r + 2, 1) = UCase(Mid(s, r + 2, 1)) 'début de phrase r = InStr(r + 1, s, ". ") Wend cel.Value = s Next cel End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
14 juil. 2017 à 18:01
14 juil. 2017 à 18:01
Amélioration du code ci-dessus :
Prise en compte des paragraphes dans la cellule (LF et/ou CRLF) et des espaces insécables en début de phrase (après le point).
Prise en compte des paragraphes dans la cellule (LF et/ou CRLF) et des espaces insécables en début de phrase (après le point).
Option Explicit Public Sub ok() Dim plage As Range, cel As Range, s$, r& Set plage = Selection For Each cel In plage s = cel.Value Mid(s, 1, 1) = UCase(Mid(s, 1, 1)) r = InStr(1, s, ".") While r > 0 And r < Len(s) Select Case Mid(s, r + 1, 1) Case " ", Chr(160), Chr(10) Mid(s, r + 2, 1) = UCase(Mid(s, r + 2, 1)) Case Chr(13) If Mid(s, r + 2, 1) = Chr(10) Then Mid(s, r + 3, 1) = UCase(Mid(s, r + 3, 1)) End If End Select r = InStr(r + 1, s, ".") Wend cel.Value = s Next cel End Sub
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 18:47
14 juil. 2017 à 18:47
Merci énormément !!! Je teste tout cela lundi ! Bonne soirée !
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié le 14 juil. 2017 à 19:21
Modifié le 14 juil. 2017 à 19:21
Salut Patrice,
exact, j'ai taillé (à droite) un peu grand
bon, je vais quand même donner le code correct
Bonne soirée à tous
exact, j'ai taillé (à droite) un peu grand
bon, je vais quand même donner le code correct
Public Sub ok()
Dim plage As Range, cel As Range, s As String, r As Long
Application.ScreenUpdating = False
Set plage = Selection
For Each cel In plage
s = cel.Value
r = InStr(1, s, ".")
While r > 0 And r <> Len(s)
s = Left(s, r) & UCase(Mid(s, r + 1, 1)) & Right(s, Len(s) - r - 1)
r = InStr(r + 1, s, ".")
Wend
cel.Value = s
Next cel
End Sub
Bonne soirée à tous
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 13 juil. 2017 à 15:59
Modifié le 13 juil. 2017 à 15:59
Bonjour,
Comme son nom l'indique, la correction automatique fait ça automatiquement.
Cordialement
Patrice
Comme son nom l'indique, la correction automatique fait ça automatiquement.
Cordialement
Patrice
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
13 juil. 2017 à 18:23
13 juil. 2017 à 18:23
Malheureusement non, ça serait mieux mais ce n'est pas le cas.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 13 juil. 2017 à 21:35
Modifié le 13 juil. 2017 à 21:35
C'est le cas pour les majuscules de début de phase (sauf la premiere de la première phrase).
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 14:02
14 juil. 2017 à 14:02
Il s'agit d'un copier coller d'informations dans un document de synthèse, or le texte initiale ne comporte pas de majuscules après les points, et lors du recopiais, cela ne les met pas automatiquement...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
23325
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
Ambassadeur
1 551
13 juil. 2017 à 22:11
13 juil. 2017 à 22:11
bonsoir, peux-tu nous donner plus d'information sur la structure de ton document, et décrire comment tu utiliserais la fonction ou la procédure?
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 14:03
14 juil. 2017 à 14:03
Il s'agit d'un regroupement de données à partir d'un tableau dans un nouveau tableau, sous forme de recopie. Je souhaiterai que la fonction/procédure détecte les points afin de mettre en majuscule la lettre la suivant.
Merci, cordialement.
Merci, cordialement.
yg_be
Messages postés
23325
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 14:30
14 juil. 2017 à 14:30
si c'est une fonction, tu va l'utiliser pour obtenir un texte modifié dans la cellule où tu mets la fonction.
pour comprendre le principe d'utilisation d'une fonction dans Excel, tu peux tester la fonction "majuscule". cela te conviendrait-il d'avoir une fonction "mloumaj" que tu pourrais utiliser comme la fonction majuscule, mais qui mettrait uniquement en majuscule la première lettre suivant un point?
si c'est une procédure, la procédure peut être plus intelligente, elle peut modifier une ou plusieurs cellules existantes, recopier d'une cellule à l'autre, automatiquement parcourir ton fichier, ...
tu expliques que c'est un un regroupement de données à partir d'un tableau dans un nouveau tableau.
comment vas-tu "regrouper"? fais-tu cela une seule fois, plusieurs fois, ...
pour comprendre le principe d'utilisation d'une fonction dans Excel, tu peux tester la fonction "majuscule". cela te conviendrait-il d'avoir une fonction "mloumaj" que tu pourrais utiliser comme la fonction majuscule, mais qui mettrait uniquement en majuscule la première lettre suivant un point?
si c'est une procédure, la procédure peut être plus intelligente, elle peut modifier une ou plusieurs cellules existantes, recopier d'une cellule à l'autre, automatiquement parcourir ton fichier, ...
tu expliques que c'est un un regroupement de données à partir d'un tableau dans un nouveau tableau.
comment vas-tu "regrouper"? fais-tu cela une seule fois, plusieurs fois, ...
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 15:33
14 juil. 2017 à 15:33
Merci de votre aide. Le regroupement se fait à partir d'une "mise à jour" dont nous possédons déjà le code (il recopie les données d'un tableau vers un nouveau dans un autre document).
La mise à jour est faite plusieurs fois par jour.
Le code que j'ai besoin est similaire à celui que cherchait cette personne : https://www.excel-downloads.com/threads/mettre-une-majuscule-après-un-point-en-vba.227500/ ; mais les réponses n'ont pas fonctionnées sur mon programme, je ne sais pas pourquoi...
La mise à jour est faite plusieurs fois par jour.
Le code que j'ai besoin est similaire à celui que cherchait cette personne : https://www.excel-downloads.com/threads/mettre-une-majuscule-après-un-point-en-vba.227500/ ; mais les réponses n'ont pas fonctionnées sur mon programme, je ne sais pas pourquoi...
yg_be
Messages postés
23325
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 novembre 2024
1 551
>
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 16:53
14 juil. 2017 à 16:53
voici une fonction qui fait cela:
Option Explicit Function mloumaj(phrase As String) As String Dim i As Integer Dim aprespoint As Boolean Dim char As Integer mloumaj = phrase aprespoint = False For i = 1 To Len(mloumaj) char = Asc(Mid(mloumaj, i, 1)) If char = Asc(".") Then aprespoint = True Else If aprespoint Then Select Case char Case Asc(" ") Case Asc("a") To Asc("z") If aprespoint Then 'remplacer le caractere par la majuscule correspondante mloumaj = Left(mloumaj, i - 1) + UCase(Mid(mloumaj, i, 1)) + Right(mloumaj, Len(mloumaj) - i) aprespoint = False End If Case Else aprespoint = False End Select End If End If Next i End Function
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
14 juil. 2017 à 18:48
14 juil. 2017 à 18:48
Merci, merci, merci !! J'essaierai le code lundi, bonne soirée à vous !
Bonjour mlou51,
Dans ton message du 14 juillet à 15:33, tu as mis un lien sur l'article
« Mettre une majuscule après un point en VBA » ; j'ai lu ce code VBA,
et tu as dû voir que ça met une majuscule après tous les caractères
de la variable mestrucs. C'est inapproprié pour « ; » et « : », mais
c'est valable de le faire après ces 3 caractères « .!? » ; le code VBA
que j'ai réalisé fait cela : https://mon-partage.fr/f/yDOxVIno/
----------------------------------------
Sur la feuille, il y a une phrase en B2 sans aucune majuscule ;
cette phrase est aussi en dessous, jusqu'en B32, avec parfois
des cellules vides entre elles ; c'est pour te montrer que
la sub ne sera pas gênée par des cellules vides.
Sans que tu doives faire une sélection préalable, fais juste
Ctrl e => travail fait : toutes les phrases ont les majuscules
aux bons endroits.
Tu peux bien sûr remplacer les phrases par celles de ton choix.
----------------------------------------
Alt F11 pour voir la macro, puis revenir sur Excel.
Si tes phrases sont dans une autre colonne que la colonne B,
c'est très facile d'adapter la macro.
Si besoin, tu peux me demander une adaptation
ou un complément d'informations.
----------------------------------------
Merci de me dire si ça te convient.
Cordialement.
Dans ton message du 14 juillet à 15:33, tu as mis un lien sur l'article
« Mettre une majuscule après un point en VBA » ; j'ai lu ce code VBA,
et tu as dû voir que ça met une majuscule après tous les caractères
de la variable mestrucs. C'est inapproprié pour « ; » et « : », mais
c'est valable de le faire après ces 3 caractères « .!? » ; le code VBA
que j'ai réalisé fait cela : https://mon-partage.fr/f/yDOxVIno/
----------------------------------------
Sur la feuille, il y a une phrase en B2 sans aucune majuscule ;
cette phrase est aussi en dessous, jusqu'en B32, avec parfois
des cellules vides entre elles ; c'est pour te montrer que
la sub ne sera pas gênée par des cellules vides.
Sans que tu doives faire une sélection préalable, fais juste
Ctrl e => travail fait : toutes les phrases ont les majuscules
aux bons endroits.
Tu peux bien sûr remplacer les phrases par celles de ton choix.
----------------------------------------
Alt F11 pour voir la macro, puis revenir sur Excel.
Si tes phrases sont dans une autre colonne que la colonne B,
c'est très facile d'adapter la macro.
Si besoin, tu peux me demander une adaptation
ou un complément d'informations.
----------------------------------------
Merci de me dire si ça te convient.
Cordialement.
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
17 juil. 2017 à 09:44
17 juil. 2017 à 09:44
Re-bonjour !
J'ai essayé tous les codes que vous m'avez donné, or... Aucun ne fonctionne sur le document que je dois traité...
L'erreur vient sans doute de moi, mais je ne comprends pas d'où.
Les cellules sur lesquelles je dois ajouter les majuscules après les points sont toutes celles de la colonne L, si jamais ça joue.
Pourtant j'ai bien compilé et exécuter mais non... Il reste capricieux.
Merci quand même pour toutes vos réponses !
J'ai essayé tous les codes que vous m'avez donné, or... Aucun ne fonctionne sur le document que je dois traité...
L'erreur vient sans doute de moi, mais je ne comprends pas d'où.
Les cellules sur lesquelles je dois ajouter les majuscules après les points sont toutes celles de la colonne L, si jamais ça joue.
Pourtant j'ai bien compilé et exécuter mais non... Il reste capricieux.
Merci quand même pour toutes vos réponses !
Bonjour Marie,
Dans mon fichier, les phrases sont en colonne L, à partir de la ligne 2.
Fichier Excel 2007 : https://mon-partage.fr/f/ulKpjemE/
----------------------------------------
Sur la feuille, il y a une phrase en L2 sans aucune majuscule ;
cette phrase est aussi en dessous, jusqu'en L32, avec parfois
des cellules vides entre elles ; c'est pour te montrer que
la sub ne sera pas gênée par des cellules vides.
Sans que tu doives faire une sélection préalable, fais juste
Ctrl e => travail fait : toutes les phrases ont les majuscules
aux bons endroits.
Tu peux bien sûr remplacer les phrases par celles de ton choix.
----------------------------------------
Alt F11 pour voir le code, puis revenir sur Excel.
Dans la sub Essai() :
la colonne est L et la 1ère ligne (de la 1ère phrase) est 2 ;
si besoin, change le "L" et le 2 de cette ligne de code :
Const col As String = "L": lig1 = 2
La dernière ligne (dlig) n'a pas besoin d'être adaptée
car elle est détectée automatiquement.
----------------------------------------
Merci de me dire si ça te convient.
Cordialement.
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
>
sylvain
Modifié le 17 juil. 2017 à 14:11
Modifié le 17 juil. 2017 à 14:11
Bonjour Sylvain,
Seuls le point et le point d'interrogation sont des ponctuation de fin de phrase qui entrainent donc une majuscule dans la phrase suivante. Quoique, comme le point est aussi employé pour terminer une abréviation, il est très difficile d'élaborer une macro correcte ; il est préférable d'ignorer ce dernier cas.
Hélas ! pour le point d'exclamation c'est aussi très difficile ! Il ne faut pas de majuscule lorsqu'il s'agit d'une interjection ou d'un exclamation contenue dans une phrase (cf phrase précédente). Ce n'est que lorsqu'il termine une phase exclamative que la phrase suivante commence par une majuscule.
Par contre, tous les paragraphes doivent commencer par une majuscule.
Seuls le point et le point d'interrogation sont des ponctuation de fin de phrase qui entrainent donc une majuscule dans la phrase suivante. Quoique, comme le point est aussi employé pour terminer une abréviation, il est très difficile d'élaborer une macro correcte ; il est préférable d'ignorer ce dernier cas.
Hélas ! pour le point d'exclamation c'est aussi très difficile ! Il ne faut pas de majuscule lorsqu'il s'agit d'une interjection ou d'un exclamation contenue dans une phrase (cf phrase précédente). Ce n'est que lorsqu'il termine une phase exclamative que la phrase suivante commence par une majuscule.
Par contre, tous les paragraphes doivent commencer par une majuscule.
sylvain
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
Modifié le 17 juil. 2017 à 19:56
Modifié le 17 juil. 2017 à 19:56
@Patrice33740,
Tu as raison pour tout, notamment : le point qui termine une abréviation et les
difficultés concernant le point d'exclamation ; mais là, il faudrait que le VBA
soit un langage d'intelligence artificielle ! comme le Lisp par exemple.
Aussi, je préfère laisser mon code VBA tel quel ; mais Marie pourra
bien sûr l'adapter comme elle préfère (voir infos plus loin).
Pour les espaces insécables ou pour les retours de paragraphe, je ferai
une adaptation si Marie me dit qu'elle en a besoin.
--------------------------------------------------------
Dans mon code VBA, voici la 1ère ligne de la fonction SetMajuscules() :
Const signes As String = ".!?"
Dans la suite du code, je teste un par un ces caractères, suivi d'un espace.
Donc une lettre qui suivra ". ", "! " ou "? " sera mise en majuscule ;
je laisse à Marie le soin d'ajouter ou supprimer les caractères
(à détecter) qui lui conviennent le mieux.
@Marie : le code s'adapte automatiquement à la longueur
de la constante chaîne de caractères signes ; n'oublie pas
de bien lire les indications de mon message de 13:08.
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
17 juil. 2017 à 11:30
17 juil. 2017 à 11:30
Bonjour
L'erreur vient sans doute de moi, mais je ne comprends pas d'où.
Peux tu envoyer un bout de ton fichier anonymisé, mais avec la même structure que l'original,sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt
L'erreur vient sans doute de moi, mais je ne comprends pas d'où.
Peux tu envoyer un bout de ton fichier anonymisé, mais avec la même structure que l'original,sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".
Cdlmnt
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
18 juil. 2017 à 13:48
18 juil. 2017 à 13:48
Le problème est réglé, j'ai réussi a me dépatouiller pour obtenir ce que je voulais ! Merci à tous pour tous vos codes !!!
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
18 juil. 2017 à 14:11
18 juil. 2017 à 14:11
Content que tu aies réussi. Passes la discussion en Résolu.
Cdlt
Patrice
Cdlt
Patrice
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
Modifié le 13 juil. 2017 à 22:59
Modifié le 13 juil. 2017 à 22:59
Bonjour,
Comme son nom l'indique, la correction automatique fait ça automatiquement.
Cordialement
Patrice
mlou51 - 13 juil. 2017 à 18:23
Malheureusement non,
Ben si, contrôle tes options. Majuscule en début de phrase doit être coché.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Comme son nom l'indique, la correction automatique fait ça automatiquement.
Cordialement
Patrice
mlou51 - 13 juil. 2017 à 18:23
Malheureusement non,
Ben si, contrôle tes options. Majuscule en début de phrase doit être coché.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
marieasd
Messages postés
15
Date d'inscription
jeudi 13 juillet 2017
Statut
Membre
Dernière intervention
19 juillet 2017
17 juil. 2017 à 09:49
17 juil. 2017 à 09:49
Cette option est déjà cochée. Le problème vient du fait que les informations de ce tableau sont collées depuis un tableau où elles n'ont pas de majuscule.
Cordialement.
Cordialement.
14 juil. 2017 à 18:48