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 :

Excel VBA Rechercher et Afficher les données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Business Analyst
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Business Analyst
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut Excel VBA Rechercher et Afficher les données
    Bonjour,

    Je cherche désespérément une solution sur vba par macro pour afficher des données selon plusieurs critères:
    1/ J'ai dans une feuille un tableau (Sheets "BDD") en colonne les données pré-enregistrer dans ce tableau j'ai besoin d'afficher les données de la colonne Y:Y en fonction de plusieurs critères de la feuille ("FEuil1") positioné en range ("C2:C12") pour les codes produits / Range ("A1") pour un critère géographique/Range ("B2") pour la période.
    2/ Ainsi la macro recherche les données de la ( Sheets("BDD")) en fonction des criètères de la ("Feuil1") & Range ("A1") & Range ("B2")
    Soit dans la Sheets ("BDD") chaque critère de la feuil1 se retrouve dans l'ordre:
    - Code produit Colonne A:A
    - Géographie colonne B:B
    - Période colonnne C:C
    - Données que l'on veut afficher à côté de chaque code Produit, soit pour chaque code une valeur se trouve en colonne Y:Y
    3/Afficher les données à coté de chaque code produit dans la feuil1 soit "D2:D12" et si pas de données trouvé, afficher 0

    Je précise que j'ai essayé avec une formule matricielle index equiv avec concaténation et que cela marche très bien, mais c'est hyper lourd au niveau temps de chargement je préfèrerai en vba, d'où l'idée de faire appel à votre aide.

    Merci beaucoup pour le coup de main, j'ai essayé différentes techniques mais je tourne beaucoup en rond...je ne trouve pas la solution sur les différents forum. Et comme ici j'avais déjà reçu une superbe aide!!!
    Merci beaucoup

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Par vba, essaies par l'enregistreur de macro

    Faire un filtre automatique selon tes critères
    Copier les données visibles
    Enlever le filtre automatique

  3. #3
    Membre averti
    Homme Profil pro
    Business Analyst
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Business Analyst
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut Merci pour le conseil mais une boucle avec Find ?
    Merci,

    J'ai suivi votre conseil en utilisant l'enregistreur Macro, mais ça ne m'avance pas trop...
    Voici où j'en sui à partir de plusieurs forum...

    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
    Sub rechercherafficher()
     
    Dim a as String
    Dim b as String
    Dim c as Range
    Dim h as Range
     
    a= Range ("A2") ' correspond au critère 1
    b= Range ("B3") ' correspond au critère 2
    c = Range ("C2:C12) ' correspond au critère Code produit où je vais affecter une boucle pour chaque ligne
     
    For each cell in c
    Nom= cell.Value
    With Sheets ("BDD")
    set h = .columns("A:A" & "C:C"& "M:M"&"Y:Y").Find (Nom)
    ' "A:A" correspond au code produit soit c/ C:C correspond au critère 1 période/ "M:M" correspond au criètre 2 géographie/ "Y:Y" à la donnée que l'on recherche soit "Nom= Cell.value) le fameux find (Nom)
    if not h is nothing then
    Sheets ("Feuil1"). range ("D" & cell.row).value = h.value
    Else
    MsgBox "Ligne pas encore crée)
    End if
    End with
    next cell
    End Sub
    Le problème ici s'il y en a qu'un (...) c'est que je ne sais pas comment dans le code cumulé les différents critères....
    merci encore pour le coup de main.
    Ricoeva

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Quelle est ta version d'Excel?
    Tu peux mettre en PJ un extrait de ton fichier (sans données confidentielles)

  5. #5
    Membre averti
    Homme Profil pro
    Business Analyst
    Inscrit en
    Juillet 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Business Analyst
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 31
    Par défaut Ci-joint le fichier en exemple
    Merci encore pour le coup de main, je suis vraiment navré de demander de l'aide...mais je ne trouve pas la solution...
    Au passage je n'ai pas réussi à mettre le fichier avec la macro sans passer par le fichier zip
    merci beaucoup
    J'ai excel 2010

    ricoeva
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    En utilisant un filtre automatique
    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
    Sub Extraction()
    Dim Ws As Worksheet
    Dim LastLig As Long
    Dim i As Byte
     
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil1")
    With Worksheets("BDD")
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("A1:AF" & LastLig)
            .AutoFilter Field:=3, Criteria1:=Ws.Range("A2")
            .AutoFilter Field:=13, Criteria1:=Ws.Range("B2")
            For i = 3 To 13
                .AutoFilter Field:=1, Criteria1:=Ws.Range("C" & i)
                If .Range("A1:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
                    .Range("R2:AE" & LastLig).SpecialCells(xlCellTypeVisible).Copy Ws.Range("D" & i)
                Else
                    Ws.Range("D" & i & ":Q" & i).ClearContents
                End If
            Next i
        End With
        .AutoFilterMode = False
    End With
    Set Ws = Nothing
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2010, 08h38
  2. Réponses: 2
    Dernier message: 02/07/2010, 18h16
  3. Réponses: 3
    Dernier message: 09/02/2007, 11h31
  4. [VBA-E] afficher les données d'une datagrid dans des zones de textes
    Par fadwa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/05/2006, 13h51
  5. [Excel] Comment afficher les données d'un fichier Excel (PHP)
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/05/2006, 15h01

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