Problème avec deux MFC par macro qui ne fonctionnent que séparément

CMichel44 - 29 juil. 2012 à 19:44
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 29 juil. 2012 à 20:25
Bonjour le Forum
Ceci est ma première demande dans ce forum.
J'ai créé un planning annuel où les jours fériés et les repos supplémentaires se colorient en fonction de l'année choisie, avec une MFC par macro dans ThisWorkbook.
Jusque là ça va.
Si je complète mon planning avec l'une des lettres ("A" pour Annuel; "S" pour Semestriel; "C" pour Correctif.....), la cellule doit se colorer, ceci par macro dans la feuille Planning_1_semestre.
Les deux macros fonctionnent à condition que j'en active une à la fois.

Merci d'aider un débutant

CMichel44

Ci-dessous le lien pour voir mon fichier
http://cjoint.com/?BGDteOrWlba

Je mets le code de ThisWorkbook:(entre parenthèse les lignes qui vont pas)

Private Sub Workbook_Open()
For Each Sh In ActiveWorkbook.Sheets
Sh.Protect Password:="toto", Userinterfaceonly:=True
Next
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
(If UCase(Left(Sh.Name, 3)) = "PLA" Then Call mySub1)
If UCase(Left(Sh.Name, 1)) = "S" Then Call mySub2
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
(If UCase(Left(Sh.Name, 3)) = "PLA" Then Call mySub1)
If UCase(Left(Sh.Name, 1)) = "S" Then Call mySub2
End Sub

Private Sub mySub1()
For Each c In [B3:ea10].Columns
If WorksheetFunction.CountIf([Fériés], c.Cells(2)) Then
c.Cells.Interior.ColorIndex = 4
Else
If WorksheetFunction.CountIf([RPSup], c.Cells(2)) Then
c.Cells.Interior.Pattern = xlGray16
c.Cells.Interior.ColorIndex = 6
Else
c.Cells.Interior.ColorIndex = xlNone
End If

End If
Next
End Sub
Private Sub mySub2()
For Each c In [B3:f9].Cells
With c
If c.Value = "" Then
c.Interior.ColorIndex = xlNone
Else


If WorksheetFunction.CountIf([Fériés], Cells(3, .Column)) Then
.Interior.ColorIndex = 4
Else

If WorksheetFunction.CountIf([RPSup], Cells(3, .Column)) Then
c.Cells.Interior.Pattern = xlGray16
.Interior.ColorIndex = 6
Else
.Interior.ColorIndex = xlNone
End If
End If
End If
End With
Next
End Sub

Et le code de la feuille "Planning_1_semestre":
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([planning1], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [Couleurs].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
End If
End Sub

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 juil. 2012 à 20:25
Bonjour,

Sache que personne ne téléchargera ton fichier, une bonne explication est souvent largement suffisante.

Tu as classé en VB6 alors qu'il s'agit de VBA, je déplace le sujet.

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Rejoignez-nous