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 Sub
Sub 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 Sub

J'espère que j'ai été clair dans mes explications, sinon n'hésitez pas

D'avance merci pour votre aide

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 Sub

dans 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 Sub

Bonne journée

Claude

Bonjour Claude,

Merci beaucoup pour ta réponse c'est sympa. Maintenant celà fonctionne à merveille

Encore merci

A bientôt

Rechercher des sujets similaires à "cesser macro quand lance"