Donc, j'ai un code comme celui-ci:
.Value = Range("selected").Cells(r,i).Offset(,-1).Address
3 Réponses :
Ce code fait ce que vous voulez.
Sub ApplyIconSets()
Dim LastRow As Long, LastColumn As Long
Dim Rng As Range
Dim iSet As IconSetCondition
Dim i As Integer, R As Integer
Set Rng = Application.InputBox("Select a Range", "Obtained Range Object", Type:=8)
Rng.Name = "selected"
LastRow = Range("selected").Rows.Count
LastColumn = Range("selected").Columns.Count
With Range("selected")
For i = 1 To LastColumn
For R = 1 To LastRow
Set iSet = .Cells(R, i).FormatConditions.AddIconSetCondition
With iSet
.IconSet = ActiveWorkbook.IconSets(xl3Arrows)
.ReverseOrder = False
.ShowIconOnly = False
End With
With iSet.IconCriteria(2)
.Type = xlConditionValueFormula
.Operator = xlGreaterEqual
.Value = "=" & Range("selected").Cells(R, i).Offset(, -1).Address
End With
With iSet.IconCriteria(3)
.Type = xlConditionValueFormula
.Operator = xlGreaterEqual
.Value = "=" & Range("selected").Cells(R, i).Offset(, -1).Address
End With
Next R
Next i
End With
End Sub
Veuillez essayer de définir dans chaque segment, la valeur comme référence à la cellule comme ceci: Vous devez remplacer la chaîne avec des variables à quelque chose comme ceci: p> Veuillez marquer cette réponse si cela vous a aidé. P> p>
Je ne peux pas utiliser une référence absolue car chaque cellule aura des valeurs différentes. J'ai essayé d'ajouter "= feuille1!" Mais il retourne avec une erreur d'objet (la feuille notée1 est en réalité mon nom de feuille aussi)
Je ne suis pas sûr que vous ayez votre format conditionnel à droite. Votre code tel qu'il est debout ne montrera jamais une flèche ambre car Je me demande aussi Si un Au total, le code ci-dessous pourrait servir votre fins. BTW, je vous recommanderais d'ajouter iconcriteria (3) code> évaluera en premier. Étant donné que iconcriteria (2) code> a des valeurs de propriété identiques, elle ne sera jamais remplie. Si vous vouliez que la flèche verte affiche pour les chiffres supérieurs à la valeur de la cellule testée et à la flèche Amber pour afficher pour les chiffres égaux à la valeur, vous devez donc écrire le code comme indiqué ci-dessous. foreach code> boucle peut être plus simple, d'autant plus que possible la plage de cellules elle-même pour que vous puissiez simplement dériver votre cahier de travail et votre feuille de travail. Cela éviterait des problèmes potentiels de vos gammes non qualifiées. Vous devez simplement ajouter un si code> instruction pour vous assurer que vous n'avez pas essayé de compenser la colonne passée 1. P> Option explicite code> en haut de votre module et de manipuler le cas où l'utilisateur frappe l'annulation dans la zone d'entrée: P> Option Explicit
Sub ApplyIconSets()
Dim sel As Range, cell As Range
' Acquire the target range and handle a cancelled input box.
On Error GoTo Canx
Set sel = Application.InputBox("Select a Range", "Obtained Range Object", Type:=8)
' Iterate cell by cell to add the condition.
On Error GoTo EH
For Each cell In sel.Cells
'Ignore the cell if it is in column 1.
If cell.Column > 1 Then
With cell.FormatConditions
'Delete existing conditions.
.Delete
'Add a new condition.
With .AddIconSetCondition
.IconSet = cell.Worksheet.Parent.IconSets(xl3Arrows)
'Set the amber criterion.
'Note: we have to use '>=' but anything '>' will be caught
'in the green operator, so only '=' will meet this criterion.
With .IconCriteria(2)
.Type = xlConditionValueFormula
.Operator = xlGreaterEqual
.Value = "=" & cell.Worksheet.Name & "!" & cell.Offset(, -1).Address
End With
'Set the green criterion.
'Note: we have to use just '>' because this is evaluated first
'and '>=' would result in amber never capturing a value.
With .IconCriteria(3)
.Type = xlConditionValueFormula
.Operator = xlGreater
.Value = "=" & cell.Worksheet.Name & "!" & cell.Offset(, -1).Address
End With
End With
End With
End If
Next
Exit Sub
Canx:
Debug.Print "User cancelled."
Exit Sub
EH:
Debug.Print Err.Number; Err.Description
End Sub