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 SubL'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 SubIl 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