SICOULEUR est une fonction VBA qui dans ce cas retourne FAUX.
La formule en elle-même ne pose pas problème, par contre, lorsque j'ajoute [color=red]dans le VBA le filtrage de cette colonne par MSG2, l'affichage est correcte puis passe à #VALEUR.
Pour info, mettre ce filtre est la dernière action du code VBA.
J'ai utilisé la barre d'audit des formules pour faire du pas à pas et à priori c'est lorsque MSG2 devient le contenu à afficher que j'obtiens l'erreur.
Pour info, une fois la macro exécutée, si j'enlève (à la main) le filtre, les erreurs #VALEUR disparaissent et ne reviennent pas lorsque je remets (toujours à la main) le filtre.
Quelqu'un aurait-il une idée sur ce comportement Excel et comment le contourner ?
Cordialement,
A voir également:
[VBA Excel] Après la sélection d'un filtre, la formule est en erreur
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 30 nov. 2011 à 18:01
Bonjour,
un conflit, probablement entre une action et l'autre.
Mais comment veux-tu qu'on puisse te renseigner sans tous les éléments susceptibles de générer le conflit ?
Nous n'en possédons qu'un : le code VBA d'inserion de la formule.
Les deux autres éléments succeptibles d'intervenir étant la fonction SICOULEUR et le filtre ajouté (les deux codes VBA).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
jpvito
Messages postés11Date d'inscriptionmercredi 8 décembre 2004StatutMembreDernière intervention18 avril 2012 30 nov. 2011 à 18:20
L'application du filtre en VBA est :
Selection.AutoFilter Field:=5, Criteria1:=MSG2
Et la fonction SICOULEUR :
Function SICOULEUR(Plage As Range, Couleur As Long) As Boolean
If (Plage.Font.ColorIndex = Couleur) Then
SICOULEUR = True
Else
SICOULEUR = False
End If
End Function
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 30 nov. 2011 à 18:30
Merci pour le filtre, mais il s'applique à quelle sélection ?
Car :
Selection.AutoFilter Field:=5, Criteria1:=MSG2
ne nous apprend rien sur la plage concernée, à quoi tu appliques ce filtre, etc...
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Vous n’avez pas trouvé la réponse que vous recherchez ?
jpvito
Messages postés11Date d'inscriptionmercredi 8 décembre 2004StatutMembreDernière intervention18 avril 2012 1 déc. 2011 à 11:07
Bonjour,
Il me semble que la sélection ne joue un rôle que d'accesseur à la fonction "AutoFilter" et que c'est le champ "Field" qui désigne la liste du filtre automatique à filtrer.
J'ai quand même essayé de :
- sélectionner la cellule où se trouve le filtre => KO
- sélectionner les cellules sous celle où se trouve le filtre => KO
- annuler le filtrage puis le ré-appliquer => KO, Pire, du fait de #Valeur, MSG2 n'est plus présent dans la liste et les valeurs qui apparaissaient ne s'affichent plus.
- De mettre Range("E4").AutoFilter Field:=5, Criteria1:="MSG2" => KO
J'ai essayé également de remplacer ma variable par le litéral "MSG2" lors du filtrage, mais le comportement est le même.