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 :

Souligner des occurences dans une chaine de caractères


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut Souligner des occurences dans une chaine de caractères
    Bonjour,

    j'ai une plage de cellules fussionnées de P6 à P40!

    Dans cette cellule, j'ai des phrases et je cherche à souligner uniquement les mots "Achat", "Vente" ou "Echu J+1"!

    Pour le moment, j'ai essayé 2 trucs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            'Worksheets(feuilleReporting).Cells(ligneDebutReporting, colRepOpeRecente).Find("Achat").Font.Underline = xlUnderlineStyleSingle
            'Worksheets(feuilleReporting).Cells(ligneDebutReporting, colRepOpeRecente).Find("Vente:").Font.Underline = xlUnderlineStyleSingle
            'Worksheets(feuilleReporting).Cells(ligneDebutReporting, colRepOpeRecente).Find("Echu J+1:").Font.Underline = xlUnderlineStyleSingle
    Mais ca plante!

    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            aSouligner = "Achat"
     
            Set cellule = Worksheets(feuilleReporting).Cells(ligneDebutReporting, colRepOpeRecente)
            pos = InStr(1, cellule.Value, aSouligner)
     
            cellule.Characters(pos, Len(aSouligner)).Font.Underline = xlUnderlineStyleSingle
    Mais cela me souligne que le premier "Achat"!

    Quelqu'un a une idée pour régler mon pb?

    Merci d'avance!

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    A adapter en fonction du nom de la feuille et de la colonne à parcourir
    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
    Sub test()
    Dim i As Long, Pos As Long, Dep As Long
     
    With Sheets("Feuil1")
        For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
            Dep = 1
            Pos = InStr(Dep, UCase(.Cells(i, 1)), "ACHAT")
            Do
                If Pos <> 0 Then
                    .Cells(i, 1).Characters(Pos, 5).Font.Underline = xlUnderlineStyleSingle
                    Dep = Pos + 1
                    Pos = InStr(Dep, UCase(.Cells(i, 1)), "ACHAT")
                End If
            Loop While Pos <> 0
        Next
    End With
     
    End Sub

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Merci fring!

    J'ai pas besoins de boucler sur les cellules car elles sont fusionnées donc je l'ai arrangé de la manière suivante:

    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
    Sub SouligneMot(ByVal feuille As String, ByVal cellule As String, ByVal aSouligner As String)
    Dim i As Long, Pos As Long, Dep As Long
     
    With Sheets(feuille)
     
        Dep = 1
        Pos = InStr(Dep, .Range(cellule), aSouligner)
        Do
            If Pos <> 0 Then
                .Range("P6").Characters(Pos, 5).Font.Underline = xlUnderlineStyleSingle
                Dep = Pos + 1
                Pos = InStr(Dep, .Range("P6"), aSouligner)
            End If
        Loop While Pos <> 0
     
    End With
     
    End Sub

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

Discussions similaires

  1. Extraire des champs dans une chaine de caractère
    Par clemuche dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2009, 23h24
  2. Réponses: 3
    Dernier message: 01/08/2008, 09h58
  3. Réponses: 13
    Dernier message: 22/07/2008, 22h03
  4. Réponses: 2
    Dernier message: 14/11/2007, 16h43
  5. Réponses: 4
    Dernier message: 09/09/2006, 10h18

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