Mettre une condition si caractère gras

  • Initiateur de la discussion Charles
  • Date de début
C

Charles

Guest
Bonjour

J'ai besoin d'aide concernant une formule de calcul contenant une condition (if). Est-ce possible d'établir une condition avec un format de caractère? Je m'explique, je voudrais obtenir un 'y' en face de toute cellule contenant un caractère gras.

Merci pour votre aide.

Cordialement,
Charles
 

Gael

XLDnaute Barbatruc
Bonjour Charles,

Une méthode a été développée dans ce forum par Jean-marie, Celeda et d'autres sous le tite 'Astuces récentes'.

Pour l'appliquer à ton problème:


* Mets un texte quelconque dans une cellule (ex:I9)
* Positionne-toi sur la cellule située à sa droite
* Fais Insertion / nom / définir puis tapes 'Gras' dans le champ Nom dans le classeur
* Dans le champ Fait référence à tu tapes:
=SI(LIRE.CELLULE(20;!I9);'y';0)
* Valide

En tapant '=Gras' dans n'importe quelle cellule du tableau, 'y' s'affichera si tout ou partie du texte de la cellule située à sa gauche en en gras.

@+

Gael
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Charles, bonjour Gaël, bonjour le forum,

Comme je suis nul en formules je te propose aussi cette solution VBA. La macro ci-dessous analyse toutes les cellules éditées de la colonne A. Si la cellule contient au moins un seul caractère gras, y s'incrit dans la cellule d'à coté (colonne B) :


Sub Macro1()
Dim cel As Range 'déclare la variable cel
Dim x As Integer 'déclare la variable x
'boucle sur toutes les cellules éditées de la plage A1:A_fin (À adapter)
For Each cel In Range('A1:A' & Range('A65536').End(xlUp).Row)
For x = 1 To Len(cel.Value) 'boucle sur chaque caractère de la cellule
If cel.Characters(x, 1).Font.Bold = True Then 'si le caractère est gras
cel.Offset(0, 1).Value = 'y' 'place 'y' dans la cellule à droite
Exit For 'sort de la boucle des caractères
End If 'fin de la condition
Next x 'prochain caractère de la boucle
Next cel 'prochaine cellule de la boucle
End Sub
 

Gael

XLDnaute Barbatruc
Rebonjour Charles,

Je te propose une autre solution avec une fonction initialement développée par Jean-Marie que j'ai modifiée pour ton problème:

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.

La solution précédente est bien mais ne se recalcule pas automatiquement si la cellule est modifiée. Il faut que le pemier caractère soit en gras pour que ça marche.

@+

Gael
 
C

Charles

Guest
Robert

C'est bon j'ai trouvé où écrire la macro. Et ça a marché dans mon tableau. Merci, je suis impressionné.

Par contre, quand tu repasses un caractère en normal (en non gras donc), le 'y' reste dans la colonne de droite.

Merci encore...

Charles
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal