Mon approche serait la suivante: Tout d'abord écrire un sous qui met une bordure rouge autour de l'extérieur de toute portée. Il devrait ressembler à quelque chose comme ceci:
Sub ApplyBorder(inputRg as Range)
Call inputRg.BorderAround(Weight:=xlMedium, Color:=vbRed)
End Sub
Maintenant, nous pouvons parcourir notre gamme. Si nous trouvons un chèque, incluez-le dans la plage pour avoir une bordure. Si nous trouvons un x, alors appliquez la bordure rouge autour de la gamme que nous avons, et réinitialisez-la à rien.
Sub FormatTable()
Dim AllTable As Range, oneRedRg As Range, oneRow As Range
Dim iRow As Integer
Set AllTable = GetTable
For iRow = 1 To AllTable.Rows.Count
Set oneRow = AllTable.Rows(iRow)
If oneRow.Cells(1, 3) = True Then
If oneRedRg Is Nothing Then 'if our current redRg is unset,
Set oneRedRg = oneRow 'then this is the first one, so set it
Else
Set oneRedRg = Range(oneRedRg, oneRow) 'if it is already set, then expand oneRedRg to include this one
End If
Else
if Not oneRedRg Is Nothing Then Call ApplyBorder(oneRedRg) 'if we find a range that need not be red, then
Set oneRedRg = Nothing 'apply the border to our redRg and reset it to nothing
End If
Next iRow
If Not oneRedRg Is Nothing Then Call ApplyBorder(oneRedRg) 'this last line captures a group of reds
'that are at the end of the table.
End Sub
J'ai exclu la fonction "GetTable". Dans ma réponse, GetTable renvoie la table entière à parcourir, sans les en-têtes. Notez également que j'ai changé les contrôles et x pour être les valeurs "Vrai" ou "Faux" dans la feuille de calcul pour plus de facilité.
Bonne codification!
comment cochez-vous? Pas besoin de VBA, utilisez la mise en forme conditionnelle. C'est pour ça que c'est fait. – Brad
Vous ne serez pas en mesure d'obtenir des frontières autour de chaque série contiguë de coches avec formatage conditionnel, mais je vous recommande de voir si vous pouvez ajuster vos besoins, car ce serait une douleur dans VBA et simple (pour réaliser quelque chose de similaire à ceci) avec le formatage conditionnel. – Tmdean
Qu'avez-vous essayé? Avez-vous essayé d'enregistrer vos pas et de regarder le vba généré? Vous devrez juste parcourir une plage et vérifier la valeur de la rangée précédente et suivante. – sasfrog