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

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 re 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 et pour trier facilement.

Le fichier en exemple est quasiment aussi rempli (1500 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.

15test-mfc.xlsm (223.07 Ko)

Bonsoir,

Ton classeur se comporte normalement (il est vrai que je suis sous 2010) sans lenteur et en réagissant apparemment bien...

Cependant lors du passage dans l'éditeur on constate bien la présence de 3 modules feuilles pour les 3 feuilles existantes et du module classeur, mais on trouve en outre sous l'appellation FeuilX (et un ThisWorkbook1) 15 modules fantômes d'objets inexistants, et ce sont tous des ersatz de modules classeur...

Je ne sais pas comment on arrive à cette situation, mais j'en ai déjà vu une ou deux fois sur des questions, je ne sais pas non plus comment on en sort ni si on peut en sortir. Je préconise donc volontiers en pareil cas la recomposition d'un nouveau classeur, et sans import d'aucun élément de l'ancien (procéder par copie des données pour reconstituer les feuilles, ce sera assez rapide il n'y en a pas trop...)

Tu pourras en profiter pour concentrer tes macros dans un seul module Standard (j'avoue ne pas comprendre ce qui peut pousser à multiplier ainsi les modules en éclatant un macro par module, cela n'a rien de rationnel et fait en plus perdre un temps considérable, outre augmenter sans raison le poids du classeur...)

Pour les macros elles-mêmes, je n'ai vu que du code enregistré, donc à réécrire entièrement... (cela ferait fondre le volume global de code de moitié et sans doute des deux-tiers).

Cordialement.

Bonjour MFerrand,

Oui j'ai vu ces feuilles fantomes. La seule piste que j'ai pour ca, c'est que j'ai essayé de modifier ce fichier avec LibreOffice.

En vitesse ca fonctionne très bien, mais à l'enregistrement ca change bcp de parametres visuel.

Je ne connais pas LibreOffice, ca m'a l'air bien mais pas en cohabitation avec Excel dans un monde PRO.

Merci pour le conseil, je vais tout remettre dans un module.

(j'avais mis chaque fonction dans un module pour gagner en lisibilité)

Pour le code pour le formatage conditionnel, j'avais lu plusieurs fois que c’était plus simple d'utiliser l'enregistreur pour avoir le meme rendu visuel. (code couleur notamment)

Je n'ai trouvé aucune ressource compréhensible et simple pour coder de la MFC...

Bonjour,

En matière de MFC la situation est ambivalente, la documentation n'a pas bougée alors que le domaine s'est enrichi avec les nouvelles versions, alors effectivement dans les cas douteux, on fait un échantillon d'enregistrement qu'on fait varier pour détecter les éléments d'infos non documentés.

Pour ce qui a toujours existé, notamment l'utilisation de formules, aucune difficulté, ça s'écrit les yeux fermés. C'est pour les nouveautés depuis 2007, qu'on doit aller à la pêche pour détecter les infos que Microsoft ne fournit plus...

A noter la particularité des formules MFC codées en VBA, elles sont dans la langue utilisateur.

Ta procédure de MFC recompactée un peu :

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
End Sub

Parmi les rajouts inutile de l'enregistreur, un seul pourra s'avérer éventuellement utile dans quelques cas : la propriété StopIfTrue (et c'est dans le cas où deux MFC peuvent entrer en conflit sur les mêmes cellules), mais ce n'est pas l'enregistreur qui va pouvoir trancher la question, c'est en fonction du résultat obtenu selon les cas par rapport à ce qu'on souhaite.

Pour les couleurs, l'enregistreur met toujours 3 lignes au moins là où une suffit... Il faut savoir que toute couleur affichable est définissable en une ligne au moyen de la fonction RGB, le plus pratique à utiliser car il suffit d'aller chercher les valeurs des 3 composantes de la couleur... Comme la boîte de dialogue couleurs est composite, selon les touches qu'on utilise l'enregistreur l'enregistrera différemment. Mais les thèmes de couleurs ne sont qu'un mode de regoupement et d'utilisation différent des couleurs, qui ne changeront pas si on les définit par leur valeur RGB. Je ne doute pas qu'il y a sans doute des choses intéressantes à tirer des thèmes de couleurs, mais vu la doc. en la matière... je n'ai encore vu personne les utiliser consciemment pour obtenir un résultat !

Cordialement.

Bonjour a tous

j'ais fait un peux de ménage

A+

Maurice

8test-mfc1.xlsm (219.80 Ko)

Merci pour votre aide.

J'ai essayé mais c'est tjrs lent.

Sans ce focaliser sur mon pb, comme MFerrand le dit, pourquoi c'est OK avec 2010 et pas 2016 ?

Si on change de point de vue, est ce possible de "paramétrer" 2016 comme 2010 ?

D'habitude les montée de version gagne en puissance, qui peut le plus peut le moins normalement ?

Si vous avez des idées je suis preneur.

Rechercher des sujets similaires à "lenteur fichier leger 1500 480ko formatage conditionnel 2016"