Récupérer les indices de ligne de cellules en gras dans une liste

Bonjour à tous,

Pour faire simple, je cherche à stocker dans une liste (que j'utiliserai ensuite) les indices des lignes où une cellule en gras.

Dans le fichier exemple joint, je m'intéresse uniquement à la colonne B, et souhaite donc obtenir une liste [5;10;18].

13classeur1.xlsm (18.55 Ko)

Voici ce que j'ai écrit, avec à la fin un affichage pour voir si le script marche, mais rien... Il doit manquer quelque chose dans mon code !

' Fonction pour détecter chaque indice de ligne en gras

Function EstEnGras(ByVal quelCell As Range) As Boolean
    EstEnGras = quelCell.Font.Bold = True
End Function

' Test pour stocker les indices des lignes avec colonne B en gras

Sub RemplissageLigne()
    Dim ListeIndice As Object
    Dim Rng As Range
    Dim c As Range
    Set Rng = Range("B:B")
    Set ListeIndice = CreateObject("System.Collections.ArrayList")
    For Each c In Rng

        If EstEnGras(c) Then
            a = c.Row
            ListeIndice.Add "a"
        End If
    Next c

' Affichage pour vérification

    Dim element As Variant
    For Each element In ListeIndice
        Debug.Print element
    Next element
End Sub

Merci de votre aide !

Bonjour,

Tout d'abord, au lieu de tester toute la colonne B, tu peux limiter ainsi :

    Set Rng = Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)

Et ensuite, enlève les guillemets à "a" :

ListeIndice.Add a

Bon courage

Bonjour cousinhub,

Merci pour ta réponse. Effectivement je vais gagner du temps d'exécution avec ton astuce. J'ai bien enlevé les guillemets suite à ton conseil, et toujours pas d'affichage suite à l'exécution. J'ai beau chercher je ne trouve pas d'où ça vient :(

Re-,

Pour voir le résultat, remplace "Debug.Print" par :

MsgBox element

par exemple

Merci cousinhub !

Je ne saurais pas expliquer pourquoi, mais ça marche ;)

Je te souhaite un bon weekend !

bonjour, Je suppose que le fontstyle pour BOLD est gras en francais (?)

Sub Bold()

     Application.FindFormat.Clear
     'recherche toutes les cellules "BOLD" ******************************
     Application.FindFormat.Font.FontStyle = "Vet"   '>>>> GRAS en francais au lieu de "Vet"  !!!
     Set c = Range("B1:B24")

     Set c1 = c.Find(What:="", SearchFormat:=True)
     If Not c1 Is Nothing Then
          Set fa = c1
          Do
               s = s & "," & c1.Row
               Set c1 = c.Find(What:="", SearchFormat:=True, After:=c1)
          Loop While c1.Address <> fa.Address
     End If
     MsgBox Mid(s, 2)
End Sub

Bonjour à tous

Un essai à tester.

10classeur1-v1.xlsm (20.18 Ko)

Bye !

Rechercher des sujets similaires à "recuperer indices ligne gras liste"