Solution réduction fichier

Bonjour le forum ,j'ai encore besoin de réduire mon fichier original car trop lourd et pour ce faire ,je cherche une solution pour utiliser un seul Userform "dates" au lieu des 9 actuellement , est-ce possible merci de votre aide .

15fichier-de-calcul.zip (433.47 Ko)

Bonjour

Bah déjà j'enlèverai les couleurs blanches que vous avez mises sur toutes les feuilles sur plus d'un million de lignes !!!
C'est le genre de truc qui peut alourdir un fichier inutilement
- Sélectionner la totalité des feuilles
- mettez la couleur sur "Aucun remplissage" (l'option quadrillage est d'ailleurs décochée dans le menu Affichage)
- Après remettre les couleurs jaunes en place


Si je ne trompe la structure de toutes vos feuilles est identique
Donc allez dans le code Initialize et remplacez chaque ligne

ThisWorkbook.Sheets("Calcul 1")

par ceci

ThisWorkbook.ActiveSheet

Après il faudrait que tous vos tableaux en feuille calcul commencent à la même ligne surtout pour les noms définis dans le gestionnaire de noms
Dans les feuilles calcul 2 et 9 :
- la plage date commence en ligne 31 alors que dans les autres feuilles elle commence en ligne 32.
- Idem pour le tableau du bas qui doit commencer sur la ligne 50
Possible de corriger çà ?
De mon coté je corrige si ok pour vous

Autre question : vous n'aurez jamais plus de feuille nommée au dessus de Calcul 9 ?

Bonsoir Dan ,merci pour votre retour ,mon fichier a 22 feuilles mais seulement 9 sont utilisées avec ces userforms "Dates" .Sur le fichier original , je peux caler toutes les plages dates en lignes 31 et pour le tableau du bas, il est possible de le déplacer en ligne 50 .Cdlt

Bonjour

J'ai revu et adapté votre fichier.

Un point ennuyeux, c'est que je n'ai pas votre fichier complet. Là si je vous renvoie votre fichier vous devrez utiliser celui-là et pas celui que vous avez avec les 22 feuilles

Autre point, lorsque je regarde vos calculs vous utilisez 9 colonnes alors que 4 suffisent. Mais pourquoi fusionnez-vous toutes ces colonnes ?? De plus les fusions, VBA aime pas.
c'est fou le nombre de fois que je vois cela sur les fichiers.
Votre feuille serait idéalement comme ceci

image

Dites-moi si c'est faisable sachant que je vois à droite que devez probablement avoir d'autres données que vous avez effacées

Bonjour à toutes et à tous,

C'est peut-être une question bête mais sur mon Excel j'ai un vérificateur de performance. Je ne sais pas à quoi cela peut bien servir mais il semblerait qu'on puisse l'utiliser pour optimiser les performances. Quelqu'un a une idée là dessus?

re,

@fcyspm30 :
je n'ai pas cette fonctionnalité sur ma version mais une explication se trouve sur le site de MS --> https://support.microsoft.com/fr-fr/office/nettoyer-les-cellules-de-votre-classeur-edcc579f-b82f-495...
Mais cela peut être intéressant d'après ce que je lis sur ce lien.

Dans le cas du demandeur, on n'a pas son fichier complet donc ce n'est pas facile de savoir si la solution des usf va réduire considérablement le poids. Il y a de fortes chances qu'il y autre chose à voir.
Hormis cette histoire de couleur blanche trouvées sur toutes les feuilles il se peut que le fichier contient aussi beaucoup de formules, ou aussi un nombre de lignes ou colonnes trop important ou alors des objets divers.

J'attends ses commentaires pour poster son fichier revu

Re bonjour,
J'ai passé le fichier fourni par Cfab6 au vérificateur de performances et il me donne ce résultat:
Toutes les feuilles sont impactées. D'un clic il semblerait qu'on puisse rectifier ce qui ne va pas car cela ne touche que des cellules non utilisées.

capture d ecran 2024 08 01 095749

Re
Je fourni le fichier optimisé. Au départ il pesait 882ko maintenant il ne fait plus que 211ko. Impressionnant.

En revanche une video nous met en garde sur l'utilisation de l'outil sur certains points particuliers:https://www.youtube.com/watch?v=yc2NJIWc1Xc

Re

Effectivement mais c'est à faire sur son vrai fichier.
Ici c'est juste une indication. Lorsque vous regardez les feuilles, il utilise chaque feuilles jusque la colonne ACK !

Plus simple, faites ceci dans son fichier sans vous occuper de l'optimisation
- Sélectionnez les colonnes K à ACK dans chaque feuille
- click droite et choisissez l'option Supprimer

Enregistrez le fichier... le fichier passe de 800 k à 108 K !

Bonjour le forum et merci pour vos réponses ,concernant mon fichier original ,il fait 6 mo ,c'est un fichier complexe de gestion de congés ,je ne peux pas vous faire parvenir l'original à cause de sa taille mais aussi pour des raisons de confidentialité de mon entreprise .Mais vos remarques sont pertinentes et je vais déjà dans un premier temps tenter de corriger les erreurs de cellules fusionnées .J'ai déjà effectué les modifications de couleurs de cellules sur l'original et en effet il y a du mieux mais le fait de pouvoir réduire le nombre de Usf "dates" serait un plus . Merci de votre aide

Ok mais si vous corrigez les fusions on doit adapter le code aussi

Donc voici votre fichier en retour avec les modifications sans avoir adapté les feuilles calcul en fonction du modèle dont vous avez l'image dans mon post précédent.
J'ai toutefois laissé la feuille Modèle. Le bouton sur cette feuille est inactif bien entendu

Dans le fichier :
- une seule USF Dates
- suppression des noms dans le gestionnaire de noms et qui ne servent plus

Faites déjà un test sur chaque bouton de chaque feuille (sauf feuille modèle)

Bonjour Dan ,merci pour votre travail ,avec votre fichier j'ai pu adapter sur mon fichier original en mettant en pratique vos conseils dans la mesure du possible.C'est déjà un peu mieux au niveau de son fonctionnement mais je pense pouvoir mieux faire ,je vais tenter d'anonymiser le fichier original et le réduire pour poster une nouvelle demande car j'ai détecté une autre possibilité de travail pour en alléger son fonctionnement .Merci en attendant et merci au autres personnes du forum .

Rebonjour voici mon fichier original bien dégraissé ,est-il possible d'utiliser qu'une seule trame pour les deux feuilles de calcul ?.

10fichier-de-calcul.zip (410.85 Ko)

Bonjour,

Heu c'est un peu dans la même ligne que votre demande du début de ce fil mais je pense que vous auriez dû ouvrir un nouveau fil sur le sujet....

Sinon quelques commentaires :Toujours vos fusions de cellules. Vous utilisez 7 colonnes alors que vous n'avez besoin que de 4 colonnes.

Dans le module 5 et 7, vous déclarez deux fois la même chose dans les variables public.
Si elles sont public on ne les déclare qu'une fois dans le fichier. Donc passez les en DIM dans chaque module


Sinon faites déjà ceci
1. Supprimez l'USF calcul_2
2. renommer l'USF calcul_1 en --> CALCUL
3. Dans l'usf renommée en calcul, code Private Sub CommandButton1_Click()
- Remplacez CALCUL_1 par ME
- entre le on error goto 0 et le exit sub, ajoutez les lignes ci-dessous

If Right(ActiveSheet.Name, 1) = 1 Then
    Call Recherche_Demarrage_dans_Trame1
Else: Call Recherche_Debut_dans_Trame2
End If

4. dans le code Private Sub CommandButton2_Click(), remplacez CALCUL_1 par ME
5. Module 5,
5.1 dans le code remplacez le code

Sub ouvertureCalcul_1()
Calcul_1.Show
End Sub

par

Sub ouvertureCalcul()
Calcul.Show
End Sub

5.2 Déplacez la déclaration des 2 variables ci-dessous et mettez la juste en dessous de Sub Recherche_Debut_dans_Trame1()

Dim f1 As Worksheet, f2 As Worksheet

6. Module 7
6.1 supprimez le code Sub ouvertureCalcul_2()
6.2 idem que le 5.2 ci-dessus mais pour la Sub Recherche_Debut_dans_Trame2()

Une fois fait dites-moi.
Je regarderai pour les choses à modifier dans les modules

Bonsoir Dan ,j'ai fait les modifs mais j'ai du faire des erreurs car ça ne fonctionne pas ,j'ai une erreur d'exécution sur le module 7.

Bonjour,

Mais déjà pourquoi allez vous changer le nom de la feuille Calcul 1 en ME.

je ne vous ai pas écrit de changer le nom de l'onglet ! Donc remettez CALCUL 1 ! et changez aussi dans le code du module 5 (à set f1 =.....

j'ai une erreur d'exécution sur le module 7.

Allez dans l'USF calcul et dans le code Private Sub CommandButton1_Click(), juste en dessous de WITH ME, ajoutez ces lignes

If Right(ActiveSheet.Name, 1) = 1 Then
    Date_Demarrage = CDate(.TbxCar1.Text) * 1
Else: Date_Debut = CDate(.TbxCar1.Text) * 1
End If

Après vous allez encore avoir des erreurs donc j'aimerais bien que vous me donniez un exemple de ce que l'on remplir dans les textbox de l'usf si vous voulez que je continue et que je comprenne

Ne me repostez pas votre fichier

Bonjour Dan ,j'ai corrigé et le calcul 1 fonctionne parfaitement et le calcul 2 également mais il fallait aussi modifier valeurs du module 7 :CA,CO,CT,QT,CE en CA1,CO1,CE1,CT1,QT1 .

Voici les valeurs par exemple :Car 15/12/2025, CE:50, CA:50, C0:50, CT:50 , QT:5, ID: 2

Bonjour,

mais il fallait aussi modifier valeurs du module 7 :CA,CO,CT,QT,CE en CA1,CO1,CE1,CT1,QT1 .

Oui il faut aussi modifier dans le module 7 mais vous n'aviez pas besoin du chiffre 1 justement.
Vous auriez même pu supprimer ce chiffre dans le nom des textbox de l'USF
De mon coté je l'avais supprimé.
Les deux codes sont identiques mais agissent sur des feuilles différentes. On pourrait ne plus avoir qu'un seul code si vous voulez ?

En effet ce serait idéal de n'avoir qu'un code mais n'oubliez pas que j'ai allégé mon fichier original, il y a 9 feuilles de calcul avec 9 modules ,si vous pensez que c'est faisable OK ,mais est-il possible aussi de pouvoir regrouper les trames en une seule avec 3 colonnes pour chaque calcul ?.

,mais est-il possible aussi de pouvoir regrouper les trames en une seule avec 3 colonnes pour chaque calcul ?.

A analyser car là actuellement je ne fait que corriger dans les codes.

Rechercher des sujets similaires à "solution reduction fichier"