Changement de couleur de la police via macro VBA

Bonjour à tous,

j'ai besoin de vos lumière concernant une de mes macros VBA du fichier ci-joint.

le but est de changer la couleur de la police en cliquant sur des boutons (carré noir et carré rouge)

j'ai réussi à appliquer la macro à une cellule (en intégrant la commande Unprotect / Protect car le fichier doit être protégé).

Par contre je souhaiterais que cette macro s'applique à une sélection définie. Le but est de cliquer sur une ou plusieurs cellules et ensuite d'appliquer la macro à celle(s)-ci.

la zone d’application de cette macro doit aller de B8 à AP53 et de B62 à AP107, c'est un peu à ce niveau que je coince.....

Petit sous question, ce que je viens d'énumérer est valable pour colorer une ou plusieurs cellules entières. Est-il possible de l'appliquer à une sélection partielle de la cellule (sélection du texte en tirant avec la souris) ?

Au besoin, le mot de passe provisoire du fichier est 1

merci d'avance

22historique-sdc.xlsm (150.04 Ko)

Bonjour

Par contre je souhaiterais que cette macro s'applique à une sélection définie. Le but est de cliquer sur une ou plusieurs cellules et ensuite d'appliquer la macro à celle(s)-ci.

la zone d’application de cette macro doit aller de B8 à AP53 et de B62 à AP107, ..

Et si vous mettez "Selection" à la page de Range("B8") ?

Sinon, je ne comprends pas pourquoi vous avez fusionné toutes ces cellules. exemple la colonne A et B, une seule colonne suffisait...

Cordialement

Edit : Lol ! Kinkempois, c'est juste à coté de chez moi...

merci beaucoup, simple en somme

le monde est petit.... c'est mon lieu de travail

par contre pour l'application de la macro à une sélection partielle de la cellule, c'est faisable ?

Re

par contre pour l'application de la macro à une sélection partielle de la cellule, c'est faisable ?

C'est à dire ? donnez moi un exemple

Crdlt

et bien si dans une cellule j'écris : arrivée prévue ce 24/05/2020

et souhaiterais juste sélectionner et appliquer la macro à la date par exemple pour que cela donne : arrivée prévue ce 24/05/2020

Actuellement dans cette configuration de macro, la couleur s'appliquera à toute la cellule.

Et alors je me demandais si lorsque que l'on applique une macro à une sélection et que cette macro contient une commande Unprotect/Protect, est-il possible d'émettre des restrictions de dé-protection à certaines cellules ?

je m'explique, les macros de changement de couleurs et de suppression de données (la corbeille) doivent être utilisées pour les zones que j'ai défini dans mon premier message ci-dessus. Si quelqu'un applique un changement de couleur sur les 7 premières lignes (ce qui n'est pas prévu) ce n'est pas trop grave, il suffit de cliquer à nouveau sur le carré noir.

Par contre, s'il clique sur la corbeille et qu'il valide le message de confirmation, tout s'effacera et il ne sera pas possible de faire CTRL+Z pour revenir en arrière.

Donc en somme, peut-on soit limiter la dé-protection à certaines cellules ou bien limiter les macros à certaines cellules ?

9historique-sdc.xlsm (151.13 Ko)

re

et bien si dans une cellule j'écris : arrivée prévue ce 24/05/2020

et souhaiterais juste sélectionner et appliquer la macro à la date par exemple pour que cela donne : arrivée prévue ce 24/05/2020

Dans quelle cellule de votre fichier par exemple ?

Si quelqu'un applique un changement de couleur sur les 7 premières lignes (ce qui n'est pas prévu) ce n'est pas trop grave, il suffit de cliquer à nouveau sur le carré noir.

On va adapter le code pour éviter que l'utilisateur ne modifie ni les couleurs, ni qu'il puisse effacer dans les 7 eres lignes

re

et bien si dans une cellule j'écris : arrivée prévue ce 24/05/2020

et souhaiterais juste sélectionner et appliquer la macro à la date par exemple pour que cela donne : arrivée prévue ce 24/05/2020

Dans quelle cellule de votre fichier par exemple ?

Dans toutes les cellules qui sont dans les colonnes "heures" et "évènements"

re

Dans toutes les cellules qui sont dans les colonnes "heures" et "événements"

Dans les heures, cela concerne les colonnes B et C, donc là vous ne mettez que des heures et pas de date je suppose

Pour les événements, si la date est toujours mises de la même manière c'est peut être possible mais presque ingérable dans le code. A coup sûr l'utilisateur mettra la date d'une manière ou d'une autre et pas toujours au même endroit. Le plus simple est de mettre la date dans une colonne séparée.

Question supplémentaire : je vois que les lignes 54 à 61 qui ont les mêmes titres.... Est-ce que c'est un exemple ou vous allez répéter ces lignes encore plus bas ?

Re

Je n'ai pas de retour par rapport aux questions dans mon dernier post...En attendant voici déjà une proposition.

En supposant que l'on considère les lignes 1 à 7 et 54 à 61 comme non modifiables en couleur, voici le code pour le rouge mais sur la cellule entière. Il vous suffit d'adapter pour le code Noir.

Sub Rouge()
Dim ws As Worksheet
Set ws = Worksheets("Histo") 'ActiveSheet 'ou Worksheets("Feuil1") par exemple
 'Couleur du texte en B8 : RGB(250, 0, 0)
 'Worksheets("Histo").UsedRange.Select
 If Intersect(ActiveCell, ws.Range("A1:BT7", "A54:BT61")) Is Nothing Then
    ws.Unprotect Password:="1"
    Selection.Font.Color = RGB(250, 0, 0)
    ws.Protect Password:="1"
End If
End Sub

Par contre, s'il clique sur la corbeille et qu'il valide le message de confirmation, tout s'effacera et il ne sera pas possible de faire CTRL+Z pour revenir en arrière.

Votre code modifié à essayer

Sub Clean_data()
Dim ws As Worksheet, rng As Range
Set ws = ActiveSheet
If Intersect(ActiveCell, ws.Range("A1:BT7")) Is Nothing Then
    If MsgBox("Etes-vous certain de vouloir supprimer la sélection ?", vbYesNo, "Demande de confirmation") = vbYes Then
        'ou Worksheets("Feuil1") par exemple
        ws.Unprotect Password:="1"
        On Error Resume Next
        Set rng = Intersect(Selection, Selection.SpecialCells(xlCellTypeConstants, 23))
        On Error GoTo 0
        If Not rng Is Nothing Then
            rng.ClearContents
            MsgBox "Le contenu de la sélection a été effacé !"
        End If
        ws.Protect Password:="1"  'avec les condtions établies
    End If
End If
End Sub

Cordialement

Rechercher des sujets similaires à "changement couleur police via macro vba"