Colorier les 5 caractères qui composent un format horaire

  • Initiateur de la discussion Initiateur de la discussion cibleo
  • 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 !

cibleo

XLDnaute Impliqué
Bonjour le forum,

Comme vous le voyez, dans la feuille planning de mon fichier joint, figurent des horaires que j'aimerais faire ressortir par une MFC (Rouge ou en gras par exemple).

Problème : ces horaires n'ont pas de position fixe dans mes différentes cellules.

Sans VBA, j'avais essayé une MFC comme ceci =STXT(C11;1;5) pour les 5 premiers caractères, mais cela ne fonctionne pas.

En passant par le VBA, j'ai trouvé le fichier de Michel ci-dessous qui répond en partie à ma question.

https://www.excel-downloads.com/threads/mise-en-forme-dun-texte.13668/

Sinon, d'après mes recherches, je crois que la fonction SPLIT pourrait parvenir à résoudre mon problème.

Dois-je utiliser la fonction split et le séparateur : comme utilisé par vbacrumble ci-dessous.

https://www.excel-downloads.com/threads/extraction-dune-partie-de-chaine.115296/

Merci de votre aide parce que je patauge complètement.

Cibleo
 

Pièces jointes

Re : Colorier les 5 caractères qui composent un format horaire

Bonjour vbacrumble,

Et merci pour ta réponse, mais ta MFC s'applique à l'ensemble de ma cellule or il faut qu'elle agisse seulement sur le format horaire, je cherche une solution par VBA qui isolerait les 5 caractères de ce format horaire puis lui appliquerait une MFC, pas simple en effet 🙁.

Cibleo
 
Re : Colorier les 5 caractères qui composent un format horaire

Re à tous,

Je me suis mal exprimé 🙄, il s'agit de la plage C9:M16 (au format standard) où figurent des courses dans lesquelles figurent des horaires que j'aimerais faire ressortir à l'aide d'une MFC et seulement les horaires.

Y a de l'orage, je vais peut-être vous quitter 😕

Cibleo
 
Re : Colorier les 5 caractères qui composent un format horaire

Bonjour à tous,

Je reviens avec mon fichier dans lequel j'ai placé une macro de myDearFriend. (Voir le module 2).

Celle-ci colorie une chaine de caractères définie, voir ci-dessous.

Code:
'A adapter -----------------------------------
    Set Plage = Sheets("Planning").Range("C9:M16")
    LeMot = "10:00"

Cliquez sur le bouton "Colorier Horaires" et tous les "10:00" se colorient en rouge.

Maintenant, je souhaiterais que cette macro s'applique à tous mes horaires de la plage C9:M16 et là je sèche 🙁

Pensant que les caractères génériques pouvaient résoudre mon affaire, j'ai essayé ceci :

Code:
LeMot = "##:##"
ou
LeMot = "??:??"
ou
LeMot = "*:*"

Mais cela ne fonctionne pas, qui peut m'aider à modifier ce code ?

Pour info, les explications de myDearFriend sont dans ce post :

https://www.excel-downloads.com/thr...-la-couleur-dun-texte-dans-une-cellule.87820/

Amicalement Cibleo
 

Pièces jointes

Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir le forum,

Je suis toujours à la recherche d'une solution 🙁

Avec cette petite macro, je colorie les 5 premiers caractères mais comment colorier tous les horaires de ma plage (C9:M16)

Code:
Sub Macro1()
Dim Cel As Range
For Each Cel In Range("c9:m16")
    If Cel.Value Like "*##:##*" Then
        Cel.Characters(Start:=1, Length:=5).Font.ColorIndex = 3
    End If
Next Cel
End Sub

Dans le code de myDearFriend, ne dois-je pas utiliser l'opérateur "like" pour parvenir à mes fins.

Code:
Like "*##:##*" Then

Merci de votre aide Cibleo
 
Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir,

Peut-être une solution via la fonction CELLULE :

=CELLULE("format";A1)

retourne un code qui commence par H si la cellule est dans un format horaire.

Resterait alors à tester dans la MFC si le code commence par la lettre H

@+
 
Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir tous le monde,

Essaye ceci :
Code:
Sub Color_Heure()

Dim k As Integer, cell As Range, y As Integer

For Each cell In Range("C9:M16")
 If cell <> "" Then
    For y = 1 To Len(cell)
      If Mid(cell, y, 1) = ":" Then
       With cell.Characters(y - 2, 5).Font
         .FontStyle = "Gras"
         .ColorIndex = 3
       End With
      End If
    Next
 End If
Next
End Sub

Bonne soirée

A+
 
Re : Colorier les 5 caractères qui composent un format horaire

Bonjour à tous,
Bonjour Tibo, bqtr 🙂

C'est vraiment déconcertant la facilité avec laquelle tu trouves la solution.

J'ai passé des heures à écumer le forum en tapant des mots-clefs et les pseudos des cadors pour parvenir à mes fins.

Je vais pouvoir enfin dépoussiérer mes Favoris 😀

J'avance vite dans mon projet, à bientot sur l'autre fil et pour la prochaine étape.

Milles mercis

A+ Cibleo 😉

Bonne soirée à tous
 
Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir à tous,
Bonsoir bqtr,

Sur la lancée de ton code, je me demandais si je ne pouvais pas en faire de même avec les N° de tel qui apparaîtront dans la plage.

Ces numéros seront transcris toujours de cette façon ##.##.##.##.##

J'ai essayé ceci :

Code:
Sub Color_Heure1()
Dim k As Integer, cell As Range, y As Integer
For Each cell In Range("C9:M16")
 If cell <> "" Then
    For y = 1 To Len(cell)
      If Mid(cell, y, 1) = "." Then
       With cell.Characters(y - 2, 6).Font
         .FontStyle = "Gras"
         .ColorIndex = 11
       End With
      End If
    Next
 End If
Next
End Sub

Cela fonctionne si mes numéros sont bien encadrés par des "blancs".

Exemple : un mot 03.86.22.25.31 un mot

Par contre, si par inadvertance, je devais saisir 03.86.22.25.31un mot, le 1er caractère suivant le N° est colorié comme ceci :

03.86.22.25.31un mot

C'est pour le fun, rien d'urgent

Merci de ton aide Cibleo
 
Re : Colorier les 5 caractères qui composent un format horaire

Bonjour,

Essaye en mettant 5 au lieu de 6.
Code:
With cell.Characters(y - 2, 5).Font

Ou bien essaye ceci :
Code:
Sub Color_Heure1()
Dim k As Integer, cell As Range, y As Integer
For Each cell In Range("C9:M16")
 If cell <> "" Then
    For y = 1 To Len(cell)
      If Mid(cell, y, 1) = "." And Mid(cell, y + 9, 1) = "." Then
       With cell.Characters(y - 2, 14).Font
         .FontStyle = "Gras"
         .ColorIndex = 11
       End With
      End If
    Next
 End If
Next
End Sub


A+
 
Dernière édition:
Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir le forum,
Bonsoir bqtr,

Tout fonctionne c'est OK 🙂

Pour couronner le tout et en finir avec le coloriage, j'aimerais reprendre une partie du travail réalisé par CelluleVide dans le lien ci-dessous.

A savoir choisir une couleur à l'aide d'OptionButton, sélectionner un mot dans ma Combobox puis colorier ce mot figurant dans la plage concernée.

Pour cela, j'ai donc créé un nouveau formulaire et repris le code de myDearFriend. (Dans la plage C4:M11, cela me colore en rouge le mot choisi dans ma Combobox)

https://www.excel-downloads.com/thr...-precis-dans-une-chaine-de-caracteres.114516/

Pour les OptionButton, je pense qu'il faut utiliser la propriéte "Tag" parce que j'ai l'impression que le code de CelluleVide rame un peu.

Pouvez-vous m'aider, parce que je sature complètement ce soir 😕

Amicalement Cibleo

Bonne soirée à tous
 

Pièces jointes

Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir le fil, Cibleo,

Si j'ai bien compris la demande, tu trouveras ci-joint ton fichier modifié en conséquence...

Pour ton bouton, j'ai utilisé le code suivant :
Code:
[COLOR=GRAY][B][I]DANS LE MODULE DE CODE DU USERFORM[/I][/B][/COLOR]

[COLOR=NAVY]Private Sub[/COLOR] B_Colorier_Click()
[COLOR=GREEN]''myDearFriend!  -  www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] O [COLOR=NAVY]As[/COLOR] Control
    [COLOR=NAVY]If[/COLOR] ComboMesMots.ListIndex < 0 [COLOR=NAVY]Then Exit Sub
    For Each[/COLOR] O [COLOR=NAVY]In[/COLOR] Me.Controls
        [COLOR=NAVY]If[/COLOR] TypeName(O) = "OptionButton" [COLOR=NAVY]Then
            If[/COLOR] O.Value [COLOR=NAVY]Then[/COLOR]
                MotEnCouleur ComboMesMots.Text, Sheets("Planning").Range("C4:M11"), O.BackColor
                Unload Me
            [COLOR=NAVY]End If
        End If
    Next[/COLOR] O
[COLOR=NAVY]End Sub[/COLOR]
Pour la couleur, j'ai utilisé la procédure MotEnCouleur que tu peux retrouver là :
La F.A.Q - VBA Comment mettre en couleur un mot dans une phrase, sur une cellule ou une plage de cellules ?... code à peine modifié pour l'adapter à la situation. 😉

Cordialement,
 

Pièces jointes

Re : Colorier les 5 caractères qui composent un format horaire

Bonsoir le forum,
Bonsoir bqtr, myDearFriend! 🙂

Impeccable, ça marche d'enfer.

Faut pas se moquer, mais j'ai mis du temps à comprendre que dans ton code, c'était la couleur de fond des OptionButton qui déterminait la couleur choisi 😀

Vous m'épatez vraiment, jamais je ne parviendrai à écrire du code comme vous le faites 🙄

Vraiment hyper sympa de participer à mon projet myDearFriend!

Bonne soirée à tous.
 
- 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
Retour