Recherche cellule avec caractère en gras avec row.count

Bonjour à tous,

mes connaissances en vba n'étant pas bonne, je me permets de contacter ceux qui en ont.

j'ai dans mon tableau (colonne "F") une cellule en caractère gras.Cet emplacement de la cellule est variable dans la colonne.

je cherche à trouver cette cellule, ensuite faire la somme , depuis ma cellule de base et la cellule en dessous de la cellule en gras.

avec le fichier joint ce sera plus facile à comprendre

merci d'avance à tous

Hello.

Le fichier manque mais si j'ai bien compris l'exercice, voici un code qui devrait fonctionner.

Sub Rech_Cell_En_Gras()

Dim r_Cell As Range

    For Each r_Cell In Range("F:F")
        r_Cell.Select
        If r_Cell.Font.Bold = True Then
            'remplacer le MsgBox par la cellule que tu veux renseigner. ex: range("A1") = r_Cell + r_Cell.Offset(1, 0)
            MsgBox (r_Cell + r_Cell.Offset(1, 0))
            Exit For
        End If
    Next r_Cell

End Sub

cela dit, attention à ce genre de code car si tu n'as aucune cellule en gras, il va boucler sur chacune des milliers de cellules de la colonne F.

mais avec si peu d'info, c'est le plus simple, il me semble.

Bonjour Salmanasard,

6fichier-test.xlsm (21.17 Ko)

merci pour ta réponse.

j'avais pas vu que le fichier n'était pas inclus. le voici.

merci encore

Si je peux me permettre 1 ou 2 petits trucs :

il faut éviter les fusions de cellules. Ca crée des problèmes quand on travaille en VBA

Si tu as une plage plus définie, tu peux rechercher dans Range("F6:F26") au lieu de Range("F:F")

à toi d'adapter.

Et si ton souci est résolu, pense à le notifier en haut, à droite du message qui t'a été utile :)

image

Re,

merci pour tes astuces et de ton temps.

j'ai juste fusionné les cellules pour mettre du texte mais en réalité , elles ne le sont pas.

je ne peux pas définir une plage précise, puisque c'est cette fameuse plage que je recherche. en partant de l'activecell et celle en dessous de la cellule en gras.

la valeur de la cellule en gras ne doit pas être additionnée à mon total.

je cherche un code du style :

somme (activecell + celluleengras.offse(0,1)

merci

alors fais comme ça :

Sub Rech_Cell_En_Gras()
Dim r_Cell As Range
Dim ma_Valeur As Single

    For Each r_Cell In Range("F:F")
        If r_Cell.Font.Bold = True Then
            ma_Valeur = ActiveCell + r_Cell.Offset(1, 0)
            'et ici tu définie où tu veux placer ton résultat (chargé dans la variable ma_Valeur)
            Exit For
        End If
    Next r_Cell

End Sub

Bonjour,

désolé du retard de la réponse. je vais tester et vous redis.

Bonne journée

Bonjour,

j'ai réussi a compiler un code pour trouver la dernière cellule en gras dans colonne F, de faire une plage qui s'additionne.

sauf que je n'arrive pas inscrire le résultat dans ma activecell que j'ai sélectionné avec de cliquer sur mon bouton .

10fichier-test2.xlsm (21.63 Ko)

avec le fichier joint ce sera plus facile de comprendre

merci d'avance de votre aide

Bonsoir,

une proposition :

Sub ss()
    Dim DerLig As Integer, i As Long
    ' recherche de la dernière cellule non vide de la colonne F
    DerLig = Range("F" & Rows.Count).End(xlUp).Row
    ' en partant du bas vers le haut
    For i = DerLig To 1 Step -1
        ' si on tombe sur la cellule avec "le gras"
        If Range("F" & i).Font.Bold = True Then
            ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - i - 1 & "]C:R[-1]C)"
            Exit For
        End If
    Next i
End Sub

@ bientôt

LouReeD

bonjour le fil,

une autre proposition

Sub Gras()
     Dim c     As Range

     With Application.FindFormat
          .Clear                             'RAZ
          .Font.Bold = True                  'on cherche le format "gras"
     End With

     Set c = Columns("F").Find("*", searchdirection:=xlPrevious, searchFormat:=True)
     Application.FindFormat.Clear            'attention, n'oubliez pas de RAZ ce findformat !!!

     If Not c Is Nothing Then
          Set c1 = Range(Range("F5"), c)
          MsgBox "la cellule gras est " & c.Address & vbLf & "la somme de " & c1.Address & " est " & Application.WorksheetFunction.Sum(c1)
     End If

End Sub

Bonsoir,

j'ai testé la formule de LouReeD et elle me convient.

j'ai juste besoin d'un complément de code pour que la cellule qui affiche le résultat soit en gras à la fin de la boucle.

ActiveCell.FormulaR1C1.font.bold=true comme cela quand je ferai ma prochaine boucle, elle ira jusqu'à cette cellule en gras.

à quel endroit dois-je placer ce code ou un autre code?

Sub ss() Dim DerLig As Integer, i As Long ' recherche de la dernière cellule non vide de la colonne F

DerLig = Range("F" & Rows.Count).End(xlUp).Row ' en partant du bas vers le haut

For i = DerLig To 1 Step -1 ' si on tombe sur la cellule avec "le gras"

If Range("F" & i).Font.Bold = True Then

ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - i - 1 & "]C:R[-1]C)"

Exit For

End If

Next i

End Sub

Edit modo : code à mettre entre balises avec le bouton </> merci d'y faire attention la prochaine fois

merci beaucoup LouReed pour votre aide.

atoch

Pardon,

merci à tous ceux qui ont pris la peine de m'aider

atoch

Bonsoir,

merci pour votre retour et vos remerciements !

Voyez ce code :

Sub ss()
    Dim DerLig As Integer, i As Long
    ' recherche de la dernière cellule non vide de la colonne F
    DerLig = Range("F" & Rows.Count).End(xlUp).Row
    ' en partant du bas vers le haut
    For i = DerLig To 1 Step -1
        ' si on tombe sur la cellule avec "le gras"
        If Range("F" & i).Font.Bold = True Then
            ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - i - 1 & "]C:R[-1]C)"
            ActiveCell.Font.Bold = True
            Exit For
        End If
    Next i
End Sub

@ bientôt

LouReeD

Sub ss()
    Dim DerLig As Integer, i As Long
    ' recherche de la dernière cellule non vide de la colonne F
    DerLig = Range("F" & Rows.Count).End(xlUp).Row
    ' en partant du bas vers le haut
    For i = DerLig To 1 Step -1
        ' si on tombe sur la cellule avec "le gras"
        If Range("F" & i).Font.Bold = True Then
            ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - i - 1 & "]C:R[-1]C)"
            ActiveCell.Font.Bold = True
            Exit For
        End If
    Next i
End Sub

Bonjour,

comment peut on copier une valeur de cellule (source) et que cette valeur cellule (cible) change en cas de changement de la valeur source?

Dans le cas ici la valeur source, que je cherche à copier est :

ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - i - 1 & "]C:R[-1]C)"

j'aimerais copier cette valeur et la reporté dans une autre cellule (cible) tout en restant interactive.

merci d'avance de votre grand coup de pouce

Atoch

Bonsoir,

en utilisant par exemple l'instruction INDIRECT à condition que la cellule source ne change pas d'adresse :

Sub ss()
    Dim DerLig As Integer, I As Long, Adr As String
    ' recherche de la dernière cellule non vide de la colonne F
    DerLig = Range("F" & Rows.Count).End(xlUp).Row
    ' en partant du bas vers le haut
    For I = DerLig To 1 Step -1
        ' si on tombe sur la cellule avec "le gras"
        If Range("F" & I).Font.Bold = True Then
            ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row - I - 1 & "]C:R[-1]C)"
            ActiveCell.Font.Bold = True
            Adr = ActiveCell.Address
            ' si M2 est la cellule cible où l'on doit reporter la résultat de la cellule nouvellement affectée d'une formule
            Range("M2").Formula2R1C1 = "=INDIRECT(""" & Adr & """)"
            Exit For
        End If
    Next I
End Sub

@ bientôt

LouReeD

je n'aurais jamais trouvé la solution tout seul

ça fonctionne nickel

un grand merci LouReeD pour votre temps passé à m'aider.

Atoch

Bonsoir,

merci pour votre retour et remerciement !

@ bientôt

LouReeD

Merci LouReed pour ce remerciement

@ bientôt

Merci @ vous BrunoM45

@ bientôt

LouReeD

Rechercher des sujets similaires à "recherche caractere gras row count"