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 :

Probleme sur un find en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 10
    Par défaut Probleme sur un find en VBA
    Bonjour a tous,

    Je vais essayer d'être clair dans ma question.

    J'utilise la fonction "find" pour rechercher une rubrique dans un tableau, cela fonctionne très bien sauf quand la valeur recherchée est doublé sur les 2 première ligne,
    Il ramène la ligne 3 au lieu de la ligne 2 par contre quand j'ai des rubriques doublé en milieu de fichier cela fonctionne très bien il me ramène bien la première occurrence


    ci-joint un exemple:TestFind.xlsm


    Je j'espère avoir été assez clair Merci d'avance

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 572
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 572
    Par défaut
    Bonjour

    Un tableau structuré ne se gère pas comme une plage : Excel y différencie Range et DataBodyRange (qui n'intègre pas l'en-tête) et dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Worksheets(sheet).Range("table1").Cells.Find(RubriqueCherchee)
    c'est DataBodyRange qu est considéré

    En utilisant dans l'appel le nom du tableau et non celui dela feuille (Excel sait dans quelle feuille il est) on obtient la bonne ligne même si le tableau ne commence par en ligne 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
     
    Dim i_RechercheRubrique As Long
     
        i_RechercheRubrique = RubriqueLigne_lookup2("3PRIM", "Table1")
     
        MsgBox "3PRIM = " & i_RechercheRubrique
     
    End Sub
    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 RubriqueLigne_lookup2(RubriqueCherchee As String, Ttable As String) As Long
     
     Dim ra As Range
     
        With Range(Ttable).ListObject.Range
         Set ra = .Find(RubriqueCherchee)
     
            If ra Is Nothing Then
     
                RubriqueLigne_lookup2 = 0
            Else
                RubriqueLigne_lookup2 = ra.Row
     
            End If
        End With
     
    End Function
    mais peut obtenir la ligne relativement au contenu du tableau donc 1 pour 3PRIM et 4 pour CAGE si on utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RubriqueLigne_lookup2 = ra.Row - ra.ListObject.Range.Row
    On peut aussi limiter la recherche à la 1ère colonne qui n'est pas forcément en A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Range(Ttable).ListObject.ListColumns(1).Range
    NB : éviter d'utiliser pour des variables des noms réservés, comme sheet ou Table
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur :plusser: c'est toujours apprécié...

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 10
    Par défaut
    Merci Chris
    je vais tester ça

    Encore Merci Ca marche super bien

Discussions similaires

  1. [Toutes versions] Problème sur req SQL via VBA
    Par Tippa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/10/2018, 15h06
  2. [XL-2002] Probleme sur la RechercheV en VBA
    Par beber_le_stagiaire dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 12/06/2009, 14h00
  3. Problème sur un find en ksh
    Par Lebowsky dans le forum Linux
    Réponses: 6
    Dernier message: 28/07/2006, 18h39
  4. [VBA excel] Probleme sur bouton commande
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 22/11/2005, 10h10
  5. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51

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