XL 2016 Lenteur avec fichier léger (1500 L-480ko) avec formatage conditionnel

s8fx

XLDnaute Nouveau
Hello,

j'ai besoin de vous pour revoir/corriger mon fichier.
(je fais du VBA light, je comprends (lentement ) mais j'essaye en tout cas)
Nous etions en excel 2010 est mon fichier fonctionnait bien.
Nous sommes passés en 2016 et la c'est assez lent (défilement de la page) mais surtout dans la saisie 4-5 sec pour valider du texte et passer à la cellule d'apres.
(Je pensais m'habituer mais non et evidement je ne peux pas ré utiliser 2010 sur mon poste pro)

Voici le besoin :
Onglet "CABLAGE"
Ce sera toujours la meme une ligne type ,
En A une liste déroulante, (selon onglet ROCADES) avec formatage conditionnel de couleur selon le texte.
En B/C et N/O une formule pour afficher des infos,selon le nom ( vu en D/P), trouvées dans l'onglet INDEX.
En D/P, du texte simple, avec formatage conditionnel de couleur si le texte n'existe pas dans l'onglet INDEX.
En G/J/M, du texte simple, avec formatage conditionnel de couleur si le texte est en doublon dans ces 3 colonnes.
En H/K, en fonction de la colonne A, une liste apparait selon texte de l'onglet ROCADES.
en plus de H a M, un formatage conditionnel si vide = NOIR.

Pas de macro automatique.
Juste 2 boutons pour remettre la mise en forme propre (aprés insertion données) et pour trier facilement.

Le fichier en exemple est quasiment autant rempli (1700 lignes) que le vrai fichier.

Chez moi, le défilement à la molette / la recherche génère un affichage sacadé/lent.
Pour l'ajout de texte c'est la galère...
de dois ajouter 15-20 lignes par jour en moyenne et supprimer alléatoirement 40-50 par mois.

Vous trouverez des lignes de test au début de l'onglet CABLAGE.

Je suis a court d'idée après avoir essayer d'améliorer ce que je pouvais.
j'en suis arrivé a passer ce fichier en calcul manuel mais ca ne m'arrange pas trop (et ne me fait pas gagner tant de temps que ca)
Vous vous doutez que la contrainte ce n'est pas le volume (1500 lignes pour 480 ko) mais la mise en forme.
(sans mise en forme conditionnelle, ca fonctionne bien)
Je ne dois pas la perdre pour gagner en lisibilité.
(j'ai lu tres souvent qu'il fallait s'en passer, mais alors pourquoi ca fonctionne en 2010 et pas en 2016...)

Je suis ouvert à toutes vos idées de codes ou meme de repenser le fichier. (avec un peu d'aide alors )

Merci à vous tous.
 

Pièces jointes

  • TEST_MFC.xlsm
    200.7 KB · Affichages: 39

Jauster

XLDnaute Occasionnel
Hello,
Je ne pense pas être assez "calé" en VBA encore pour donner une piste d'optimisation. Mais je vois que screenupdating reste en False et ne repasse pas en True à la fin de la macro. Aucune idée si ça peut influencer le fichier par la suite, mais on sait jamais.
 

Cyr39

XLDnaute Nouveau
bonsoir,
effectivement en réactualisant l'affichage ca marche
Sub MEF_Brass()
Application.ScreenUpdating = False
With Worksheets("CABLAGE")
.Cells.FormatConditions.Delete
With .Range("A1:A1700").FormatConditions
.Add(xlTextString, , , , "RJ", xlContains).Interior.Color = RGB(255, 192, 0)
.Add(xlTextString, , , , "FO", xlContains).Interior.Color = RGB(172, 185, 202)
End With
.Range("D1:D1700,P1:p1700").FormatConditions.Add(xlExpression, , _
"=NB.SI(INDEX!$E$2:$E$2000;D1)=0").Interior.Color = RGB(198, 224, 180)
.Range("H1:J1700").FormatConditions.Add(xlExpression, , "=$H1=""""") _
.Interior.Color = vbBlack
.Range("K1:M1700").FormatConditions.Add(xlExpression, , "=$K1=""""") _
.Interior.Color = vbBlack
.Range("I1:J1700").FormatConditions.Add(xlExpression, , "=($H1=""DIRECT"")") _
.Interior.Color = vbBlack
.Range("G1:G1700,J1:J1700,M1:M1700").FormatConditions.Add(xlUniqueValues, _
xlDuplicate).Interior.Color = vbRed
End With
Application.ScreenUpdating = True
End Sub
 

Discussions similaires