MFC en VBA (encore...)

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

  • Exemple MFC VBA Jun Fan 2.xls
    47.5 KB · Affichages: 67
Dernière édition:

Hulk

XLDnaute Barbatruc
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
 

JunFan

XLDnaute Junior
Re : MFC en VBA (encore...)

Bonjour Hulk

Merci beaucoup pour ce code. C'est pas mal du tout et ça marche quand on choisit un libellé dans la liste déroulante, mais ça bug un peu quand on saisit un montant.

Je te laisse constater par toi même je te joins le nouveau fichier.

Merci
 

Pièces jointes

  • Exemple MFC VBA Jun Fan 2 v2.xls
    50.5 KB · Affichages: 40

JunFan

XLDnaute Junior
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.
 

Hulk

XLDnaute Barbatruc
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...
 

JunFan

XLDnaute Junior
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
 

Hulk

XLDnaute Barbatruc
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".
 

Discussions similaires

Statistiques des forums

Discussions
312 226
Messages
2 086 413
Membres
103 202
dernier inscrit
Claire2BM