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 :

Encadrer un mot après un caractère spécifique macro VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Points : 19
    Points
    19
    Par défaut Encadrer un mot après un caractère spécifique macro VBA
    bonjour

    Dans un fichier excel une cellule contient un texte, je voudrais encadrer un mot qui vient après un caractère. Ce caractère est bien défini.
    est ce que je peux le faire à l'aide d'une macro
    Exemple:
    Julien va à l'école à pied
    Julien va (école) (pied)
    Dans mon exemple mon caractère défini est "à" donc le caractère qui vient après école et pied je dois les encadrer par des parenthèses.

    j'ai cherché beaucoup sur des forum mais j'ai pas trouvé une réponse
    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Proposition, en colonne "A" le(s) caractère(s) à trouver, en colonne "B" la phrase complète à trouver, en colonne "C", la phrase reconstituée sans le(s) caractère(s) à trouver.

    le fichier en exemple
    Pièce jointe 568454

    Le code
    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
    Sub Extraire()
        Dim DerLig As Long, L As Long, Cpt As Long, i As Long
        Dim Ph As String
        Dim Ext As Variant
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        If DerLig > 1 Then
            Range(Cells(2, "C"), Cells(DerLig, "C")).ClearContents
            For L = 2 To DerLig
                Ph = Cells(L, "B").Value
                Cells(L, "C").Value = Ph
                Ext = Split(Ph, " " & Cells(L, "A") & " ")
                ReDim Isol(0) As String
                For i = 1 To UBound(Ext)
                    Isol(Cpt) = "(" & Ext(i) & ")"
                    Cpt = Cpt + 1
                    ReDim Preserve Isol(Cpt)
                Next
     
                'supprime le caractère spécifique dans la phrase
                Cells(L, "C").Replace What:=" " & Cells(L, "A") & " ", Replacement:=""
     
                'Affiche les mots à conserver entre parenthèses
                For i = 0 To Cpt - 1
                    Cells(L, "C").Replace What:=Ext(i + 1), Replacement:="   " & Isol(i)
                Next i
                Cpt = 0
            Next L
        End If
    End Sub
    Cdlt

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Merci pour votre code ça fonctionne bien sauf que j'a un petit problème je voudrais juste encadrer que le mot qui vient après le caractère "à" et non pas tous les mots après. est-ce-qu'il y a une solution possible pour ce problème.

    par exemple:
    je vais à l'école avec mon ami à pied
    le résultat :
    je vais (l'école) avec mon ami (pied)
    Merci autre fois

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Voici la modif
    Pièce jointe 568541

    le code
    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
    41
    Sub Extraire()
        Dim DerLig As Long, L As Long, Cpt As Long, i As Long
        Dim Parenth_Ouv As Long, Parenth_Fer As Long
        Dim Ph As String, Var As String
        Dim Ext As Variant
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
        If DerLig > 1 Then
            Range(Cells(2, "C"), Cells(DerLig, "C")).ClearContents
            For L = 2 To DerLig
                Ph = Cells(L, "B").Value
                Cells(L, "C").Value = Ph
                Ext = Split(Ph, " " & Cells(L, "A") & " ") 'Extraction du mot
                ReDim Isol(0) As String
                For i = 1 To UBound(Ext)
                    Isol(Cpt) = "(" & Ext(i) & " " 'Ajout de la parenthèse ouvrante
                    Cpt = Cpt + 1
                    ReDim Preserve Isol(Cpt)
                Next
     
                'supprime le caractère spécifique dans la phrase
                Cells(L, "C").Replace What:=" " & Cells(L, "A") & " ", Replacement:=""
     
                'Affiche les mots à conserver entre parenthèses
                For i = 0 To Cpt - 1
                    Cells(L, "C").Replace What:=Ext(i + 1), Replacement:="   " & Isol(i)
                Next i
     
                'Ajout de la parenthèse fermante
                Parenth_Ouv = 1
                For i = 0 To Cpt - 1
                    Parenth_Ouv = InStr(Parenth_Ouv, Cells(L, "C"), "(", 1)
                    Parenth_Fer = InStr(Parenth_Ouv, Cells(L, "C"), " ", 1) - 1
                    Var = Left(Cells(L, "C"), Parenth_Fer - 1) & Mid(Cells(L, "C"), Parenth_Fer, 1) & ") " & Mid(Cells(L, "C"), Parenth_Fer + 1, Len(Cells(L, "C")) - Parenth_Fer)
                    Cells(L, "C").Value = Var
                    Parenth_Ouv = Parenth_Fer + 1
                Next
                Cpt = 0
            Next L
        End If
    End Sub
    Cdlt

Discussions similaires

  1. [MySQL-5.5] SELECT string après un caractère spécifique
    Par nebulla dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/02/2018, 01h06
  2. [XL-2003] Macro, extraire chaîne après caractère spécifique
    Par arkhang dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/11/2013, 12h03
  3. [XL-2010] Macro VBA pour supprimer des caractère situés après une valeur
    Par Guillaume_PMO dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2011, 17h06
  4. Réponses: 2
    Dernier message: 15/03/2010, 21h41
  5. Coupure après x caractères sans couper un mot
    Par ploufleouf74 dans le forum Langage
    Réponses: 7
    Dernier message: 15/09/2009, 19h14

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