MFC en VBA (encore...)

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

JunFan

XLDnaute Junior
Bonjour à tous

J'ai un fichier où le nombre de MFC nécessaire est de 4. Les MFC classiques étant limitées à 3, j'ai tenté de faire une macro.

Celle-ci fonctionne à peu près mais elle ne se déclenche que si vous allez dans la celulle. Puis ensuite les MFC ne disparaissent pas une fois les conditions remplies.

J'ai vu un début de réponse apporté par Robert dans un sujet de ce matin ci-contre : https://www.excel-downloads.com/threads/affichage-cellule-suivant-un-critere.176655/

Son code fonctionne avec les "If" pour activer et désactiver les MFC.

Cependant je n'arrive pas à l'adapter à mon cas.

Vous trouverez mon fichier ci-dessous. Le code est peut-être un peu barbare.

Merci pour vos conseils
 

Pièces jointes

Dernière édition:
Re : MFC en VBA (encore...)

Hello tout le monde 🙂

Essaie ce code (pas moins barbare)...
Code:
    If Not Application.Intersect(Target, [G12:I32]) Is Nothing Then
        
        If Range("J" & Target.Row).Value = "Libellé !" Then
            Range("J" & Target.Row).Interior.ColorIndex = 39
            Range("J" & Target.Row).Font.ColorIndex = 2
            Range("J" & Target.Row).Font.FontStyle = "Gras"
        ElseIf Range("J" & Target.Row).Value = "Montant ?" Then
            Range("J" & Target.Row).Interior.ColorIndex = 33
            Range("J" & Target.Row).Font.ColorIndex = 2
            Range("J" & Target.Row).Font.FontStyle = "Gras"
        ElseIf Range("J" & Target.Row).Value = "Km ?" Then
            Range("J" & Target.Row).Interior.ColorIndex = 46
            Range("J" & Target.Row).Font.ColorIndex = 2
            Range("J" & Target.Row).Font.FontStyle = "Gras"
        ElseIf Range("J" & Target.Row).Value = "Puissance ?" Then
            Range("J" & Target.Row).Interior.ColorIndex = 38
            Range("J" & Target.Row).Font.ColorIndex = 2
            Range("J" & Target.Row).Font.FontStyle = "Gras"
        Else
            Range("J" & Target.Row).Interior.ColorIndex = xlNone
            Range("J" & Target.Row).Font.ColorIndex = xlNone
            Range("J" & Target.Row).Font.FontStyle = "Normal"
        End If
    
    End If
 
Re : MFC en VBA (encore...)

Merci de ta réponse.

Le principe du fichier :
1/ Tu saisis le libellé dans la colonne G --> La colonne J te renvoi un message "Montant ?" afin que tu saisisses le montant dans la colonne H.
2/ Tu saisis donc le montant colonne H --> la colonne J affiche un total. Le message "Montant ?" disparait ainsi que la MFC.

Le fichier bug à l'étape 2/, quand on saisit un montant.
 
Re : MFC en VBA (encore...)

Re,

1/ Tu saisis le libellé dans la colonne G --> La colonne J te renvoi un message "Montant ?" afin que tu saisisses le montant dans la colonne H.

2/ Tu saisis donc le montant colonne H --> la colonne J affiche un total. Le message "Montant ?" disparait ainsi que la MFC.
En faisant comme ça, chez moi, rien ne s'affiche en colonne J !

Aussi, je ne comprends pas le problème c'est quoi au fait ?

Ta formule en colonne J qui ne joue pas et qui justement devrait afficher un résultat en colonne J ?

Désolé je ne comprends pas...
 
Re : MFC en VBA (encore...)

Re

Ya pas de souci je réexplique :

En gros la formule et la MFC est seulement en colonne J :
=> Si toutes les informations sont saisies (nature + montant (ou km) , la formule colonne J fait le calcul et la celulle affiche un montant (j'ai vérifier sans la MFC, la formule fonctionne).
=> Si il manque une information, la formule colonne J affiche un message pour indiquer ce qu'il manque (libellé, montant, ...)

Jusque là rien de spécial, c'est juste une fonction SI.

Ensuite la MFC se fait uniquement sur les messages qui apparaissent dans la colonne J. Donc : si toutes les informations complétées => pas de message => pas de mise en forme.

Dans la 2è ligne de ton code tu intègres une plage de donnée qui va de G à I, je pense que c'est la que ça coince car le code ne doit concerner que la colonne J.
Il faut peut être insérer en plus un code du genre
-----------> "...If [..."Libellé"] = true ---> MFC
-----------> "...If [..."Libellé"] = false ---> normal
Mais je pense que ton code était bien sans rajouter ça.

En l'état actuel des choses, quand je rentre un libellé colonne G (exemple : "Avion") et un montant colonne H, un message d'erreur apparait.

J'essaie de regarder de mon côté. Merci de tes conseils et du temps que tu prends en tout cas.

Cdlt
 
Re : MFC en VBA (encore...)

Re,

Procède comme suit :

1) Effacer la plage G12:I32.

2) Mettre la colonne J, non gras, police couleur noir et le fond sans couleur.

3) Modifier le Else du code comme ceci..
Code:
Range("J" & Target.Row).Interior.ColorIndex = xlNone
Range("J" & Target.Row).Font.ColorIndex = 1' Avant ici c'était 2 qui est le blanc
Range("J" & Target.Row).Font.FontStyle = "Normal"

4) Essayer de nouveau.

______________________________________________________________________________________________

Ensuite, si chez moi, si je fais comme tu as fais :


1) Je saisis "Avion" en G.

2) Je saisis un montant en H, exemple 7800

3) En colonne J s'affiche 7'800.00 et pas de message d'erreur.

_______________________________________________________________________________________________

Les seuls messages d'erreurs qui viennent, c'est les "Alertes messages" que tu as fais toi-même pour les kilomètres via "Données/Validation des données".
 
- 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
5
Affichages
176
Réponses
8
Affichages
664
Réponses
12
Affichages
503
Retour