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 :

Extraire un nombre précis de caractères après un mot trouvé par la fonction LIKE [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Par défaut Extraire un nombre précis de caractères après un mot trouvé par la fonction LIKE
    Bonjour à tous

    J'utilise LIKE pour vérifier si dans une cellule figure un mot précis, je voudrais extraire dans une autre cellule les 7 caractères après ce mot. Pour l'instant j'ai :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Range("A1").Value Like "*MOT*" Then
     
    Range("A2") = 'les 7 caractères après MOT
     
    End If

    Merci !

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Bien que je ne comprenne pas très bien pourquoi il y a deux adresses différentes (A1 et A2).
    Voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MotCherche As String: MotCherche = "mot"
    If Range("A1").Value Like "*" & MotCherche & "*" Then
      MsgBox Mid(Range("A2"), InStr(Range("A1"), MotCherche) + Len(MotCherche), 7)
    End If
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une autre solution que celle de Philippe sans Like

    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
     
    Function SeptCaracteresApresMot(ByVal CelluleSource As Range, ByVal MotRecherche As String) As Variant
     
    Dim CtrI As Integer
     
        If CelluleSource <> "" Then
           SeptCaracteresApresMot = ""
           For CtrI = 1 To Len(CelluleSource)
               Select Case Mid(CelluleSource, CtrI, Len(MotRecherche))
                      Case MotRecherche
                           If Len(CelluleSource) >= CtrI + Len(MotRecherche) + 7 Then
                              SeptCaracteresApresMot = Mid(CelluleSource, CtrI + Len(MotRecherche), 7)
                              Exit For
                           End If
               End Select
          Next CtrI
        End If
     
    End Function
    Cordialement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Par défaut
    merci je vais tester tout cela

    il y a deux cellules différentes car la première est à analyser (rechercher un MOT) et la seconde sert à reporter le résultat après le MOT

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 93
    Par défaut
    apparemment mon problème est résolu !

    merci Philippe pour ta piste

    j'ai modifié le code comme je le voulais, le voici pour comprendre ce que je voulais faire

    A1 = cellule dans la quelle une recherche de MOT doit être faites

    B2 = cellule où l'on reportera les 7 caractères après le MOT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim MotCherche As String: MotCherche = "MOT"
    If Range("A1").Value Like "*" & MotCherche & "*" Then
    Range("B2") = Mid(Range("A1"), InStr(Range("A1"), MotCherche) + Len(MotCherche), 7)
    End If

  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
    Bonjour

    il y a aussi la fonction split

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MotCherche As String: MotCherche = "MOT"
    If Range("A1").Value Like "*" & MotCherche & "*" Then
     Range("B2") = Left(Split(Range("A1"), MotCherche)(1), 7)
     End If
    Au plaisir

    Re
    après on peut même modifié la méthode d'écriture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MotCherche As String: MotCherche = "MOT"
    Range("B2") = IIf(Range("A1") Like "*" & MotCherche & "*", Left(Split(Range("A1"), MotCherche)(1), 7), "")
    Au plaisir
    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

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

Discussions similaires

  1. [WD-2010] Insertion Tabulation après les mots commençant par GEN
    Par nadir-1961 dans le forum Word
    Réponses: 2
    Dernier message: 21/05/2012, 18h47
  2. [CR XI] extraire un nombre dans une chaine de caractère
    Par kikidrome dans le forum Formules
    Réponses: 4
    Dernier message: 01/10/2009, 13h39
  3. [RegEx] Extraire des nombres séparés par des caractères spéciaux
    Par GouKen dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 16h49
  4. calcule de PI avec nombre préci de chiffres aprés la virgule!
    Par do_key_120 dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 17/10/2007, 22h58
  5. [MySQL] extraire des nombre d'une chaine de caractères et addition
    Par Yotho dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/03/2006, 16h54

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