Excel - Effacer les filtres bloque l'image

Bonjour à tous,

Je fais depuis récemment l’expérience d’un effet très incommodant sur Excel

Lorsque j’effectue une recherche à l’aide d’un filtre sur ma feuille de calcul puis que je fais "Données" puis "Effacer" (à coté de "Filtrer") l’image sur cette feuille, et sur toutes mes autres feuilles Excel ouvertes, se fige totalement. Ce problème n’apparait qu’avec cette feuille Excel en particulier

La seule solution pour résoudre cela étant de fermer toutes les feuilles Excel ouvertes puis de rouvrir Excel pour que ça refonctionne normalement, jusqu’à ce que je refasse une recherche par filtre, que je supprime les filtres et ainsi de suite

Ce document est confidentiel donc je ne peux malheureusement le partager, et remplacer les information présentes par des info aléatoires fait disparaitre le problème

Après plusieurs bidouillages j’en suis venu à la conclusion que cela a peut-être un rapport avec une mise en forme conditionnelle car si je supprime cette MFC le problème n’apparait plus

Quelqu’un aurait-il une idée de comment résoudre ce problème ?

Pour info j’utilise Excel 2019 sur Windows 10 pro

Merci d’avance

Bonjour,
N'y aurait-il pas des cellules fusionnées qui causeraient ce problème?

Bonjour,

Plusieurs cellule sont fusionnées

J'ai tout défusionné pour essayer, mais le problème persiste toujours

bonsoir,

c'est une ou plusieurs MFC ?

cette MFC, la plage ou la formule, ce sont des colonnes complètes ? Vous savez copier et coller cette formules ici ?

Bonsoir,

Voici la formule et la plage de la MFC

SI je supprime "$I:$K" de la plage de la MFC pour ne laisser que "$A:$F" le problème disparait

3687168746

des colonnes complètes avec MFC n'est pas une bonne idée, cela aggrave trop votre Excel.

Vous pouvez couper cette MFC en 2 règles, la première par exemple $A$1:$F$1000 et la 2ième $I$1:$K$1000 (en supposant que vous n'utilisez que les 1.000 premières lignes.) C'est mieux comme ça ?

J'avais effectivement penser à cette solution en ne mettant que les lignes concernées dans cette MFC soit 3225 lignes

Mais malheureusement ca ne change rien

Et si vous l'appliquez qu'à deux lignes en gardant l'étandue des colonnes? pour voir ce que ça donne. Pour ma culture pouvez-vous me dire à quoi correspond le format?

Bonjour,

Pardon pour ma réponse tardive

Oui si j'applique la MFC qu'à deux lignes en gardant l'étendue des colonnes le problème n'apparait plus

J'ai même essayé avec une vingtaine de ligne et idem ca fonctionne

Par contre si j'étend sur l'ensemble des lignes (ce que je veux faire) le problème revient

bonjour,

pouvez-vous nous joindre votre fichier avec 5-10 lignes avec des données anonymes & votre MFCs

bonjour,

une macro qui fonctionne si vos MFC commencent à la ligne 2 et vos entêtes sont la ligne 1.

Vos addresses MFC comme $A:$F,$I:L, il faut le changer en $A$2:$F$2,$I$2:$L$2 avant d'executer la macro

c'est un pari, parce que je ne vois pas le vrai fichier.

Sub FixCondFormatDupRules()
     '***********************
     'avec raccourci CTRL+SHIFT+F
     '***********************
     Dim lRows, lColumns, r

     lRows = Application.Min(Rows.Count, Range("A" & Rows.Count).End(xlUp).Offset(100).Row) - 1    'la dernière ligne utilisée pour le moment + 100 supplémentaire
     lColumns = Cells(1, Columns.Count).End(xlToLeft).Column     'la dernière colonne

     With Cells(2, 1).Resize(lRows, lColumns)   'la plage des données (hors entête)
          .Offset(1).Resize(lRows - 1).FormatConditions.Delete    'plage à partir de la 2ième ligne jusqu'à la derniere, effacer les MFC dans cette plage
          .Resize(1).Copy     'copier la première ligne
          Application.EnableEvents = False
          .PasteSpecial Paste:=xlPasteFormats     'coller les MFC dans le reste
          Application.EnableEvents = True

          Application.Goto .Cells(0, 1)
     End With

     Application.CutCopyMode = False

End Sub

bonjour,

je vous montre la solution finale. Il y avait 3 feuilles différentes et les MFC etaient oubien des colonnes entières oubien de plages limitées. Donc il faut les traiter d'une manière différente (la première fois). Il y a la macro auxiliaire FixCondFormatDupRules (celle de Contextures mais modifiée) avec 3 variables, la plage elle-même, puis boolean le reste de la feuille ou pas et nombre de lignes supplémentaires. Puis la macro "MFCs", qu'on doit exécuter de temps en temps pour effacer toutes les formules MFC doubles. On appèle à chaque fois la macro "FixCondFormatDupRules" avec les propres valeurs des variables.

Sub MFCs()

     'feuille planning, il y a des MFC pour des colonnes entières, donc methode = true & coller les MFCs toute la plage + 50 lignes supplémentaires
     FixCondFormatDupRules Sheets("planning").Range("A1").CurrentRegion, True, 50

     'feuille terminé, il y a des MFC pour une plage limitée, donc methode = false & coller les MFCs toute la plage + 50 lignes supplémentaires
     FixCondFormatDupRules Sheets("terminé").Range("A1").CurrentRegion, False, 50

     'feuille dossiers mystères, les MFC commencent à partir de la ligne 121, alors il faut 1 fois copier & coller ce MFC vers la première ligne
     'With Sheets("dossiers mystères")
     '     .Rows(121).Copy
     '     .Rows(1).PasteSpecial Paste:=xlPasteFormats   'coller les MFC dans le reste
     'End With

    'feuille dossiers mystères, il y a des MFC pour des colonnes entières, donc methode = true & coller les MFCs toute la plage + 50 lignes supplémentaires
     FixCondFormatDupRules Sheets("dossiers mystères").Range("A1").CurrentRegion, True, 50

End Sub

Sub FixCondFormatDupRules(c As Range, Methode As Boolean, Optional iExtra As Integer)
     '******************************************************************************************************************
     'la première ligne de la plage sera copiée et collée sur le reste de la plage
     ' methode = false = effacer les MFCs à partir de la 2ième ligne de c jusqu'à la dernière ligne de c (eventuellement + iExtra lignes supplémentaires)
     ' methode <> false = = effacer les MFCs à partir de la 2ième ligne jusqu'à la dernière ljusqu'à la dernière ligne de la feuille
     '******************************************************************************************************************

     Select Case Methode
          Case False: Set c1 = c.Offset(1).Resize(c.Rows.Count - 1 + iExtra)
          Case Else: Set c1 = c.Offset(1).Resize(Rows.Count - c.Row)
     End Select

     c1.FormatConditions.Delete    'plage à partir de la 2ième ligne jusqu'à la derniere, effacer les MFC dans cette plage
     c.Resize(1).Copy     'copier la première ligne
     Application.EnableEvents = False
     c.Resize(c.Rows.Count + iExtra).PasteSpecial Paste:=xlPasteFormats   'coller les MFC dans le reste
     Application.EnableEvents = True

     Application.Goto c.Cells(1)

     Application.CutCopyMode = False

End Sub
Rechercher des sujets similaires à "effacer filtres bloque image"