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 :

Fonction recherche et export dans un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Par défaut Fonction recherche et export dans un tableau
    Bonjour,

    Je suis confronté à un problème qui vous semblera surement extrêmement simple à réaliser.

    Je m'explique : j'ai un fichier excel dans lequel j'ai un tableau comportant un grand nombre de ligne et colonne sur ma Feuil1.
    Sur ma Feuil2 je voudrais pouvoir lancer une recherche qui ira parcourir les lignes de mon tableau en Feuil1 et m'afficher les multiples résultats dans un tableau

    Exemple Feuil1
    prénom      nom        Age
    Jean        Dupont     44
    Pierre      Durand     88
    Pierre      Dupond     22
    Sur ma Feuil2 je voudrais pouvoir afficher tous les informations concernant tous mes "Pierre" dans un tableau


    Au niveau de la recherche je parviens à afficher le résultat mais seulement dans une cellule

    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
    Function rechercheX(ValeurRecherche As Range, TableRecherche As Range, NumColonne As Integer) As Variant
     
    Dim NbLignes As Integer
    NbLignes = TableRecherche.Rows.Count
     
    Dim CompteurValeurTrouve As Integer
    CompteurValeurTrouve = 0
     
    For i = 1 To NbLignes
     
        If TableRecherche(i, 1).Value = ValeurRecherche.Value Then
            CompteurValeurTrouve = CompteurValeurTrouve + 1
     
                If CompteurValeurTrouve > 1 Then
     
                    rechercheX = rechercheX & TableRecherche(i, NumColonne).Value
     
                Else
                    rechercheX = TableRecherche(i, NumColonne).Value
                End If
     
        End If
     
    Next i
     
    End Function
    Merci pour votre retour.

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjourunitecnic

    Le plus simple est de sauvegarder les résultats au fur et à mesure sur une feuille

    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
    Function rechercheX(ValeurRecherche As Range, TableRecherche As Range, NumColonne As Integer) As Variant
     
    Dim NbLignes As Integer
    NbLignes = TableRecherche.Rows.Count
     
     Set FeuilDestination = ThisWorkbook.Worksheets("Feuil2")
     
    Dim CompteurValeurTrouve As Integer
    CompteurValeurTrouve = 0
     
    For i = 1 To NbLignes
     
        If TableRecherche(i, 1).Value = ValeurRecherche.Value Then
            CompteurValeurTrouve = CompteurValeurTrouve + 1
     
            FeuilDestination.Cells(CompteurValeurTrouve, 1).Value = TableRecherche(i, NumColonne).Value
     
        End If
     
    Next i
     
    End Function

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Par défaut
    Bonjour,

    Et merci Docmarti pour ton retour

    dans ma feuille 2 lorsque je tape la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =rechercheX(C3;Feuil1!A2:B15;2)
    Rien ne se passe, j'ai l'erreur #VALEUR! qui apparait.

    Une idée ?

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour unitecnic

    Je croyais que tu voulais une fonction VBA et non une fonction personnalisée (c-a-d appelée à partir d'une formule).

    On ne peut pas modifier une feuille à partir d'une fonction personnalisée. Donc la commande suivante produit une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FeuilDestination.Cells(CompteurValeurTrouve, 1).Value = TableRecherche(i, NumColonne).Value

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Par défaut
    Ma fonction marche.

    C'est juste que je n'arrive pas à afficher les multiples résultats dans des cellules différentes (1 résultat / cellule).
    J'arrive à séparer mes résultats avec une "," ou "/" ... mais seulement à l'intérieur d'une seule cellule.

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Une formule affiche toujours le résultat dans une seule cellule, celle où se trouve la formule.
    Pour afficher le résultat dans plusieurs cellules avec des formules, il faut une formule dans chaque cellule.

    Est-ce que tu dois nécessairement utiliser une formule ou bien tu peux utiliser simplement VBA sans formule?

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/07/2014, 09h40
  2. [Tableaux] Rechercher les doublons dans un tableau
    Par jym_22 dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2006, 09h47
  3. Réponses: 1
    Dernier message: 05/09/2006, 17h56
  4. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23
  5. Faire une recherche de texte dans un tableau de variable
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/02/2006, 13h12

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