Faire cesser une macro quand on en lance une autre
Bonjour le forum,
J'ai deux macro la 1ère qui empêche la sélection des cellules contenant des formules et la 2ème pour imprimer le doc en noir et blanc (codes ci dessous). Mon problème c'est qu'il faudrait que la 1ère macro cesse de fonctionner quand je lance l'impression en noir et blanc (car si c'est pas le cas, les cellules de A15 à I16 sont vierges car l'écriture dans le doc est de couleur blanche). J'ai rajouté dans la 2ème macro le changement de couleur de police et de remplissage pour l'impresssion et une fois l'impression faite j'ai remis les couleurs d'origine.
Private Sub Worksheet_selectionChange(ByVal Target As Range)
'macro qui empêche la sélection des cellules contenant des formules
'Dim Cell As Range
'For Each Cell In Selection
'If Cell.HasFormula Then Selection.Cells(1, 1).Offset(, 1).Select
'Next
'End SubSub ImprimeSansCouleur(ByVal control As IRibbonControl)
Dim temp1(), temp2()
Dim c As Variant
Dim N As Long, I As Long
Range("A15:I16").Select
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
N = N + 1
ReDim Preserve temp1(1 To N)
ReDim Preserve temp2(1 To N)
temp1(N) = c.Address
temp2(N) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For I = 1 To N
Range(temp1(I)).Interior.ColorIndex = temp2(I)
Next I
Range("A15:I16").Select
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End SubJ'espère que j'ai été clair dans mes explications, sinon n'hésitez pas
D'avance merci pour votre aide
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour,
En ajoutant un Flag
dans un module
Public Flag As Boolean '(dans Module)Sub ImprimeSansCouleur(ByVal control As IRibbonControl)
Dim temp1(), temp2()
Dim c As Variant
Dim N As Long, I As Long
Flag = True
Range("A15:I16").Select
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
'--- suite macro
Flag = False
End Subdans la feuille
Private Sub Worksheet_selectionChange(ByVal Target As Range)
'macro qui empêche la sélection des cellules contenant des formules
Dim Cell As Range
If Flag Then Exit Sub
For Each Cell In Selection
If Cell.HasFormula Then Selection.Cells(1, 1).Offset(, 1).Select
Next
End SubBonne journée
Claude
Bonjour Claude,
Merci beaucoup pour ta réponse c'est sympa. Maintenant celà fonctionne à merveille
Encore merci
A bientôt