Rechercher un minimum entre plusieurs cellules spécifiques

Mathilde -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un tableau de 500 lignes de quotation x 8 fournisseurs (en colonnes), j'aimerais trouver une formule qui m'identifie rapidement ligne par ligne quel est le minimum par type de tarif car chaque fournisseur a chiffré différemment selon la logistique.
Donc la réf A - un site de livraison - 8 prix par fournisseur

L'idée est de créer une boucle VBA qui cherche le min pour la ligne A1 parmi les prix DDP des fournisseurs (AB1; AX1; BZ1;...) pas la plage de cellule car elle comprend différents prix qui ne sont pas comparables. A cela s'ajoute la condition que certains fournisseurs n'ont pas tout coté donc certains prix sont à 0, je veux min différent de 0.
Une fois le prix minimum sorti, avec une fonction recherche identifier le nom du fournisseur

Est ce quelqu'un aurait déjà réalisé un bout de code VBA dans ce sens?

D'avance merci!

Mathilde

4 réponses

  1. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    Je te souhaite beaucoup de chance : tu en auras besoin !

    Nous devrions nous débrouiller avec ces contraintes
    " car chaque fournisseur a chiffré différemment selon la logistique "
    " car elle comprend différents prix qui ne sont pas comparables "
    " certains fournisseurs n'ont pas tout coté "
    ... et tout ça sans même voir le fichier ?
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour

    <code>Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
    et faire un" clic droit-coller le raccourci" dans votre message
    Dans l’attente

    0
    1. Mathilde_boud Messages postés 5 Statut Membre
       
      Bonjour merci pour votre réponse,

      https://www.transfernow.net/files/?utm_source=413sd1s44u4d&utm_medium=&utm_content=en -- mon partage n'est pas accessible

      Et voila,un peu d'explication vu que les valeurs ont été enlevé, la seule valeur unique est la colonne A pour chaque ligne, en suite de BE a EU ont a les offres fournisseurs (je conviens que la présence des cellules fusionnes n'est pas pratique).L'idée est de comparer les prix similiraires : BI, BU, CG etc,

      donc j'avais pensé a une recherche V avec une MIN imbriqué qui prend en compte uniquement les valeurs supérieurs à 0.. mais je me suis dit qu'un code VBA serait peut etre plus fiable ...

      Merci pour votre aide,
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Mathilde_boud Messages postés 5 Statut Membre
         
        télétchargement sur transfertnow refusé par la sécurité Microsoft

        essaie avec cjoint
        0
    2. Mathilde_boud Messages postés 5 Statut Membre
       
      http://www.cjoint.com/c/FJzjCRmGvpQ
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    merci

    1/C'est bien QUE les colonnes BI,BU,CG.... qui sont à comparer ?

    2/Tu veux la valeur mini ou le nom du fournisseur du prix mini ?

    3/ Toujours 8 fournisseurs ou nombre variable ?

    0
    1. Mathilde_boud Messages postés 5 Statut Membre
       
      En fait c'est les colonnes prix qui ont les mêmes noms donc les prix FCA et les prix DDP
      L'idée est d'avoir la valeur min et le nom du fournisseur associé (mais comme j'ai mis le nom des fournisseurs en cellule fusionnée je suis pas sure que soit facilement fesable)
      Toujours 8 fournisseurs sauf que certains non pas tout coté donc il y a parfois des valeurs vides ou égal à 0
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Mathilde_boud Messages postés 5 Statut Membre
         
        dans les prix DDP il y a 4 intitulé par fournisseur !!!

        sans précisions SERIEUSES de ta part, je laisse tomber
        0
      2. Mathilde_boud Messages postés 5 Statut Membre > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        L'idée de comparer chaque colonne similaire..
        En priorité c'est la comparaison entre les prix : 2016 National Price DDP for 1 to 10 complete pallet Currency/unit
        0
    2. Mathilde_boud Messages postés 5 Statut Membre
       
      Merci beaucoup pour votre aide
      0
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    En fonction de ce que j'ai compris avec ton classeur vide (quelques montants auraient été bienvenus !) et avec tes explications, je te propose cette fonction personnalisée :
    ' cette fonction recherche le minimum non nul d'un type de tarif choisi
    ' tpe = cellule indiquant le libellé du tarif concerné de la ligne
    Public Function prix_mini(tpe As Range) ' BI$2 par exemple
    Dim cel As Range, col As Long, lig As Long, mni As Currency, nom As String
        Application.Volatile
        lig = Application.Caller.Row: mni = 0
        For Each cel In ActiveSheet.UsedRange.Rows(tpe.Row).Cells
            If cel = tpe Then
                If Cells(lig, cel.Column).Value <> 0 _
                    And (Cells(lig, cel.Column).Value < mni Or mni = 0) Then
                        mni = Cells(lig, cel.Column).Value: col = cel.Column
                        While Cells(1, col).Value = ""
                            col = col - 1: nom = Cells(1, col).Value
                        Wend
                End If
            End If
        Next cel
        prix_mini = IIf(mni, nom & " | " & mni, "Absent")
    End Function
    

    Tu la positionnes en bout de ligne (ou ailleurs si tu veux) avec
    =prix_mini(BI$2)
    par exemple et elle te fournit le nom et le prix minimum de la ligne pour ce type de prix ("FCA" en l'occurrence). Si tu veux un autre type de tarif il te suffit de mettre BL$2 ou autre, sur une autre colonne éventuellement.
    La fonction est à coller dans un module de ton classeur ou éventuellement dans le module de ton classeur PERSO.
    0