IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Word - macro pour passer de majuscules à minuscules


Sujet :

VBA Word

  1. #21
    Futur Membre du Club
    Femme Profil pro
    !
    Inscrit en
    Juillet 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : !

    Informations forums :
    Inscription : Juillet 2020
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    ça marche !

    Enfin, presque... Seule la première lettre est mise en majuscule, et non la première lettre de chaque mot. Par exemple, on obtient Costa rica au lieu de Costa Rica. (alors qu'avec les touches maj F3, c'est correct).
    Quand il y a trois mots, c'est encore pire: il ne se passe rien. Par exemple, COREE DU SUD reste en majuscules.
    Il y a aussi le problème des accents (par exemple Senegal au lieu de Sénégal), mais j'avais déjà le même problème manuellement.

  2. #22
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par isamur Voir le message
    C'est normal parce que le code n'est pas prévu pour. Pour faire cela, il faudrait réaliser une boucle sur le chaîne résultante et mettre en majuscule chaque caractère après un caractère blanc.
    En ce qui concerne les majuscules accentuées, aller dans les options de Word-Vérifications et cocher les majuscules accentuées.

    Pour les majuscules en tête de chaque mot, il faut simplement ajouter l'instruction : .Range.Case = wdTitleWord

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        MotFormate = UCase(Mid(TableauValeurs2, 1, 1)) & LCase(Mid(TableauValeurs2, 2))
        With Selection2
             With .Find
                 .ClearFormatting
                 .Text = TableauValeurs2
                 .MatchCase = True
                 .Replacement.Text = MotFormate
                 .ClearFormatting
                 .Execute Replace:=wdReplaceOne, Forward:=True
            End With
            .Range.Case = wdTitleWord
        End With
    Dernière modification par Invité ; 01/08/2020 à 17h54.

  3. #23
    Futur Membre du Club
    Femme Profil pro
    !
    Inscrit en
    Juillet 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : !

    Informations forums :
    Inscription : Juillet 2020
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup !
    Pour la majuscule sur le deuxième mot, c'est ok.
    Par contre, toujours rien quand il y a trois mots: COREE DU SUD reste en majuscules. Pourquoi est-ce que cela bloque ?
    Pour les accents, je ne parlais pas des majuscules, mais des minuscules: exemple: on obtient Senegal au lieu de Sénégal... pas très grave.

    Une question stupide: pourquoi faut-il passer par un programme compliqué, avec plusieurs variables, plusieurs boucles, alors que la fonction "rechercher tout" de Word permet précisément de sélectionner tout ce qui se trouve entre deux signes $ ? Je suppose que ce n'était pas possible de récupérer les mots sélectionnés pour en faire ensuite ce qu'on veut... si vous pouvez m'éclairer...

    Merci pour tout !

  4. #24
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par isamur Voir le message
    La solution est dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
              If NbCaracteres <= 1 And TableauDeValeurs(J) <> "" And TableauDeValeurs(J) <> Chr(13) Then
    Une question stupide: pourquoi faut-il passer par un programme compliqué, avec plusieurs variables, plusieurs boucles, alors que la fonction "rechercher tout" de Word permet précisément de sélectionner tout ce qui se trouve entre deux signes $ ? Je suppose que ce n'était pas possible de récupérer les mots sélectionnés pour en faire ensuite ce qu'on veut... si vous pouvez m'éclairer...
    C'est sans doute qu'un programme compliqué pallie souvent un manque de connaissances de base dans Word.

    Je ne vais pas pouvoir vous aider plus.

    Cordialement.

  5. #25
    Futur Membre du Club
    Femme Profil pro
    !
    Inscrit en
    Juillet 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : !

    Informations forums :
    Inscription : Juillet 2020
    Messages : 17
    Points : 5
    Points
    5
    Par défaut J'ai trouvé ! Avec une solution toute simple
    Désolée, mais votre réponse ne m'a pas convaincue : pourquoi ne pas utiliser les fonctions Word existantes ?

    Au départ, ma demande était simple: passer de la fonction "Rechercher tout" à la fonction "passage majuscules/minuscules". Puisque la fonction "Rechercher tout" semblait poser problème, j'ai essayé ce matin avec "Rechercher". J'ai enregistré la macro en faisant les manipulations sur mon document Word. La macro marchait pour la première ligne. Il ne me restait plus qu'à ajouter une boucle (que j'ai trouvée sur ce forum), à enlever les lignes inutiles, et j'ai obtenu ce code de quelques lignes qui fonctionne parfaitement (il suffit de mettre le curseur au début du document):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub FormatNoms()
     
    Do While Selection.Find.Execute = True
        Selection.Find.ClearFormatting
        With Selection.Find
            .Text = "$*$"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .MatchWildcards = True
        End With
        Selection.Range.Case = wdNextCase
        Selection.Range.Case = wdNextCase
    Loop
     
    End Sub
    Désolée pour tout le temps que vous avez passé sur ce code. Au début, j'étais loin de me douter que ça prendrait de telles proportions ! Mais ça n'a pas été inutile puisque grâce à vous, j'ai découvert la fonction Debug Print et la fenêtre exécution de VBA (bien pratique effectivement).

    Merci pour tout.
    Cordialement.

  6. #26
    Membre régulier
    Homme Profil pro
    Commerçant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Commerçant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 77
    Points
    77
    Par défaut pourquoi ne pas utiliser les fonctions Word existantes - pourquoi utiliser une boucle ?
    Citation Envoyé par isamur Voir le message
    Désolée, mais votre réponse ne m'a pas convaincue : pourquoi ne pas utiliser les fonctions Word existantes ?

    Au départ, ma demande était simple: passer de la fonction "Rechercher tout" à la fonction "passage majuscules/minuscules". Puisque la fonction "Rechercher tout" semblait poser problème, j'ai essayé ce matin avec "Rechercher". J'ai enregistré la macro en faisant les manipulations sur mon document Word. La macro marchait pour la première ligne. Il ne me restait plus qu'à ajouter une boucle (que j'ai trouvée sur ce forum), à enlever les lignes inutiles, et j'ai obtenu ce code de quelques lignes qui fonctionne parfaitement (il suffit de mettre le curseur au début du document):
    RR ou VBA ?
    comme dit sur un autre post, et comme j'ai pu l'expérimenter, la fonction Rechercher-Remplacer est BEAUCOUP plus rapide que tout autre code VBA-Word.
    VBA peut se trouver lent voire interminable, il est donc intéressant et même prudent d'exploiter RR au maximum.

  7. #27
    Membre régulier
    Homme Profil pro
    Commerçant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Commerçant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par isamur Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro2()
     
        End With
        Selection.Range.Case = wdNextCase
        Selection.Range.Case = wdNextCase
    End Sub
    il est prudent d'utiliser autre que NextCase :

    ' Selection.Range.Case = wdLowerCase ' = minuscules
    ' Selection.Range.Case = wdUpperCase ' = majuscules
    ' Selection.Range.Case = wdTitleWord ' = première lettre du mot en maj, le reste en min ???

    ' Selection.Range.Case = wdNextCase ' voit la casse et passe au suivant dans la boucle :
    ' min - 1ère lettre maj - tout en maj - min - ...
    ' au clavier on fait successivement maj + F3 (= shift + F3)

    (et pour info : ' Selection.Range.Case = wdTitleSentence ' Première lettre de la ligne en maj.

    cordialement

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Toutes versions] Macro pour passer la ligne 2 à la suite de la ligne 1
    Par guileo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/03/2017, 12h00
  2. Réponses: 2
    Dernier message: 06/07/2016, 13h35
  3. Réponses: 2
    Dernier message: 07/05/2016, 16h42
  4. Shell - Problème pour gérer les majuscules et minuscules
    Par claralavraie dans le forum Linux
    Réponses: 6
    Dernier message: 11/01/2006, 17h17
  5. Commande pour passer en minuscules ?
    Par ggnore dans le forum Linux
    Réponses: 2
    Dernier message: 09/11/2004, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo