Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Exécuter macro sous 2 conditions

  • Initiateur de la discussion Initiateur de la discussion ascal44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ascal44

XLDnaute Occasionnel
Bonsoir le forum ,

je voudrais exécuter la macro suivante sous 2 conditions :

-S'il y a déja des formats conditionnel dans la plage A3😛100 ne pas lancer la macro pour ces lignes

- S'il y a des des valeurs sur les lignes en AàP sans formats conditionnel lancer la macro

Merci pour votre aide

Code:
Sub form()
Dim lig As Integer, plage As Range

    Application.ScreenUpdating = False

Application.Calculation = xlManual ' accélère l'exécution
Application.DisplayAlerts = False




For lig = 3 To 100
  With Range(Cells(lig, "A"), Cells(lig, "P"))
    'si la ligne n'est pas vide on l'unit à plage
    If Application.CountA(.Cells) Then _
      Set plage = Union(IIf(plage Is Nothing, .Cells, plage), .Cells)
  End With
  
  Range(Cells(lig, "M"), Cells(lig, "P")).Select 'fusionne MNOP
  Selection.Merge
 

Selection.EntireRow.AutoFit ' hauteur ligne automatique
Selection.EntireRow.RowHeight = Selection.EntireRow.RowHeight + 10 ' + 10 pixel
If Selection.EntireRow.RowHeight < 25 Then Selection.EntireRow.RowHeight = 25 ' hauteur de ligne 25 mini


 
Next

'efface la MFC et les bordures
With Range("A3:P100")
  .FormatConditions.Delete
  .Borders.LineStyle = xlNone
End With

If plage Is Nothing Then Exit Sub    'si tout est vide...
    
With plage
  
  'crée les bordures
  .Borders.LineStyle = xlContinuous
  '.Interior.ColorIndex = 43
  .HorizontalAlignment = xlLeft 'alignement texte
  .VerticalAlignment = xlCenter
  .Locked = False 'protection cellule
  .FormulaHidden = False
  
  'MFC 1ère condition
  .FormatConditions.Add Type:=xlExpression, Formula1:="=CELLULE(""row"")=LIGNE()"
  With .FormatConditions(1)
    .Font.Bold = True
    .Font.Italic = False
    .Font.ColorIndex = 3
    .Interior.ColorIndex = 6
  End With
  
  'MFC 2ème condition
  .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE();2)=0"
  .FormatConditions(2).Interior.ColorIndex = 34

   'MFC 3ème condition
  .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(LIGNE();1)=0"
  .FormatConditions(3).Interior.ColorIndex = 36
  
 End With
    

     
    Application.Calculation = xlAutomatic
Application.DisplayAlerts = True

End Sub
 
Re : Exécuter macro sous 2 conditions

Bonjour,

regarde peut être ceci, si j'ai bien compris :
Code:
If Range("A3:P100").FormatConditions.Count > 0 And _
    Application.CountA(Rows("1:16")) > 0 Then tamacro
bon après midi
@+
 
Re : Exécuter macro sous 2 conditions

Bonsoir Pierrot93,

Le code ne fait pas exécuter la macro :les formats conditionnels ne se forment pas sur les lignes remplies avec de nouvelle valeurs.

J'ai mis cela :
Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False

If Range("A3😛100").FormatConditions.Count > 0 And _
Application.CountA(Rows("1:16")) > 0 Then form
End Sub
 
Re : Exécuter macro sous 2 conditions

Re,

le code donné teste si dans la plage A3😛100 il y a au moins 1 MFC ET si sur les lignes 1 a 16 il y a au moins 1 valeur, si les 2 conditions sont vérifiées, la macro est lancée...
 
Re : Exécuter macro sous 2 conditions

Oui , je comprend pourquoi ça ne lance pas :dans la plage A3😛100 il y à des MFC et des valeurs.
Dans la macro il ne faudrait pas appliquer ce code :
'efface la MFC et les bordures
With Range("A3😛100")
.FormatConditions.Delete
.Borders.LineStyle = xlNone
End With

Et ne traiter dans la plage que si il n'y à pas de MFC sur les lignes qui contiennent des valeurs
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
467
Réponses
9
Affichages
592
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
872
Réponses
2
Affichages
1 K
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…