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:)