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 :

Question sur la fonction find : mot entier seulement [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Par défaut Question sur la fonction find : mot entier seulement
    Bonjour à tous

    Je vous explique mon problème :

    J'ai des requêtes SQL enregistrées dans des cellules de mon fichier Excel.

    Je veux extraire de ces requêtes les différents nom de tables, j'utilise donc la fonction find qui balaie ma requête et qui utilise une liste de table pour comparer et retourner les tables effectivement trouvées dans la requête.

    J'utilise donc un .Find(What:=Worksheets("Tables").Cells(j, 2).Value, LookAt:=xlPart)

    Lorsque le nom d'une table existante dans mon onglet Tables est trouvé dans la requête, le nom est conservé, celà fonctionne bien.

    Le problème est que est j'ai des noms de tables qui en contiennent d'autres, exemple :

    Table 1 : T_AAA_BBB_CCC
    Table 2 : T_AAA_BBB

    Du coup admettons que dans ma requête il y ait la table T_AAA_BBB_CCC mais pas la T_AAA_BBB, quand mon code va rechercher la chaine "T_AAA_BBB" (vu qu'elle est dans la liste des tables existantes, qui est fixe), il va quand même trouver une correspondance, et me dire a tord que T_AAA_BBB est utilisée dans la requête.

    Je pensais qu'un LookAt:=xlWhole pouvait m'aider mais j'ai l'impression que non, il renvoie "trouvé" que si la cellule contenant la requête ne contient que la chaîne recherchée et rien d'autre, ce qui n'est pas le cas.

    Je cherche donc un moyen pour que seule T_AAA_BBB_CCC soit retournée, en vain

    Si vous avez des idées, elles sont plus que bienvenues

    Merci d'avance,

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 107
    Par défaut
    Essaies de tester le contenu de la cellule par la suite avec quelque chose du genre

    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 evdsf()
        Dim c As Range
        Dim s As String
        Dim r1 As String
        Dim fnd As Boolean
        Dim rng As Range
    '...
     
        Set rng = LaPlageOuRechercher
     
     
        With rng
            s = Worksheets("Tables").Cells(j, 2).Value
            fnd = False
            Set c = .Find(s, LookAt:=xlPart)
            If Not c Is Nothing Then
                If c.Value <> s Then
                    r1 = c.Address
                    Do
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> r1 And c.Value <> s
                    If c.Value = s Then fnd = True
                Else
                    fnd = True
                End If
            End If
        End With
     
        If fnd = True Then
            '...
     
     
    End Sub

    EDIT :

    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set c = .Find(s, LookAt:=xlPart)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set c = .Find(s, LookAt:=xWhole)

  3. #3
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 56
    Par défaut
    Bonjour,

    Dans Find, Il faut spécifier LookAt:=xlWhole

    Ceuzin

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Par défaut
    Merci à vous 2

    Sophieceuzin, si j'ai bien compris le xlWhole trouve ma chaîne seulement si la cellule est composée uniquement de cette chaîne, ce qui n'est pas le cas

    Alpha, je me penche sur ta solution

    Hésitez pas si vous avez d'autres pistes !

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

Discussions similaires

  1. Question sur la fonction find
    Par JojoLeFunambule dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 02/09/2014, 17h20
  2. [XL-2010] Question sur la fonction cells.find
    Par quentin22breizh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/11/2012, 10h16
  3. Question sur les fonctions "send()" et "recv(
    Par damien99 dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2006, 20h47
  4. Réponses: 1
    Dernier message: 08/02/2006, 11h18
  5. Réponses: 2
    Dernier message: 21/12/2005, 09h39

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