XL 2016 Macro pour afficher des cellules

Manu54

XLDnaute Nouveau
bonjour
Etant plus que novice je me permet de vous demander de l'aide.
En fait j'ai un classeur excel avec environ 50 onglets qui sont des listes de prix de clients.
J'ai un onglet "global" qui est une liste de prix avec tous les articles et leur prix sans remise
Je voudrais une macro qui me permette ceci svp:
quand je sélectionne un produit dans la cellule A1 de la feuille "choix" et en cliquant sur un bouton pour valider, cela crée une liste ( (à chercher dans toutes les feuilles) de tous les prix correspondant a cet article avec le nom du client (qui est dans l'onglet ou en haut de chacune des feuilles) sur la feuille "result" en commençant sur la cellule A4 par le 1er client et en dessous le prix de l'article, A5 le client suivant, etc etc
J'aimerais que cela indique aussi la ref sur D2 de la feuille "Result", la description sur G2 et le code article international en J2 de l'article en question.
Si on peut avoir le prix de ref (celui qui vient la la liste global) sur la cellule B9, ca serait top!
Si l'article n'est pas dans la liste de prix du client, on devra voir le client avec un "X" dans la cellule du prix.
Je joins un exemple de fichier, j'adapterai vos solutions a mon fichier réel.
j'espère que vous pourrez m'aider
Merci d'avance
Manu
 

Pièces jointes

  • test.xlsx
    51.9 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Manu,
Un essai en PJ.
J'ai supprimé la feuille "Choix" pour tout remettre en feuille "Result"
Le choix article se fait en cellule B1.
VB:
Sub Cherche()
On Error GoTo Fin
    Dim IndexArt%, IndexW%, Article$, Sh As Worksheet
    Sheets("RESULT").Range("B4:Z5").ClearContents
    ' Renseignement article
    IndexArt = Application.Match(Sheets("GLOBAL").[Article], Sheets("GLOBAL").Range("A:A"), 0)
    Sheets("RESULT").[Ref] = Sheets("GLOBAL").Cells(IndexArt, "A")
    Sheets("RESULT").[Description] = Sheets("GLOBAL").Cells(IndexArt, "B")
    Sheets("RESULT").[CodeArt] = Sheets("GLOBAL").Cells(IndexArt, "C")
    Sheets("RESULT").[PxGlob] = Sheets("GLOBAL").Cells(IndexArt, "D")
    ' Recherche clients
    Article = Sheets("RESULT").[Article]
    IndexW = 2
    ' Pour toutes les feuilles
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "GLOBAL" And Sh.Name <> "RESULT" Then ' Exclusion des feuilles non client
            With Sheets(Sh.Name)
                If Not IsError(Application.Match(Article, .Range("A:A"), 0)) Then
                    ' Si l'article existe
                    IndexArt = Application.Match(Article, .Range("A:A"), 0)
                    Sheets("RESULT").Cells(4, IndexW) = .Range("A1")
                    Sheets("RESULT").Cells(5, IndexW) = .Cells(IndexArt, "D")
                    IndexW = IndexW + 1
                Else
                    ' Si l'article n'existe pas
                    Sheets("RESULT").Cells(4, IndexW) = .Range("A1")
                    Sheets("RESULT").Cells(5, IndexW) = "X" ' mettre X par defaut.
                    IndexW = IndexW + 1
                End If
            End With
        End If
    Next Sh
Fin:
End Sub
 

Pièces jointes

  • test (17).xlsm
    58.6 KB · Affichages: 11

Manu54

XLDnaute Nouveau
Merci pour ta réponse Sylvanu, c'est cool!
Ca semble fonctionner sur mon fichier
Comment peut on afficher en colonne (par ex E et F) plutôt que sur des lignes (ici: 4 et 5)?
Comment partir depuis la 3e ou 4e feuilles plutôt que toutes les prendre ?

Merci encore pour l'aide
Manu
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dans votre requete initiale, le rangement se faisait sur les lignes, d'où ma réponse. Voir PJ modifiée avec liste en colonnes.
Pour exclure des feuilles, on peut modifier cette ligne :
VB:
If Sh.Name <> "GLOBAL" And Sh.Name <> "RESULT" Then ' Exclusion des feuilles non client
en rajoutant les feuilles :
Code:
If Sh.Name <> "GLOBAL" And Sh.Name <> "RESULT" And Sh.Name <> "NomFeuille" Then ' Exclusion des feuilles non client
 

Pièces jointes

  • test (17) (2).xlsm
    59.1 KB · Affichages: 11

Manu54

XLDnaute Nouveau
Oui ca marche super bien merci
Juste stp : ou je définis la position de ref article, prix global, code article etc sur la feuille result?
J'aimerais pouvoir les disposer a coté des prix ou ailleurs dans mon tableau réel.
Si tu peux me détailler les codes cela m'aiderait à progresser et ne plus t'embeter.
Sinon pas grave je ferais avec.
Merci pour tout
 

Discussions similaires

Haut Bas