Mettre une condition si caractère gras

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
333
Réponses
5
Affichages
616
Retour