Microsoft 365 Comment copier la couleur de remplissage d'une zone d'une feuille vers toutes les autres feuilles automatiquement

morbo

XLDnaute Nouveau
Bonjour,

Je tiens d'abord à vous remercier pour l'aide indirecte que vous avez pu me fournir grâce à tout les post présents sur le forum et le temps que vous pourrez m'accorder.
Cependant, aujourd'hui je ne trouve malheureusement pas la réponse à deux problèmes.

1) Apres avoir compléter les cellules en jaune de la feuille modèle, j’exécute la macro ajouter des feuilles, j'ai une erreur me précisant que le nom d'une feuille a déjà été utilisé (je ne trouve pas le problème pourtant cette macro fonctionnait bien jusqu'a présent).

2) Apres avoir creer toutes les feuilles, Lorsque je me place sur la feuille FORM, dans la zone (C7;E17) si je doubleclic dans une cellule, celle-ci change de couleur suivant un cycle. Je n'arrive pas a trouver la solution pour que lorsque C7 est verte par exemple, que toutes les cellules C7 du classeur deviennent verte automatique.

Je reste disponible si vous avez besoin de plus d'explications:)
 

Pièces jointes

  • TESTexcelD.xlsm
    57.6 KB · Affichages: 12
Solution
Re à tous,

Voici pour la réplication des couleurs.

Tout se passe quand on désactive quitte la feuille "FORM".
La procédure se trouve dans le module de la feuille "Form" sous la procédure de nom Public Sub Worksheet_Deactivate(). Notez un point important! Cette procédure évènementielle a été déclarée en Public et non en Private.
Cette procédure évènementielle est aussi appelée quand on ouvre le classeur et à la fin de la macro de création des feuilles pour s'assurer que les couleurs sont les bonnes en toutes circonstances.

Tout ceci a été fait pour pallier le fait qu'un changement de couleur ne déclenche aucune procédure évènementielle.

Code du module de la feuille...

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Point 1, essayez :
VB:
Sub Ajouter_Feuilles()
Dim i As Long, Ws As Worksheet

   Application.ScreenUpdating = False
   Set Ws = Sheets("Modèle")
   With Ws
      For i = 7 To Ws.Cells(.Rows.Count, "m").End(xlUp).Row
         If Not FeuilleExiste(.Range("m" & i).Value) Then
            .Copy After:=Sheets(Sheets.Count)
            With ActiveSheet
               .Name = .Range("M" & i)
               .Range("C1") = Ws.Cells(i, "m")     ' Met le nom dans la cellule C1
               .Range("C2") = Ws.Cells(i, "n")     ' Met le prénom dans la cellule C2
               .Range("C3") = Ws.Cells(5, "L")     ' Met la section dans la cellule C3
            End With
         End If
         Sheets(.Range("m" & i).Value).Move After:=Sheets(Sheets.Count)
      Next i
      .Select
   End With
End Sub
 

Pièces jointes

  • morbo- creer feuilles- v1.xlsm
    58.2 KB · Affichages: 5

st007

XLDnaute Barbatruc
bonjour mapomme,
j'avais modifié la macro aussi, ....

C7 est verte par exemple, que toutes les cellules C7 du classeur deviennent verte automatique.
<c7 en vert dans chaque onglet créé, on ne touche pas à Modele, ni a form je suppose
on ne touche que Form et pas les autres.

tu peux expliquer autrement, merci.

ps : tu ne traite pas de personnes de la même famille alors. L'onglet ne se crée pas pour le même nom.
 

Pièces jointes

  • TESTexcelD.xlsm
    50.9 KB · Affichages: 5

morbo

XLDnaute Nouveau
Je selectionne la feuille FORM, dans la zone (C7;E17) si je doubleclic dans une cellule, celle-ci change de couleur suivant un cycle.
Il faut que lorsque C7 est verte par exemple, que toutes les cellules C7 du classeur deviennent verte automatique. Si E14 est rouge dans le feuille FORM alors E14 devient rouge dans toutes les autres feuilles.
Je sais pas si c'est plus clair ... je vois pas trop comment expliquer autrement.

Merci pour le code de création de feuille ça marche nicket aussi :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re à tous,

Voici pour la réplication des couleurs.

Tout se passe quand on désactive quitte la feuille "FORM".
La procédure se trouve dans le module de la feuille "Form" sous la procédure de nom Public Sub Worksheet_Deactivate(). Notez un point important! Cette procédure évènementielle a été déclarée en Public et non en Private.
Cette procédure évènementielle est aussi appelée quand on ouvre le classeur et à la fin de la macro de création des feuilles pour s'assurer que les couleurs sont les bonnes en toutes circonstances.

Tout ceci a été fait pour pallier le fait qu'un changement de couleur ne déclenche aucune procédure évènementielle.

Code du module de la feuille "FORM" :
VB:
Public Sub Worksheet_Deactivate()
'---------  Pour changer de couleur la plage C7:E17
Dim xrgModeleNoms As Range, x, y

Set xrgModeleNoms = Worksheets("Modèle").Range("m7:m" & Worksheets("Modèle").Cells(Rows.Count, "m").End(xlUp).Row)
For Each x In ThisWorkbook.Worksheets
   If Application.IsNumber(Application.Match(x.Name, xrgModeleNoms, 0)) Then
      For Each y In x.Range("c7:e17").Cells
         y.Interior.Color = Me.Range(y.Address).Interior.Color
      Next y
   End If
Next x
End Sub


Code ajouté dans le module de ThisWorkbook :
Code:
Private Sub Workbook_Open()
   Sheets("FORM").Worksheet_Deactivate
End Sub


Ligne ajoutée à la fin du code de création des feuilles :
Code:
Sheets("FORM").Worksheet_Deactivate


Question : Êtes vous certain que c'est la zone c7:e17 et non b7:e17 ?
.
.
.
 

Pièces jointes

  • morbo- creer feuilles- v2.xlsm
    60.9 KB · Affichages: 4
Dernière édition:

morbo

XLDnaute Nouveau
Oui mapomme c'est exactement ça ! vous avez parfaitement répondu à ma demande
Non en sur la colonne b il y aura des dates avec le calendrier, vous etes très attentive.
Ca fonctionne très bien, le seul hic, est :
Si je je mets c7 en rouge dans la feuille Form et que je souhaite aller voir la feuille AAA crée bizarement je me retrouve sur la feuille Modèle

Un énorme merci à vous deux, jamais je n'aurais pu trouver toutes mes erreurs, je vais étudier vos réponses à tête reposé.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @morbo,

Si je je mets c7 en rouge dans la feuille Form et que je souhaite aller voir la feuille AAA crée bizarement je me retrouve sur la feuille Modèle

C'est de ma faute. Lors de la mise au point, j'avais ajouté une ligne (pour vérif) et je ne l'ai pas enlevée .:mad:

Reprenez le code du module de la feuille "Form" et supprimez la ligne suivante :
VB:
Application.Goto xrgModeleNoms

Je suis confus :(.

nota: j'ai corrigé mon message numéro #9 (y compris le fichier)
 

Discussions similaires

Statistiques des forums

Discussions
315 104
Messages
2 116 252
Membres
112 697
dernier inscrit
administratif@ets-delestr