=EstGras mettre cellule a 0
Résolu
jack2125
Messages postés
486
Date d'inscription
Statut
Membre
Dernière intervention
-
jack2125 Messages postés 486 Date d'inscription Statut Membre Dernière intervention -
jack2125 Messages postés 486 Date d'inscription Statut Membre Dernière intervention -
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
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
-
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, ...).
-
-
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
-
-
Exemple : https://mon-partage.fr/f/j4Y0a9VC/
-
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. -
pourtant il me semble que la fonction =ESTGRAS existe?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Alors pourquoi poses-tu la question ?
-
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?
-
=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?
-
bon j'ai trouvé pour l'offset
merci