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 plusieurs valeurs d'après une valeur unique


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut Recherche plusieurs valeurs d'après une valeur unique
    Bonjour à tous,

    je reviens vers vous pour un sujet de recherche de plusieurs valeurs d'après la valeur d'une cellule. Je m'explique.

    Dans une feuille j'ai un tableau de donnée comme ceci :

    Code produit Position Quantité Produit composant
    PF001 10 1 P001
    PF001 20 4 P002
    PF001 30 5 I001
    PF002 10 6 P001
    PF002 20 10 P002
    PF003 10 5 P001
    PF003 20 20 I001
    PF003 30 4 I002
    P001 10 8 M001
    P001 20 9 M002
    P001 30 47 M003
    P002 10 18 M004
    I001 10 3 M005
    I002 10 7 M003
    I002 20 12 M004

    Je souhaiterais lorsque je tape un code produit, par exemple, PF001 il me ressorte les produits composants ainsi que les quantités mais que la macro fasse de même pour les produit composant pour obtenir ceci :

    Code produit : PF001

    Colonne B Colonne C Colonne D
    *P001 1
    M001 8
    M002 9
    M003 47
    *P002 4
    M004 18
    *I001 5
    M005 3

    Sachant qu'il pourrait y avoir encore 2 à 3 colonne de plus.

    Merci (encore) pour votre aide.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Tu places un filtre sur tes colonnes et tu obtiendras ça (et bien plus) en 2 secondes sans passer par du VBA.

    Ou passer par un filtre avancé comme il t'a déjà été proposé : https://www.developpez.net/forums/d1...ne-fonction-d/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Le problème est que je souhaite qu'il y ai un décale dans les colonnes pour les produit composant. Le filtre avancé peut-il le faire?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Après plusieurs essais les filtres avancées ne me permet pas d'obtenir mon résultat. Existe-t-il un autre moyen via formule ou VBA ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 66
    Points : 38
    Points
    38
    Par défaut
    Un tableau croisé dynamique est encore plus simple

    Nom : TCD.JPG
Affichages : 171
Taille : 29,0 Ko

  6. #6
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Le problème est que la tableau croisé dynamique ne ressortira pas les produits composant du code produit initial mais juste sa "nomenclature". Je souhaiterais que tout se "déroule" jusqu'à arriver au stade où il n'y à pas de produit composant.

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Franck76Dav Voir le message
    Le problème est que ....
    Le problème, c'est que tu ne prends pas la peine de décrire clairement et avec précision ce que tu souhaites.
    Dans ta première demande, tu n'as pas décris comment tu passes de ton premier tableau au second.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Le problème, c'est que tu ne prends pas la peine de décrire clairement et avec précision ce que tu souhaites.
    Dans ta première demande, tu n'as pas décris comment tu passes de ton premier tableau au second.
    Je comprends. Je vous transmets un fichier excel avec ce que je désire et j'espère sera plus explicite.

    https://www.cjoint.com/c/IBnkawKGx1X

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Autant pour moi. Je vous remets le fichier.

    ValNutri.xlsx

  11. #11
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,

    y a t-il des doublons de "Produit Composant" pour un même "Code Produit" ?
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  12. #12
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Bonjour,

    y a t-il des doublons de "Produit Composant" pour un même "Code Produit" ?
    Bonjour,

    il n'y a pas de doublons de "Produit Composant" pour un même "Code Produit".

  13. #13
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Le but final est il vraiment d'obtenir la présentation du résultat en post 1 ou est il tout autre ??
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  14. #14
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Le but final est vraiment d'obtenir le tableau N°2 du post 1 (ou présenté dans le classeur tableau de droite).

  15. #15
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Franck76Dav Voir le message
    Autant pour moi. Je vous remets le fichier.
    Dans ce cas, c'est que tu n'as pas compris le contenu du lien de mon post #9.

    Citation Envoyé par Franck76Dav Voir le message
    Le but final est vraiment d'obtenir le tableau N°2 du post 1 (ou présenté dans le classeur tableau de droite).
    Comme tu ne nous as toujours pas décrit précisément les règles permettant de passer du tableau 1 au tableau 2...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Bon alors j'explique.

    Dans une Feuil1, j'ai 4 colonnes (de A1 à D1, par exemple) nommées "Code produit", "Position", "Quantité" et "Produit Composants".

    Dans une Feuil2, je souhaiterais que lorsqu'un "Code Produit" est saisie dans une cellule (B1 par exemple), une macro s’exécute afin d'aller chercher dans mon tableau de la Feuil1, les "Produits Composants" ET les "Quantités" (qui s'insère dans la Feuil2 en D2 par exemple) MAIS que la macro aille rechercher les "Produits Composants" de mes "Produits Composants" (en effet mes "Produits Composants" peuvent être des "Code Produit" et de ce fait ressortir d'autres "Produit Composants) avec un décalage d'une colonne. Afin d'éviter qu'une boucle infinie se créer, les "Produits Composants" en M, E ou C ne possède pas de "Produits Composants" donc la macro passe à la ligne suivante de mes "Produits Composants" de mon "Code Produit" initiale en B1 de la Feuil2.

    Est-ce suffisamment clair?

  17. #17
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour

    Récursivement

    Données dans feuille BASE de A2: Dxxx

    Résultats copiés dans feuille RESULTAT

    A Adapter

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Explicit
    Dim j As Long
    Dim k As Byte
     
    Sub Test()
    Dim LastLig As Long, i As Long
    Dim IniComp As String
    Dim TBr(), TBb
     
    IniComp = "112461"
    j = 0
    Erase TBr
    With Worksheets("BASE")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To LastLig
            If .Range("A" & i) = IniComp Then
                TBb = .Range("A" & i & ":D" & LastLig)
                k = 1
                FindComp TBb, IniComp, TBr
                Exit For
            End If
        Next i
    End With
     
    With Worksheets("RESULTAT")
        .UsedRange.ClearContents
        .Range("A2").Resize(UBound(TBr, 2), 5) = Application.Transpose(TBr)
    End With
    MsgBox "terminé"
    End Sub
     
     
    Private Sub FindComp(ByVal Tb, ByVal Cp As String, ByRef Res())
    Dim Tmp As String
    Dim i As Long
    Dim Nxt As Boolean
     
    For i = 1 To UBound(Tb)
        If Tb(i, 1) = Cp Then
            j = j + 1
            Tmp = Tb(i, 4)
            ReDim Preserve Res(1 To 5, 1 To j)
            Res(k, j) = Tmp
            Res(5, j) = Tb(i, 3)
            If InStr("MCE", Left(Tmp, 1)) = 0 Then
                k = k + 1
                FindComp Tb, Tmp, Res
                k = k + IIf(Nxt, 0, -1)
            End If
        End If
    Next i
    Nxt = i < UBound(Tb)
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Le code fonctionne parfaitement à un seul détail près est que la macro exécute plusieurs fois la commande, du coup je me retrouve avec les mêmes valeurs mais en plusieurs fois. A quel niveau du code dois-je intervenir?

  19. #19
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    J'avais édité le code en ajoutant un exit for en ligne 20
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Chef de fabrication
    Inscrit en
    Février 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de fabrication
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2017
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Oui j'ai bien EXIT FOR à la ligne 20 mais il ne s'arrête qu'après avoir boucler 10 fois.

Discussions similaires

  1. [XL-2013] Rechercher plusieurs valeurs dans une même cellule
    Par taminem dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2015, 11h50
  2. Rechercher plusieurs valeurs
    Par chipster008 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/04/2011, 22h47
  3. Réponses: 9
    Dernier message: 14/07/2010, 20h35
  4. rechercher plusieurs valeurs dans un tableau
    Par biche1 dans le forum Excel
    Réponses: 2
    Dernier message: 18/09/2008, 15h28
  5. formulaire de recherche, plusieurs valeurs
    Par joseph.breham dans le forum IHM
    Réponses: 5
    Dernier message: 18/09/2006, 16h02

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