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 :

Recherche NOM avec VLookup


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 9
    Par défaut Recherche NOM avec VLookup
    Bonjour,

    Je coince sur une recherche de Nom dans ma liste qui se trouve dans la colonne F
    Avec la ligne ci-dessous, dans ma procédure, je trouve bien le premier Nom qui commence par DUP, DUPOND par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom = Application.WorksheetFunction.VLookup("DUP", Range("F4:F515"), 1, True)
    Ce que je voudrais, mais je n'y arrive pas, c'est de trouver tous les Noms qui commencent par DUP, par exemple: DUPOND, DUPONT, DUPRAT, DUPLOT,...

    Si vous pouvez m'aider, MERCI.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim c As Range, Nom As String, ResAdr As String
    Set c = Range("F4:F515").Find("DUP")
    If Not c Is Nothing Then
        ResAdr = c.Address
        Do
            Nom = c.Value
            Set c = Range("F4:F515").FindNext(c)
        Loop Until c.Address = ResAdr
    End If

  3. #3
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Daniel je crois qu'avec ton code tu matches tous les éléments de la colonne qui contiennent DUP pas seulement ceux qui commencent par DUP.

    Pour ne récupérer que les noms qui commencent par DUP tu peux essayer ceci :
    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
    Sub test()
    Dim c As Range
    Dim strListeNoms as string
     
    strListeNoms=""
     
        For Each c In range("F4:F515").Cells
            If UCase(c.Value) Like "DUP*" Then        'Ucase pour s'affranchir de la casse
                strListeNoms=strListeNoms & " " & c.Value
            End If
        Next c
     
    debug.print strListeNoms
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Très juste, au temps pour moi. Personnellement, pour éviter une boucle, je préfère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim c As Range, Nom As String, ResAdr As String
    Set c = Range("F4:F515").Find("DUP")
    If Not c Is Nothing Then
        ResAdr = c.Address
        Do
            If LCase(Left(c, 3)) = "dup" Then Nom = c.Value
            Set c = Range("F4:F515").FindNext(c)
        Loop Until c.Address = ResAdr
    End If
    et, si la casse a une importance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim c As Range, Nom As String, ResAdr As String
    Set c = Range("F4:F515").Find("DUP")
    If Not c Is Nothing Then
        ResAdr = c.Address
        Do
            If Left(c, 3) = "DUP" Then Nom = c.Value
            Set c = Range("F4:F515").FindNext(c)
        Loop Until c.Address = ResAdr
    End If

Discussions similaires

  1. Recherche avec VlookUp
    Par breizhcola29 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2015, 17h37
  2. [XL-2007] Recherche avec VLookup
    Par PSAIMOND dans le forum Excel
    Réponses: 3
    Dernier message: 24/07/2014, 18h19
  3. [XL-2007] Recherche repertoire avec nom incomplet
    Par isfet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2010, 09h12
  4. rechercher un nom avec une date
    Par fins51 dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/04/2007, 19h27
  5. Recherche "étoilée" avec std::set
    Par guejo dans le forum MFC
    Réponses: 2
    Dernier message: 06/05/2004, 13h28

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