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 sur 12 Feuilles et MultiResultats


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Par défaut Recherche sur 12 Feuilles et MultiResultats
    Bonsoir à tous !

    Voici mon premier post sur ce forum
    Je suis face à un double problème. En effet j'ai beaucoup cherché sur ce forum et sur le net en général à propos de la fonction RECHERCHE d'Excel dans le cas où nous souhaitons chercher une valeur parmi plusieurs feuilles, et à propos d'une fonction RECHERCHE qui me donnerait plusieurs résultats pour une seule requête.

    Malheureusement dans mon cas je souhaiterai réunir les deux choses ! Je souhaiterai lancer une recherche de "réference" sur la feuille 1 de mon fichier, recherche qui s'effectuerait parmi les 12 feuilles suivantes et qui pourrait parfois me rendre plusieurs résultats (en temps normal seul le premier résultat par ordre croissant apparait ) !

    Pour des raisons de confidentialité je ne peux pas vous illustrer mon problème avec le fichier XL-2003 réel, mais j'en ai créé un qui, même si il est simplifié, fonctionne selon la même demande

    Ci joint le fichier "Aide" :
    -1 feuille recherche classique. Je dois taper un code à chercher. La fonction me rapport alors le libellé et les 3 zones auquel ce code est rattaché.
    -12 feuilles correspondant à 12 régions (seules les 2 premières sont remplies ici). Plusieurs zones basses peuvent être incluses dans une zone moyenne (idem pour la zone moyenne dans la zone haute) et la zone haute correspondant finalement à la Region.

    Vous remarquerez que le code est formé de la concaténation de "Part1" et "Part2" et que un code n'est pas unique mais peut finalement comporter plusieurs "Produits".


    Ce que je cherche à faire c'est : Rechercher un code, et obtenir tous les produits qui lui sont associer ainsi que les 3 zones auquel ce code appartient.


    J'ai bêtement essayer d'utiliser une formule du type :
    =SI(ESTERREUR(RECHERCHEV(B1;Region1!A2:G20;2;0));SI(ESTERREUR(RECHERCHEV(B1;Region2!A2:G10;2;0))
    Mais ça ne marche pas et je suis limité par le nombre de feuilles avec Excel2003 de toute manière ...

    Il y'a surement une macro ou un code VBA à executer mais je suis complètement novice en la matière ...


    Si jamais vous pouviez m'aider là dessus ça serait génial !

    Merci beaucoup
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    Pour obtenir l'image en pieces jointes, ajouter cela en VBA

    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
    Sub devellopez()
    Dim i As Integer, j As Integer
    Dim cell As Range
    Dim code As String
    Dim L As Integer
     
        code = Feuil1.Range("a2")
        L = Feuil1.Range("b65000").End(xlUp).Row
        C = Feuil1.Range("b3").End(xlToRight).Column
        Feuil1.Range(Cells(2, 2), Cells(L, C)).ClearContents
     
     
    i = ActiveWorkbook.Sheets.Count
    On Error Resume Next
     For j = 2 To i
     
        For Each cell In Sheets(j).Range("a1:a" & Sheets(j).Range("a65000").End(xlUp).Row)
            If cell = code Then
            L = cell.Row
            H = Feuil1.Cells(3, 256).End(xlToLeft).Column + 1
            Feuil1.Cells(3, H).Value = Sheets(j).Cells(L, 7).Value
            Feuil1.Cells(4, H).Value = Sheets(j).Cells(L, 2).Value
            Feuil1.Cells(5, H).Value = Sheets(j).Cells(L, 3).Value
            Feuil1.Cells(6, H).Value = Sheets(j).Cells(L, 4).Value
            End If
     
        Next cell
     
    Next j
     
    End Sub
    Je ne suis pas sûr d'avoir bien compris ce que vous vouliez obtenir.
    J'ai du deplacer le code rechercher en a2.
    Une mise en forme conditionnelle pourrait gerer l'encadrement et les couleurs du tableau.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Par défaut
    Bonjour,

    Débutant dans le monde du VBA, j'ai simplement copié votre code dans la fenetre correspondant à la feuille Recherche dans MS Visual Basic. En entrant une référence dans la cellule A2, je n'obtient aucun résultat. Ai-je fais une mauvaise manipulation ?

    Cdlt

  4. #4
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonsoir

    Non, la macro tel que je l'ai ecrite ne se lance pas toutes seule.
    Vous pouver passer par le menu Outils macro et lancer la macro devellopez pour voir le resultat.

    Ou bien remplacer le code par celui ci. La macro se lance alors a chaque fois que la cellule A2 change de valeur.

    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
    35
    36
    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim KeyCells As Range
     Dim i As Integer, j As Integer
     Dim cell As Range
     Dim code As String
     Dim L As Integer
     
     Set KeyCells = Feuil1.Range("A2")
     
     If Not Application.Intersect(KeyCells, Range(Target.Address)) _
     Is Nothing Then
     
        code = Feuil1.Range("a2")
        L = Feuil1.Range("b65000").End(xlUp).Row
        C = Feuil1.Range("b3").End(xlToRight).Column
        Feuil1.Range(Cells(2, 2), Cells(L, C)).ClearContents
     
    i = ActiveWorkbook.Sheets.Count
    On Error Resume Next
     For j = 2 To i
     
        For Each cell In Sheets(j).Range("a1:a" & Sheets(j).Range("a65000").End(xlUp).Row)
            If cell = code Then
            L = cell.Row
            H = Feuil1.Cells(3, 256).End(xlToLeft).Column + 1
            Feuil1.Cells(3, H).Value = Sheets(j).Cells(L, 7).Value
            Feuil1.Cells(4, H).Value = Sheets(j).Cells(L, 2).Value
            Feuil1.Cells(5, H).Value = Sheets(j).Cells(L, 3).Value
            Feuil1.Cells(6, H).Value = Sheets(j).Cells(L, 4).Value
            End If
     
        Next cell
     
    Next j
    End If
    End Sub
    On peut egalement creer un bouton ou un raccourci clavier, a votre convenance.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Par défaut
    Bonsoir !
    Merci j'ai génial j'ai pu trouver une solution à mon problème grâce à vous

    J'ai en plus de ça découvert un peu le monde du VBA, j'espère pouvoir en apprendre un peu plus avec un autre projet !

    Quelle efficacité !
    Merci

Discussions similaires

  1. [XL-2010] Formule de recherche sur plusieurs feuilles
    Par Alasgard dans le forum Excel
    Réponses: 7
    Dernier message: 03/11/2014, 09h59
  2. [XL-2003] VBA Recherche sur plusieurs feuilles et copie éléments find
    Par sharivary dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2014, 14h20
  3. [XL-2003] Recherche sur plusieurs feuilles
    Par chipster008 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/04/2011, 10h30
  4. [E-07] Recherche sur plusieurs feuilles
    Par jean1190 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/01/2009, 19h36
  5. [VBA-Excel]recherche sur plusiers feuilles
    Par salim_kwada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/08/2006, 16h38

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