0
votes

Insérer un emplacement de cellule dans le formatage conditionnel

Donc, j'ai un code comme celui-ci:

.Value = Range("selected").Cells(r,i).Offset(,-1).Address 


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes

Veuillez essayer de définir dans chaque segment, la valeur comme référence à la cellule comme ceci: xxx

Vous devez remplacer la chaîne avec des variables à quelque chose comme ceci: xxx


Veuillez marquer cette réponse si cela vous a aidé.


1 commentaires

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)



0
votes

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 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.

Je me demande aussi Si un 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>

Au total, le code ci-dessous pourrait servir votre fins. BTW, je vous recommanderais d'ajouter 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


0 commentaires