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 ?
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 Subbonjour,
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