Mise en forme conditionnelle avec variable

Bonjour

Je vous expose mon problème.

J'ai un tableau de bonne taille blindé de mise en forme conditionnelle. Je souhaiterai en ajouter une de plus (il s'agira de la 3eme condition donc il y a encore de la place). Je ne peux pas la faire manuellement car je dois faire cela sur plus de 400 cases, qu'il y a déjà des conditions qui risquent d'être chamboulées si je me contente de copier la nouvelle et que j'ai envie de savoir ce que je fais mal. Je souhaiterais donc une macro pour faire cela.

En gros la macro doit ajouter une mise en forme conditionnelle qui s'active si la cellule actuelle n'est pas vide ET si la case du dessous est vide.

Sub merguezintersiderale()
Dim largeur 
Dim hauteur 
Dim reflargeur1
Dim reflargeur2
For largeur = 4 To 40 
       For hauteur = 35 To 148
              Cells(hauteur, largeur).Activate
              reflargeur1 = Left(ActiveCell.Address(True, False, xlA1), InStr(1, ActiveCell.Address(True, False, xlA1), "$") - 1) & hauteur
              reflargeur2 = Left(ActiveCell.Address(True, False, xlA1), InStr(1, ActiveCell.Address(True, False, xlA1), "$") - 1) & hauteur + 1
              Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=et(estvide(" & reflargeur2 & ");" & reflargeur1 & "<>"")"""
                    With Selection.FormatConditions(1).Borders(xlBottom)
                           .LineStyle = xlContinuous
                           .Weight = xlThin
                          .ColorIndex = xlAutomatic
                   End With
      Next hauteur
Next largeur
End Sub

L'erreur serait probablement sur la ligne du selection.formatconditions.add avec les guillemets mais j'ai beau retourner le problème dans ma tête, je ne trouve pas la solution.

Merci

edit : je viens de voir qu'une parenthese etait en trop et je l'ai enlevée mais cela ne change pas le problème

Bonjour Sebou,

Très bon nom de Sub

Voici le code

Sub merguezintersiderale()
  Dim largeur
  Dim hauteur
  Dim reflargeur1
  Dim reflargeur2
  For largeur = 4 To 40
    For hauteur = 35 To 148
      Cells(hauteur, largeur).Activate
      reflargeur1 = Left(ActiveCell.Address(True, False, xlA1), InStr(1, ActiveCell.Address(True, False, xlA1), "$") - 1) & hauteur
      reflargeur2 = Left(ActiveCell.Address(True, False, xlA1), InStr(1, ActiveCell.Address(True, False, xlA1), "$") - 1) & hauteur + 1
      Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ET(ESTVIDE(" & reflargeur2 & ");" & reflargeur1 & "="""")"
      With Selection.FormatConditions(1).Borders(xlBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
      End With
    Next hauteur
  Next largeur
End Sub

Il faudra peut-être changer l'ordre des conditions "<> et ="

A+

merci pour la reponse

je teste ca dès que je retourne au taff jeudi

je ne comprenais pas la logique de toutes ces guillemets (je ne la comprends tjrs pas mais bref)

apres qqs modifs, ca marche

Merci à toi

Salut Sebou

2 guillemets = vide

Si tu fais dans l'éditeur VBA partie exécution : Debug.print ""

tu ne verras rien

4 guillemets = encadrement de 2 guillemets

Si maintenant tu fais : Debug.print """"

tu verras 2 guillemets

Est-ce plus clair

Rechercher des sujets similaires à "mise forme conditionnelle variable"