VBA : Nombre de colonnes entre la première et la dernière cellule colorée d'une ligne

Anonyme
2022-10-02T13:53:08+00:00

Bonjour à tous,

Je suis toujours dans une application très "graphique" ou je dois travailler avec les couleurs... Mon problème du jour est le suivant : je dois compter sur la ligne de la cellule active, le nombre de colonnes entre la première et la dernière cellule colorée (>< de blanche) dans une plage fixe comprise entre les colonnes 8 et 65. Pour ça, je pense "simplement" faire la différence entre les n° de colonnes de début et de fin... Sachant qu'il peut y avoir des cellules blanches entres les cellules colorées de la ligne active... (Daniel m'a proposé récemment une solution sur le même thème mais que je ne parviens pas à adapter à cause de ces cellules blanches au milieu...)

J'ai commencé la macro ci dessous, pour la première colonne ça va !  Merçi Daniel ! ;o)

Mais pour celle de fin.... je galère !

Quelqu'un aurait-il une suggestion ?

Merci

Domi

Sub deb_fin()

    Dim COL1, COL2, ecart As Long, c As Range

'Position de la première cellule colorée COL1 (non blanche)

    Set Target = ActiveCell

            For Each c In Range(Cells(Target.Row, 8), Cells(Target.Row, 65))

                If c.Interior.color <> RGB(255, 255, 255) Then

                    COL1 = c.Column

                    'MsgBox COL1

                    Exit Sub

                End If

            Next c

    MsgBox "pas de cellule !"

'Position de la dernière cellule colorée COL2 (non blanche)

'Nombre de cellules entre COL1 et COL2

        'ecart = COL2 - COL1

End Sub

Microsoft 365 et Office | Excel | Pour les entreprises | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

Anonyme
2022-10-02T14:26:05+00:00

Bonjour,

Essaie :

Sub test()
Dim C As Range, Col1 As Long, Col2 As Long
Set Target = ActiveCell
For Each C In Range(Cells(Target.Row, 8), Cells(Target.Row, 65))
If C.Interior.Color <> RGB(255, 255, 255) Then
If Col1 = 0 Then
Col1 = C.Column
Else
Col2 = C.Column
End If
End If
Next C
If Col1 <> 0 And Col2 <> 0 Then
MsgBox Col2 - Col1
Else
MsgBox "moins de deux cellules coloriées"
End If
End Sub

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

1 réponse supplémentaire

  1. Anonyme
    2022-10-02T14:49:22+00:00

    Encore et toujours merçi Daniel ;o)

    ça convient parfaitement. Je note ça dans mes tablettes !

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire