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

Mise en forme conditionnelle en vba

  • Initiateur de la discussion Initiateur de la discussion aurelp95
  • 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 !

A

aurelp95

Guest
Bonjour,

Pour fiabiliser l'utilisation d'un fichier, je souhaiterais passer la mise en forme conditionnelle sous vba.

Je pensais qu'en faisant l'éditeur de macro, je pourrais copier la macro, mais ce n'est pas le cas.

Voici la mise en forme conditionnelle que je souhaites :

=INDEX('CSN-1'!$A$1:$CZ$979;EQUIV($C6;'CSN-1'!$A$1:$A$979;0);EQUIV(D6;'CSN-1'!$A$3:$MM$3;0))>1

Si la formule est vraie, alors la cellule est remplie par bicolore blanc et vert avec un dégradé partant du centre.

Je peux essayer de mettre le fichier si vous en avez besoin.

Merci d'avance.
 
Re : Mise en forme conditionnelle en vba

Oui ça existe puisque c'est déjà le cas sur mon fichier...

Mais en même temps, ce n'est pas le plus important. Ca pourrait être rouge, vert, jaune avec des pois noirs...

Ce qui m'importe surtout, c'est la prise en compte de la forumle est mise en forme conditionnelle.
 
Re : Mise en forme conditionnelle en vba

Voici le lien pour accéder au fichier :

Le but de ce fichier est que si sur l'onglet CS01, A est supérieur à 2 pour la T22, alors si sur l'onglet 02, A est affecté sur T22, la cellule soit jaune à pois noirs... 😉
 
Re : Mise en forme conditionnelle en vba

Re,

Voici le code (j'ai utilisé l'enregistreur)
Code:
Sub MFCCellule()
  With Selection
    .FormatConditions.Add Type:=xlExpression, Formula1:= _
                          "=INDEX('CSN-1'!$A$1:$CZ$979;EQUIV($C6;'CSN-1'!$A$1:$A$979;0);EQUIV(D6;'CSN-1'!$A$3:$MM$3;0))>1"
    With .FormatConditions(1)
      .StopIfTrue = False
      With .Interior
        .Pattern = xlPatternRectangularGradient
        .Gradient.RectangleLeft = 0.5
        .Gradient.RectangleRight = 0.5
        .Gradient.RectangleTop = 0.5
        .Gradient.RectangleBottom = 0.5
        .Gradient.ColorStops.Clear
        With .Gradient.ColorStops.Add(0)
          .ThemeColor = xlThemeColorDark1
          .TintAndShade = 0
        End With
        With .Gradient.ColorStops.Add(1)
          .Color = 5287936
          .TintAndShade = 0
        End With
      End With
    End With
  End With
End Sub

Pour faire plus "pro" il faut supprimer les "auto_open" et "auto_close"
Et mettre dans ThisWorkbook, le code suivant
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ActiveWindow.DisplayWorkbookTabs = True
  Application.Calculation = xlAutomatic
  ActiveWindow.DisplayGridlines = True
End Sub


Private Sub Workbook_Open()  Application.Calculation = xlManual
  MsgBox "Ne pas faire de copier-coller lors de la saisie au risque de perdre le bénéfice des formules et des mises en forme conditionnelles" & Chr(10) & Chr(10) & "En cas d'anomalie dans le report des CA, saisir les jours en moins ou - ou en + dans la colonne Entrée" & Chr(10) & Chr(10) & "En cas d'anomalie dans le report des RC, saisir les heures en - ou en + dans des colonnes de Dimanche", vbExclamation, "Consignes d'utilisation du fichier"
  ActiveWindow.DisplayWorkbookTabs = False
  ActiveWindow.DisplayGridlines = False
  Sheets("Accueil").Select
  Range("A1").Select
End Sub


A+
 
Dernière modification par un modérateur:
Re : Mise en forme conditionnelle en vba

J'ai copié la 1ère macro dans This workbook et dans l'onglet sur vba pour tester (après avoir supprimé la MFC d'origine pour éviter les doublons), mais celà ne donne rien.

Dans la macro, on n'indique pas les cellules sur lesquelles on souhaite que la MFC s'applique. Se pourrait-il que ça vienne de là ?

Si oui, comment fait-on pour les déclarer ?

Merci beaucoup pour vos retours.
 
Re : Mise en forme conditionnelle en vba

Re,

Je t'ai donné le code dans une sub à exécuter par l'onglet développeur

Maintenant il suffit de remplace
Code:
With Selection
Par
Code:
With Target
ou
Code:
With Range()
tout dépend ce que tu veux faire et comment !?
 
Re : Mise en forme conditionnelle en vba

Bonsoir,

Le but de cette macro est que pour chaque cellule comprise entre D6 et AH1005, son contenu soit testé avec la formule donnée précédemment.

J'ai essayé en mettant D6:AH1005 dans With Range () mais celà ne fonctionne pas.

Merci d'avance.
 
Re : Mise en forme conditionnelle en vba

Re,

A part le fait qu'il n'existe pas de feuille "CSN-1" dans le fichier transmis
je ne comprends pas ce qui ne marche pas pour toi, voici le fichier modifié

A+
 

Pièces jointes

Re : Mise en forme conditionnelle en vba

Merci beaucoup, ca fonctionne nickel.

Ce n'est pas la première fois que je fais appel aux internautes mais c'est la 1ère fois que je tombe sur quelqu'un qui va jusq'au bout de l'idée malgré mes questions des fois un peu néophytes.

En espérant que pour mes prochaines demandes, je retombe sur toi, sachant que je veux fiabiliser au maximum ce fichier pour pouvoir le déployer sans problème sur plusieurs sites de production.

Merci et bonne journée
 
Re : Mise en forme conditionnelle en vba

Bonjour,

Je viens de tester la macro sur le fichier complet (pour chque mois de l'année en modifiant bien sûr les pages rattachées (01 et CS-1, 02 et CS01; 03 et CS02, ....).

Ca fonctionne parfaitement jusqu'au mois de juillet, mais à partir du mois d'août, ça ne veut plus rien (si je supprime le mois d'août, ça le fait sur le mois de septembre et ainsi de suite): au lieu de passer en vert, ça passe en noir.

J'ai cette erreur-là :

Merci d'avance.

Par contre, commentfais-tu pour avoir le code en faisant l'enregistreur de macro, car pour ma part, si j'enregistre en faisant une MFC, je n'ai rien du tout (juste le nom de la macro).
 

Pièces jointes

  • Erreur.png
    5.7 KB · Affichages: 130
  • Erreur.png
    5.7 KB · Affichages: 123
Re : Mise en forme conditionnelle en vba

Bonjour Aurelp95

Je pense que ce problème vient d'Excel que ne sait plus travailler au bout d'un certain nombre d'onglet 😛

Ce qu'il faut faire, c'est fermer Excel et réouvrir le fichier pour continuer, j'ai bine dis continuer 😉

Par contre, commentfais-tu pour avoir le code en faisant l'enregistreur de macro, car pour ma part, si j'enregistre en faisant une MFC, je n'ai rien du tout (juste le nom de la macro).
Tu n'as pas mis dans ton profil sur quelle version d'Excel tu es !?

A+
 
Dernière modification par un modérateur:
Re : Mise en forme conditionnelle en vba

Désolé,

Je suis sur xl 2010.

J'ai réussi à le faire prendre en compte jusqu'en octobre mais ça me refait la même chose à partir de novembre.

Je vais voir pour éventuellement supprimer un ou 2 onglets (ou de les positionner différemment pour voir ce que celà donne), mais pas dit que ce soit possible
 
Re : Mise en forme conditionnelle en vba

Bonjour,

Je viens de tester et ça ne passe toujours pas la barre du mois d'octobre.

Pour diminuer le nombre d'onglets (41 à l'heure actuelle), j'en ai supprimé 11 (reste 30 donc) qui peuvent être regroupés sur un seul, mais je rencontre toujours la même erreur.

Ca va être compliqué d'en supprimer encore car c'est un document qui doit pouvoir s'utiliser sur plusieurs sites et donc être modifiable sur une partie de sa structure.

A partir de quel seuil Excel commence-t-il à buggé ?

Merci d'avance.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
631
W
Réponses
2
Affichages
214
Réponses
6
Affichages
304
Réponses
4
Affichages
283
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…