Valeur Minimale entre colonnes discontinues et variables

Bonjour à tous

Voila maintenant quelques heurs que je planche sur ce problème sans trouver de réponse. J'espère donc que quelqu'un d'entre vous pourra amener de l'eau à mon moulin (qui commence à bien fumer).

J'ai une listview qui reprend les éléments contenus dans un tablleau situé sur une feuille excel

les colonnes sont variables à partir de J.

les lignes sont variables à partir de la ligne 2 (la première étant les titres).

à partir de la colonne G, toute les 3 colonnes, on retrouve une colonne nommée "Prix unitaire"

Je voudrais comparer ces colonnes "Prix unitaire" (qui sont variables) entre elles par ligne (qui sont elles aussi variables) pour trouver le prix unitaire le plus bas.

J'essaye avec Union mais je n'y arrive pas (de plus je ne sais pas comment mettre une " entre parathese). Auriez-vous une idée?

Je met mon bout de code qui plante

cordialement

fouxien

    
'pour trouver la valeur le meiller prix
    For verticale = 2 To DernLigne
        Dim myrange As Range
    Set f = Sheets("SBATablo")

Dim etendu As String
etendu = "Range(" & "G" & verticale & ")"
Dim tet As Range
For Each tet In Sheets("SBATablo").Range("J1" & ":" & Chr(64 + lColumn) & "1") ''
If tet = PSRItem7.Caption Then ''c'est à dire titre=Prix unitaire
etendu = etendu & ", " & "Range(" & Chr(64 + tet.Column) & verticale & ")"
End If
Next tet
Set myrange = Union(etendu)

        MinVal = Application.WorksheetFunction.Min((myrange))
        For Each cel In myrange
            If CDbl(cel.Value) = CDbl(MinVal) Then
                ListView12.ListItems(cel.Row - 1).ListSubItems(cel.Column - 1).ForeColor = RGB(255, 0, 0)
                ListView12.ListItems(cel.Row - 1).ListSubItems(cel.Column - 1).Bold = True
            End If
        Next
    Next verticale

Bonjour

Pourquoi joindre un fichier :

Sur la charte du Forum

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Point 6 : • Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 300ko, n'hésitez pas à compresser vos fichiers).

Cordialement

Merci Amadéus, c'est vrai qu'avec un fichier c''est plus simple.

J'ai donc fait un fichier simplifié.

l'objectif est de trouver la valeur minimale entre colonne non contigu (step 3) en partant de la colonne A,

de colorier la cellule contenant la valeur minimale

et de passer à la ligne suivante.

Le problème, c'est que la cellule colorée reste la première colonne qui ne contient pas la valeur minimale.

Voici le code:

Sub test()
'---------------------------------------------------------------------------------------
' Procedure : test
' Purpose   : A pour but de trouver la valeur minimale par ligne toute les 3 colonnes,
' avec des colonnes et des lignes à nombre variable
'---------------------------------------------------------------------------------------

    Dim lColumn As Long
    Dim DernLigne As Long
    'Dim verticale As Byte
    Dim myrange As Range
    Dim ecart As Byte
    Dim n As String

    lColumn = Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
    DernLigne = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row

    For verticale = 2 To DernLigne
    n = "A" & verticale & ":" & "A" & verticale
        For ecart = 3 To lColumn Step 3
            n = n & "," & (Split(Columns(ecart).Address(ColumnAbsolute:=False), ":")(1)) & verticale & ":" & (Split(Columns(ecart).Address(ColumnAbsolute:=False), ":")(1)) & verticale
        Next ecart
        MsgBox "le range est " & n
        Set myrange = Sheets(1).Range(n)

        Minval = Application.WorksheetFunction.Min((myrange))
        For Each cel In myrange
            If CDbl(cel.Value) = CDbl(Minval) Then
                celMinVal = cel.Address
                MsgBox "l'adresse de la cellule min est " & cel.Address & " avec la valeur " & Minval
                Sheets(1).Range(celMinVal).Interior.ColorIndex = 5

            End If
        Set myrange = Nothing
        Next cel
    Next verticale

End Sub

et le fichier

Cordialement


Oups, je viens de changer une petite donnée et tout marche.

J'ai remplacé ça,

Minval = Application.WorksheetFunction.Min((myrange))

par ça

Minval = Application.WorksheetFunction.Min((Sheets(1).Range(n)))

et ça marche.

J'essaye d'adapter ça à mon fichier et si c'est bon, je met en résolu.

Houpi:)

Rechercher des sujets similaires à "valeur minimale entre colonnes discontinues variables"