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

Macros et VBA Excel Discussion :

recherche mot minuscule/majuscule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut recherche mot minuscule/majuscule
    Bonjour,

    Je galère depuis hier :

    J'ai le code (merci à la "contribution")
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Option Explicit
     
     
    Sub Macro222()
    Call HighlightWord(Range("F1"), Range("A1:A30"))
    End Sub
     
    Sub HighlightWord(ByVal str As String, r As Range)
     
        Dim res As Range
        Dim firstAddress As String, pos As Long
     
        ' on fait une recherche sur la plage
        With r.Cells
            Set res = .Find(What:=str, After:=r.Cells(1, 1), LookIn:=xlFormulas _
                , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)
     
            If Not res Is Nothing Then
                firstAddress = res.Address
                Do
                    pos = InStr(res.Value, str)
                    Do While pos > 0
                        With res.Characters(pos, Len(str))
                            'ici on mettra en gras rouge
                            .Font.Color = vbRed
                            .Font.Bold = True
                        End With
                        pos = InStr(pos + 1, res.Value, str)
                    Loop
                    Set res = .Find(What:=str, After:=res, LookIn:=xlFormulas _
                            , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                            MatchCase:=False, SearchFormat:=False)
                Loop While Not res Is Nothing And res.Address <> firstAddress
            End If
        End With
     
        Set res = Nothing
     
    End Sub
    Qui marche super bien, par contre il ne tient pas compte des majuscules et minuscules...J'essaye donc de l'améliorer en utilisant l'instruction Ucase : j'ai donc mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      If Not res Is Nothing Then
                firstAddress = res.Address
               Ucase(res.value) like "*" & ucase (str) & "*" then               
                  Do
                    pos = InStr(res.Value, str)
                    Do While pos > 0
                        With res.Characters(pos, Len(str))
    Et ça ne fonctionne pas....j'ai essayé plusieurs formules et ça ne donne rien, je ne comprends pas....

    Merci,
    A+

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    UCase n'est pas une instruction, mais une fonction !

    Une fonction retourne une valeur ...

    Ucase("toto") retourne TOTO

    en conséquence (exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Ucase(une_chaine) = Ucase(autre_chaine) then ...
    ton str me laisse par contre perplexe ...
    Evite d'utiliser les mots réservés comme noms de variables ...

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour


    Une autre solution consiste à ajouter l'instruction Compare Text en tête de module:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Option Compare Text
     
    '
    '...
    '

    bonne journée
    michel

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 855
    Points : 368
    Points
    368
    Par défaut
    Merci à tous les deux,

    La solution de SilkyRoad fonctionne à merveille.

    Merci à ucfoutu pour les explications techniques, je comprends mieux pourquoi ça déconnait....

    Merci
    A la prochaine....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche des mots en Majuscules
    Par Pierre67 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/07/2009, 08h48
  2. Rcherche minuscule/majuscule dans chaîne
    Par Nargel33 dans le forum Oracle
    Réponses: 4
    Dernier message: 30/11/2005, 13h45
  3. [langage] exp reg: recherche mot ou ensemble de mot
    Par eautret dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h25
  4. Mettre la première lettre des mots en majuscule
    Par seb.49 dans le forum Langage
    Réponses: 8
    Dernier message: 23/05/2003, 14h26

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