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 :

Macro : recherche dans textes par cellule


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut Macro : recherche dans textes par cellule
    Bonjour,

    Je souhaite faire une MACRO qui dit que si dans la cellule, il trouve au minimum les deux texte(s) recherché(s) de l’onglet « table de correspondance », alors en résultat on doit avoir le code article de la colonne B.

    La complexité est parfois le(s) texte(s) recherché(s) peuvent être au pluriel, voir contiennent des déterminants comme ‘de’ par exemple, etc.



    Merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonsoir,

    Une piste en attendant plus de précisions :
    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
     
    Sub Chercher()
     
        Dim Plage As Range
        Dim Cel_1 As Range
        Dim Cel_2 As Range
        Dim Mot1 As String
        Dim Mot2 As String
     
        'mots recherchés
        Mot1 = "MonMot1"
        Mot2 = "MonMot2"
     
        'plage à adpater
        Set Plage = Range("A1:A100")
     
        'recherche les mots dans les chaînes contenues dans les cellules
        Set Cel_1 = Plage.Find(Mot1, , xlValues, xlPart)
        Set Cel_2 = Plage.Find(Mot2, , xlValues, xlPart)
     
        'si les deux mots sont trouvés et que les deux cellules ont la même adresse, OK
        If Not Cel_1 Is Nothing And Not Cel_2 Is Nothing Then
     
            If Cel_1.Address(0, 0) = Cel_2.Address(0, 0) Then
     
                MsgBox "Les mots '" & Mot1 & "' '" & Mot2 & "' sont dans la cellule " & Cel_1.Address(0, 0)
     
                'ici ton code...
     
            End If
     
        End If
     
    End Sub
    Hervé.

  3. #3
    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 heu...
    bonsoir

    pour completer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     MsgBox "Les mots '" & Mot1 & "' '" & Mot2 & "' sont dans la cellule " & Cel_1.Address(0, 0) & vbCrLf & _
                "la valeur est" & Cells(Cel_1.Row, "B")
    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

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut
    Bonsoir,

    Merci pour vos réponses. j'ai ajusté en fonction de votre proposition, par contre la macro ne balaye pas toutes les cellules j'ai l'impression. Par exemple l'ACIDE SULFURIQUE n'est pas trouvé, alors que normalement cela devrait.

    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
     
    Sub Chercher()
     
        Dim Plage As Range
        Dim Cel_1 As Range
        Dim Cel_2 As Range
        Dim Mot1 As String
        Dim Mot2 As String
     
        'mots recherchés
        For x = 1 To 82
        Mot1 = Sheets("Feuil3").Range("B" & x)
        Mot2 = Sheets("Feuil3").Range("C" & x)
     
        'plage à adpater
        Set Plage = Sheets("Feuil1").Range("A1:A1000")
     
        'recherche les mots dans les chaînes contenues dans les cellules
        Set Cel_1 = Plage.Find(Mot1, , xlValues, xlPart)
        Set Cel_2 = Plage.Find(Mot2, , xlValues, xlPart)
    'Debug.Print Mot1
    'Debug.Print Mot2
        'si les deux mots sont trouvés et que les deux cellules ont la même adresse, OK
        If Not Cel_1 Is Nothing And Not Cel_2 Is Nothing Then
     
            If Cel_1.Address(0, 0) = Cel_2.Address(0, 0) Then
            Sheets("Feuil3").Range("B" & x).Offset(, 5) = "X"
                'MsgBox "Les mots '" & Mot1 & "' '" & Mot2 & "' sont dans la cellule " & Cel_1.Address(0, 0)
     
            End If
     
        End If
     Next x
    End Sub
    Merci encore

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Poste un exemple de classeur car il n'y a pas de raison que ça ne fonctionne pas !

    Hervé.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 110
    Par défaut
    Bonjour,

    Voici mon fichier joint pour lequel la macro ne balaye pas toutes les cellules. Par exemple l'ACIDE SULFURIQUE n'est pas trouvé, alors que normalement cela devrait.

    Merci de votre aide
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/12/2011, 11h18
  2. Recherche dans Text - bind key
    Par Spitfire 95 dans le forum Tkinter
    Réponses: 2
    Dernier message: 14/12/2010, 07h58
  3. Macro recherche dans le classeur
    Par Max485 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/04/2007, 15h07
  4. Recherche dans plage de cellules
    Par BATiViR dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2007, 13h31
  5. recherche dans texte
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/01/2006, 15h02

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