XL 2021 Colorier un partie d'un txt

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 !

hermann

XLDnaute Occasionnel
Supporter XLD
Bonjour Mesdames et Messieurs

Svp, je voudrai obtenir le résultat du lien en gras et en couleur rouge

='Ibk-h-1932'!J31&" (ID """&'Ibk-h-1932'!B31&""")"

Merci pour votre aide
Arnold
 
Bonjour Mr.
&'Ibk-h-1932'!B31&
Je voudrais l'affichage du résultât en rouge
Franz-Fischer-Gasse-14 + ID "Haa-28-Not"

- la suite de la liste:
Probstenhofweg-4 + ID "Haa-29-Olg"
Höttinger-Au-36 + ID "Haa-30-Pau"
Innstraße-107 + ID "Haa-31-Pau"
St.-Nikolausgasse-7 + ID "Haa-32-Rai"
....
Merci
Arnold
 
Bonjour Mr.
&'Ibk-h-1932'!B31&
Je voudrais l'affichage du résultât en rouge
Franz-Fischer-Gasse-14 + ID "Haa-28-Not"

- la suite de la liste:
Probstenhofweg-4 + ID "Haa-29-Olg"
Höttinger-Au-36 + ID "Haa-30-Pau"
Innstraße-107 + ID "Haa-31-Pau"
St.-Nikolausgasse-7 + ID "Haa-32-Rai"
....
Merci
Arnold
Bonjour,
À ma connaissance, Excel ne "sait" pas colorier une partie de formule.
Ce sujet a déjà été traité à plusieurs reprises sur ce forum.
Cordialement,
 
Bonjour le fil,
@hermann, comme il a été dit, impossible de colorier une partir du texte d'une cellule de type formule.
Cependant, on peut monter une petite "usine à gaz" en vba :
supposons que la formule pour A10 soit celle-ci "="XXX" & B10 & "YYY " & DROITE(C10;5)
- vider la cellule concernée
- sur l'événement Worksheet_Change
Tester si le Change concerne B10 ou C10
Si oui -> Apple d'une macro qui
valorise A10 : Range("A10") ="XXX" & Range("B10") & YYY " & Right(Range("C10"),5)
qui colorise la partie que vous souhaitez (facile à faire, je ne décris pas ici)
 
Bonjour,

j'avais fais une autre approche à la demande initiale si j'ai bien compris, à adapter sans doute

Code:
Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Dim cell As Range
    Dim formulaText As String
    Dim startPos As Long
    Dim endPos As Long
    Dim occurenceCount As Integer
    Dim charStart As Long
    Dim charEnd As Long

    ' Définir la feuille active
    Set ws = ActiveSheet

    ' Parcourir les cellules sélectionnées
    For Each cell In Selection
        If Not IsEmpty(cell.Value) Then
            ' Récupérer le contenu de la cellule
            formulaText = cell.Formula
            occurenceCount = 0
            
            ' Réinitialiser pour la recherche entre guillemets simples (' ')
            occurenceCount = 0
            startPos = InStr(1, formulaText, "'")
            Do While startPos > 0
                endPos = InStr(startPos + 1, formulaText, "'")
                If endPos > 0 Then
                    occurenceCount = occurenceCount + 1
                    ' Si c'est la deuxième occurrence, colorier
                    If occurenceCount = 2 Then
                        charStart = startPos
                        charEnd = endPos - startPos + 1
                        cell.Characters(charStart, charEnd).Font.Color = RGB(255, 0, 0) ' Rouge
                        Exit Do ' Quitter la boucle une fois la deuxième occurrence trouvée
                    End If
                End If
                startPos = InStr(endPos + 1, formulaText, "'")
            Loop
        End If
    Next cell
End Sub

Nicolas
 

Pièces jointes

j'ai fait un test avec le fichier de @Nicolas JACQUIN :
dans la formule, 'Ibk-h-1932'!J31 représente la cellule J31 de la feuille Ibk-h-1932
Si, (c'est ce que j'ai fait), on créé la feuille, la formule en B3 est alors une vraie formule et rien n'est colorié en rouge après exécution de la macro.
Je ne m'explique d'ailleurs pas pourquoi Excel ne signale pas une erreur quand la feuille n'existe pas.
Mais peut-être que je n'ai pas compris la demande.
[EDIT] je viens de comprendre :
la 1ère apostrophe après le signe = indique que ce qui suit doit être interprété comme du texte.
Même si, Excel indique que la cellule a un format de Cellule = Standard 😡
Pour que la cellule soit à nouveau avec une formule, en 2 temps :
- supprimer le signe = et la 1ère apostrophe et sélectionner une autre cellule
- Revenez sur la cellule et remettez le signe = et la 1ère apostrophe
Si la feuille Ibk-h-1932 existe on aura le résultat de la formule sinon une erreur #REF!
 
Dernière édition:
Bonjour,

j'avais fais une autre approche à la demande initiale si j'ai bien compris, à adapter sans doute

Code:
Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Dim cell As Range
    Dim formulaText As String
    Dim startPos As Long
    Dim endPos As Long
    Dim occurenceCount As Integer
    Dim charStart As Long
    Dim charEnd As Long

    ' Définir la feuille active
    Set ws = ActiveSheet

    ' Parcourir les cellules sélectionnées
    For Each cell In Selection
        If Not IsEmpty(cell.Value) Then
            ' Récupérer le contenu de la cellule
            formulaText = cell.Formula
            occurenceCount = 0
          
            ' Réinitialiser pour la recherche entre guillemets simples (' ')
            occurenceCount = 0
            startPos = InStr(1, formulaText, "'")
            Do While startPos > 0
                endPos = InStr(startPos + 1, formulaText, "'")
                If endPos > 0 Then
                    occurenceCount = occurenceCount + 1
                    ' Si c'est la deuxième occurrence, colorier
                    If occurenceCount = 2 Then
                        charStart = startPos
                        charEnd = endPos - startPos + 1
                        cell.Characters(charStart, charEnd).Font.Color = RGB(255, 0, 0) ' Rouge
                        Exit Do ' Quitter la boucle une fois la deuxième occurrence trouvée
                    End If
                End If
                startPos = InStr(endPos + 1, formulaText, "'")
            Loop
        End If
    Next cell
End Sub

Nicolas
Bonsoir Monsieur
Merci, Je commis un erreur: La réponse a mettre en Rouge
j'ai fait un test avec le fichier de @Nicolas JACQUIN :
dans la formule, 'Ibk-h-1932'!J31 représente la cellule J31 de la feuille Ibk-h-1932
Si, (c'est ce que j'ai fait), on créé la feuille, la formule en B3 est alors une vraie formule et rien n'est colorié en rouge après exécution de la macro.
Je ne m'explique d'ailleurs pas pourquoi Excel ne signale pas une erreur quand la feuille n'existe pas.
Mais peut-être que je n'ai pas compris la demande.
j'ai fait un test avec le fichier de @Nicolas JACQUIN :
dans la formule, 'Ibk-h-1932'!J31 représente la cellule J31 de la feuille Ibk-h-1932
Si, (c'est ce que j'ai fait), on créé la feuille, la formule en B3 est alors une vraie formule et rien n'est colorié en rouge après exécution de la macro.
Je ne m'explique d'ailleurs pas pourquoi Excel ne signale pas une erreur quand la feuille n'existe pas.
Mais peut-être que je n'ai pas compris la demande.
Merci Monsieur [Cro]

Par le temps les erreurs vont disparaître
Arnold
Re-bonjour,
Voici un exemple de ce qu'on peut faire en VBA.
Cordialement,
Merci, J'ai tester .....
Arnold
 

Pièces jointes

- 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

Discussions similaires

Réponses
26
Affichages
1 K
Retour