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 :

Détecter des mots par macro sous Excel 2016


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut Détecter des mots par macro sous Excel 2016
    Bonjour à tous les lecteurs : Dans un fichier Excel comprenant de nombreuses lignes: Comment détecter des mots précis par macro lors de la frappe ou validation de la ligne par la touche Entrée ?
    Exemple en Colonne B2 =Mon texte Bla Bla Bla (Allemand)
    B3 =Mon texte Bla bla bla (Anglais) etc. jusqu'à l'infini Le texte par ex (Allemand ou Anglais) et les parenthèses sont en rouge.
    J'ai essayé la MFC mais ne conviens pas car transforme tout le texte en rouge.
    Par avance merci pour votre aide car je ne maitrise pas totallement le VBA.
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Bonjour

    Pouvez-vous travailler sur plusieurs colonnes?
    Si oui, sans macro, il serait possible de "découper" le texte pour mettre le texte "Blabla.." dans une case de la colonne C par exemple et "(Langue)" dans la colonne D.

    Bonne soirée
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut
    Bonsoir Qwazerty : Non je ne peux pas travailler sur plusieurs colonnes car j'ai déjà réduit au maximum et ce tableau qui me prend déjà toute la largeur de l'écran. Si oui effectivement j'aurais pu découper le texte.

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut
    Ça ne prendrait pas plus de place puisque la colonne B contenant texte + langue serait alors masqué car n'étant plus utile (peut-être)

    Pour réaliser un macro de ce genre, je commencerais par enregistrer un macro avec l'enregistreur de macro afin d'obtenir le code permettant de ne mettre en rouge qu'une partie du texte. (Onglet "développeur", si celui-ci n'est pas présent, il faut l'activer dans le menu général (Bouton rond en haut à gauche) "Options Excel", "Standard", "Meilleurs options pour travailler avec Excel", "Afficher l'onglet dev...".

    Par la suite il faudra rechercher dans la cellule les "()" et regarder ce qu'elles contiennent.
    Le code sera placé dans l'événement Change de la feuille de calcul.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut
    Re : Merci de participer à cette discussion. J'ai bien réussi à associer le mot entre parenthèses mais il doit être impérativement inclus dans la ligne de texte en colonne B car j'ai déjà une TextBox associée à la Colonne B pour effectuer une recherche par mot clé ou en tapant par les 1eres lettres d'un mot clé. Je suis nul en anglais et n'ai pas appris correctement le langage VBA. j'arrive seulement à modifier du code lorsque cela ne dépasse pas trop mes compétences.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir
    en VBA:
    tu veux savoir si il y a un mot entre parentheses?
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox [A1].text like "*(*"
    tu veux savoir ou commence cette chaine entre prentheses??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox "la prentheses d'ouverture est " InstrRev([A1].text,"(") & "eme caractere"
    tu veux mettre cette(chaine entre prentheses) en rouge ?
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    depart = InStrRev([A1].Text, "(")
    [A1].Characters(Start:=depart, Length:=Len([A1].Text) - depart + 1).Font.Color = vbRed
    End Sub
    bien entendu il te faudra faire la gestion de la presence ou pas de la chaine entre parentheses

    edit :une petite variante on met tout en rouge au depart
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test2()
    [A1].Font.Color = vbRed
    depart = InStrRev([A1].Text, "(")
    [A1].Characters(Start:=1, Length:=depart - 1).Font.Color = vbBlack
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Il faudra sans doute adapter un peu

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim CouleurDebut As Long, CouleurFin As Long, CouleurLongueur As Long
     
    'On recherche les bornes pour la mise en couleur
    'Il faudra modifier un peux surtout si des parenthèses peuvent être présente dans le corps du texte...
    CouleurDebut = InStr(1, Target.Value, "(")
    CouleurFin = InStr(1, Target.Value, ")")
     
    'Si la parenthèse fermante n'existe pas, on va jusqu'au bout du texte
    If CouleurFin = 0 Then CouleurFin = Len(Target.Value)
     
    'On calcule la longueur du texte à passer en rouge
    CouleurLongueur = (CouleurFin - CouleurDebut) + 1
     
    'On teste si la parenthèse ouvrante existe
    If CouleurDebut <> 0 Then
        With Target.Characters(Start:=1, Length:=CouleurDebut - 1).Font
            .ColorIndex = 1 'Noir
        End With
        With Target.Characters(Start:=CouleurDebut, Length:=CouleurLongueur).Font
            .ColorIndex = 3 'Rouge
        End With
    End If
     
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [XL-2016] Performance macros sous excel 2016
    Par retraite83 dans le forum Macros et VBA Excel
    Réponses: 56
    Dernier message: 06/08/2018, 16h59
  2. [XL-2016] Problème macro qui fonctionne que en pas à pas sous Excel 2016
    Par Gorzyne dans le forum Excel
    Réponses: 3
    Dernier message: 01/02/2018, 11h58
  3. [XL-2016] Macro Excel 2010 ne fonctionne plus sous Excel 2016
    Par leloup84 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/07/2016, 15h20
  4. [RegEx] Détecter des mots séparés par différents espaces
    Par lorange dans le forum Langage
    Réponses: 4
    Dernier message: 03/03/2009, 21h20
  5. Activation des macros sous Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2005, 11h44

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