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 :

trouver pièce capable


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
    Technicien Help Desk
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Par défaut trouver pièce capable
    Bonjour,

    J'ai un tableau comprenant des articles en stock dans la zone de gauche.
    Ces articles sont de nature différentes (barreA, barreB etc...) et de dimensions différentes.

    La seconde feuille comprend uniquement la nature des articles.

    Je souhaiterais insérer une liste de pièce à découper, la zone bleue.

    J'aimerais qu'excel me trouve l'article en stock dans lequel je pourrais découper la pièce en question, la zone verte.
    L'article en stock doit être strictement plus grand en longueur et en largeur que la pièce à découper

    Si la pièce à couper est de nature barreA, l'article en stock doit être de nature barreA.

    Malheureusement je ne sais pas trop par où commencer.

    Pourriez vous me mettre sur les rails?

    D'avance merci

    article.xlsx

  2. #2
    Expert éminent 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
    Par défaut
    Citation Envoyé par saimone67 Voir le message
    Malheureusement je ne sais pas trop par où commencer.
    Par écrire un algorithme précis de ce que tu souhaites.
    Actuellement, ta demande est trop imprécise.

    Par exemple, quel est le critère prioritaire entre la largeur et la longueur ?
    Par exemple, si tu veux une coupe de 800x100, est-ce que tu choisiras la 860x450 ou 2250x120 ?

    Malheureusement je ne sais pas trop par où commencer.
    Pourriez vous me mettre sur les rails?
    Peut-être pourrais-tu commencer par là : http://bidou.developpez.com/article/VBA/

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Par défaut
    Merci pour ta réponse.

    Dans l'idéal, j'aimerais connaitre tout les articles possibles pour découper la pièce en question.
    Mais si cela n'est pas possible, alors priorité sur la largeur.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci, attention toutes les formules sont à valider avec CTRL + SHIFT + ENTREE
    Formule pour trouver la largeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(MIN(SI(($A:$A=$I2)*(C:C>K2);$C:$C));"introuvable")
    Formule pour trouver la longueur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(INDEX($B:$C;EQUIV(I2&$P2;$A:$A&$C:$C;0);1);"introuvable")
    Formule pour trouver le lieu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(INDEX($A:$E;EQUIV(O2&P2;$B:$B&$C:$C;0);5);"")
    Formule pour trouver la barre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(INDEX($A:$E;EQUIV(O2&P2;$B:$B&$C:$C;0);1);"")
    Le fichier
    Pièce jointe 493194

    Cdlt

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Autre proposition en VBA, affiche la liste de toutes les options possibles

    Le fichier
    Pièce jointe 493228

    Le code
    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
    Sub Recherche_barre()
        Dim DerLig_i As Long, DerLig_A As Long, DerLig_N As Long, i As Long, L As Long
        Application.ScreenUpdating = False
        DerLig_i = [I10000].End(xlUp).Row
        DerLig_A = [A10000].End(xlUp).Row
     
        Range("N2:R1000").ClearContents
        For L = 2 To DerLig_i
            Barre = Cells(L, "i")
            Longueur = Cells(L, "j")
            Largeur = Cells(L, "K")
            'Epaisseur = Cells(l, "L")
            DerLig_N = [N10000].End(xlUp).Row
     
            For i = 2 To DerLig_A
                If Cells(i, "A") = Barre And Cells(i, "B") >= Longueur And Cells(i, "C") >= Largeur Then
                    Cells(DerLig_N + 1, "N") = Barre
                    Cells(DerLig_N + 1, "O") = Cells(i, "B") 'Longueur
                    Cells(DerLig_N + 1, "P") = Cells(i, "C") 'Largeur
                    Cells(DerLig_N + 1, "Q") = Cells(i, "D") 'Epaisseur
                    Cells(DerLig_N + 1, "R") = Cells(i, "E") 'Lieu
                    DerLig_N = DerLig_N + 1
                End If
            Next i
        Next L
     
        'tri
        Range("N2:R" & DerLig_N).Select
        ActiveWorkbook.Worksheets("stock").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("stock").Sort.SortFields.Add Key:=Range("N2:N" & DerLig_N), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("stock").Sort.SortFields.Add Key:=Range("O2:O" & DerLig_N), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("stock").Sort.SortFields.Add Key:=Range("P2:P" & DerLig_N), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("stock").Sort.SortFields.Add Key:=Range("Q2:Q" & DerLig_N), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("stock").Sort.SortFields.Add Key:=Range("R2:R" & DerLig_N), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("stock").Sort
            .SetRange Range("N2:R" & DerLig_N)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
        'Suppression des doublons
        For i = DerLig_N To 2 Step -1
            If Cells(i, "N") = Cells(i - 1, "N") And Cells(i, "O") = Cells(i - 1, "O") And Cells(i, "P") = Cells(i - 1, "P") And Cells(i, "Q") = Cells(i - 1, "Q") And Cells(i, "R") = Cells(i - 1, "R") Then Range(Cells(i, "N"), Cells(i, "R")).Delete
        Next i
    End Sub
    Cdlt

  6. #6
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2017
    Messages : 17
    Par défaut
    Merci pour le fichier,
    je viens de faire un test, malheureusement il y a quelques soucis :/

    Saurais tu à quoi cela est du?

    saimone67_trouver pièce capable_essai.xlsm

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 02/11/2018, 08h59
  2. Réponses: 6
    Dernier message: 05/09/2018, 10h39
  3. Réponses: 2
    Dernier message: 11/02/2015, 09h39
  4. Réponses: 14
    Dernier message: 16/08/2014, 19h05
  5. Réponses: 4
    Dernier message: 27/03/2002, 11h03

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