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 :

valider la présence d'un mot dans une colonne avec .autofilter [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 69
    Points
    69
    Par défaut valider la présence d'un mot dans une colonne avec .autofilter
    Salut à tous,

    J'essaie de faire une fonction qui renvoie true si elle détecte la présence d'un mot précis dans un fichier excel et false si elle ne le trouve pas.

    Histoire de ne pas faire un truc trop gourmand (j'ai 50 000 mots à traiter), j'ai essayé de ne pas faire d'itération. La fonction .autofilter me semble idéale pour ça.

    La fonction que j'ai renvoie toujours True, voilà le problème. J'ai beau regarder la doc de l'autofilter, je n'arrive pas à faire ce que je veux.

    Mon tableau a deux colonnes: les mots et le nombre d'occurences. je mets les entêtes en A1 et B1 dans la sub principale. Lorsque j'applique mon filtre, le mot recherché, s'il est présent, arrive en seconde ligne, mais je ne sais pas comment récupérer le numéro de cellule (qui n'est bien sûr pas A2)

    Voici le code en l'état, que j'ai écrit à partir d'exemple piochés par ci par là:

    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
     
    Dim XL As New Excel.Application
    Dim classeur As Excel.Workbook
    Dim feuille As Excel.Worksheet
     
    Sub principale ()
     
        Set classeur = XL.WorkBooks.Add
        Set feuille = classeur.Worksheets.Add
     
        XL.Visible = True
        classeur.SaveAs "M:\Mafeuille.xlsx"
        feuille.Range("A1") = "Mots"
        feuille.Range("B1") = "Occurences"
     
    'Le reste du code je vous l'épargne vu qu'il n'a rien à voir avec le pépin. J'appelle juste la fonction TestNewWord avec le mot en argument.
    End Sub
     
    Function TestNewWord(ByVal word As String) As Boolean
     
    With feuille.UsedRange
            'la recherche
            .AutoFilter Field:=1, Criteria1:=word
            'le if je trouve alors je renvoie True
            If WorksheetFunction.CountBlank(.Columns(1)) > 0 Then
              TestNewWord = False
            Else
               TestNewWord = True
            End If
            'j'enlève le filtre
            .AutoFilter
    End With
     
    End Function
    Notez que les déclarations en début de code sont là parce que c'est une macro word. Je poste ici car je pense que ça ne change pas grand chose sur le principe.

    Merci par avance pour votre aide :-)

  2. #2
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 69
    Points
    69
    Par défaut
    Je m'auto-réponds vu que je viens de trouver une solution. Comme en cas de détection il y a deux lignes affichées, voilà comment j'ai fait ma fonction:
    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
     
    Function TestNewWord(ByVal word As String) As Boolean
     
     
    With feuille.UsedRange
        .AutoFilter Field:=1, Criteria1:=word
        'Là je compte le nombre de lignes, tout simplement
        If feuille.Range("A" & feuille.Rows.Count).End(xlUp).Row > 1 Then
            TestNewWord = False
        Else
            TestNewWord = True
        End If
     
            .AutoFilter
        End With
     
    End Function

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

Discussions similaires

  1. Vérifier la présence d'un mot dans une liste
    Par herken1986 dans le forum C#
    Réponses: 6
    Dernier message: 08/02/2012, 11h44
  2. Tester la présence de plusieurs mots dans une phrase
    Par Azerty32 dans le forum Général Python
    Réponses: 20
    Dernier message: 30/07/2010, 17h15
  3. [PHP 5.0] Insertion avec plusieurs mots dans une colonne
    Par cyrilherve dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2009, 08h41
  4. garder les 2eres lettres de chaque mot dans une colonne
    Par infiniti dans le forum Langage
    Réponses: 3
    Dernier message: 01/06/2008, 17h01
  5. Recherche d'un mot dans une colonne classée
    Par RéviAT dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/03/2008, 14h20

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