=EstGras mettre cellule a 0

Résolu
bonjour à tous
A1:A62 quand j'ai des cellules en gras dans cette colonne (elle peuvent varier dans le temps)
je voudrais que dans la colonne BU1:BU62
que la cellule passe à 0 et y reste lors d'un changement qui peut se produire dans BU1:BU62
est ce possible
merci beaucoup

--
vous êtes super!
merci à tous

8 réponses

  1. bon j'ai trouvé pour l'offset
    merci
    0
    1. =SI(ESTGRAS(A16);"o")
      j'ai trouvé une réponse partielle qui fonctionne par contre je ne voudrais pas que ça mette faux aux autres cellules qui ne correspondent pas
      Est ce possible?

      0
      1. Bonjour,

        En indiquant la valeur que doit prendre votre cellule si la condition n'est pas remplie. Par-exemple, si vous voulez que votre cellule reste vide :
        =SI(ESTGRAS(A16);"o";"")
        0
    2. Re,

      Tu n'a pas répondu à ma question !

      Une macro ne peut s'exécuter que suite à un évènement. Soit il s'agit d'un évènement propre au classeur (comme activer une feuille, sélectionner une cellule, ..;) soit d'un évènement lié à un objet ajouté (un bouton, une image, ...)

      Écrire une procédure qui empêche de modifier une cellule de la plage BU1:BU62 quand la cellule correspondante de la colonne A est en gras, est relativement simple car il existe un évènement Worksheet_Change (i.e "feuille modifiée") qui se produit quand on modifie une ou plusieurs cellules d'une feuille.

      Par exemple avec ce code dans le module de la feuille :
      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim r As Range
      Dim c As Range
        Set r = Intersect(Target, Range("BU1:BU62"))
        If Not r Is Nothing Then
          For Each c In r.Cells
            If c.Offset(0, -72).Font.Bold Then c.Value = 0
          Next c
        End If
      End Sub
      


      Écrire une procédure qui met à zéro les cellules de la BU quand la cellule correspondante de la plage A1:A62 est en gras, c'est aussi assez simple. Par exemple, dans le module de feuille :
      Private Sub Jack2125()
      Dim r As Range
      Dim c As Range
        Set r = Range("A1:A62")
        For Each c In r.Cells
          If c.Font.Bold Then c.Offset(0, 72) = 0
        Next c
      End Sub


      Par contre, on ne peut pas écrire une procédure qui met à zéro les cellules de la BU quand la cellule correspondante de la plage A1:A62 passe en gras, car comme je t'ai dit précédemment, il n'y a aucun évènement qui détecte les modifications de format d'une cellule (comme le passage de normal à gras).

      Il faut donc choisir une autre façon de lancer la procédure ci-dessus (un bouton, un autre évènement, ...).
      1
      1. Si les deux procédure doivent cohabiter, la seconde devient :

        Sub Jack2125()
        Dim r As Range
        Dim c As Range
          Set r = Range("A1:A62")
          For Each c In r.Cells
            If c.Font.Bold Then
              Application.EnableEvents = False
              c.Offset(0, 72).Value = 0
              Application.EnableEvents = True
            End If
          Next c
        End Sub
        0
      2. bonsoir
        Sub jack()
        Dim r As Range
        Dim c As Range
        Set r = Range("A10:A28")
        For Each c In r.Cells
        If c.Font.Bold Then
        Application.EnableEvents = False
        c.Offset(0, 28).Value = 0
        Application.EnableEvents = True
        End If
        Next c
        End Sub
        je viens seulement de faire le test avec cette fonction
        mes cellules en gras dans A passent bien en AC à 0
        par contre ce n'est pas en AC mais en BS qu'elles doivent passer à 0
        j'ai beau essayer de changer, mais n'arrive pas à les mettre en BS!
        merci de ton aide
        amicalement
        jacques
        0
    3. Function CGR(SearchArea As Range) As Variant
      Dim Matrice() As String
      Dim cell As Range
      Application.Volatile True
      ReDim Matrice(SearchArea.Rows.Count - 1)

      J = 0
      For Each cell In SearchArea
      Matrice(J) = IIf(cell.Font.Bold = True, 'Y', '')
      J = J + 1
      Next cell
      CGR = Application.Transpose(Matrice)
      End Function

      Une fois cette fonction créée dans un module tu peux entrer dans une cellule quelconque: =CGR(B10) et Y s'affichera si tous les caractères de la cellule sont en gras.

      Il faut faire F9 pour recalculer.
      je trouve cette réponse sur internet Mais comme je sui nul en VBA je n'y comprend pas grand chose..
      peux tu m'aider?
      0
      1. je trouve également ceci
        pour savoir si le 2ème caractère de la cellule a1 est gras :
        MsgBox Range("a1").Characters(2, 1).Font.FontStyle
        peut on l'adapter?
        0
    4. Alors pourquoi poses-tu la question ?
      0
      1. pourtant il me semble que la fonction =ESTGRAS existe?
        0
        1. Bonjour

          « est-ce possible » rigoureusement : non, il n'y a aucun évènement qui détecte les modification de format d'une cellule.
          On peut utiliser d'autres évènements, certains seront plus ou moins chronophages.
          Il faut donc que tu précises quelles concessions tu est prêt à faire.
          0