Ralentissement

Fermé
Benoit69005 Messages postés 29 Date d'inscription vendredi 9 août 2019 Statut Membre Dernière intervention 23 janvier 2024 - Modifié le 7 mars 2021 à 01:08
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 - 9 mars 2021 à 04:01
Bonjour à tous,

Je repose cette question ici, car j'ai du me tromper de forum la première fois. Je retente ici, j'aurai peut-être plus de chance.


Je viens de commencer la création d'un petit CRM avec une page d'accueil, des boutons renvoyant vers certains onglets qui sont cachés à l'ouverture. Sur ces onglets, une flèche de retour renvoyant sur l'onglet d'accueil.

J'ai du mal faire un truc car ce fichier pourtant si léger a des ralentissements. J'ai déjà désactivé toutes mes formules. Toujours ralentissement, donc cela doit venir de mes macros. Mais là je bloque.

La macro qui affiche et sélectionne les onglets activés par boutons (un bouton = une macro qui ouvre un onglet) :

Sub Onglet_Fournisseurs()
With Sheets("Fournisseurs")
.Visible = True
.Select
End With
If Range("A2") <> "" Then
Range("A65000").End(xlUp).Offset(1).Select
Else
Range("A2").Select
End If
Sheets("Accueil").Visible = False
End Sub


La macro qui renvoit sur l'onglet Accueil

Sub Retour_Accueil()
Sheets("Accueil").Visible = True
ActiveSheet.Visible = False
Sheets("Accueil").Activate
Range("A1").Select
End Sub

Mon fichier :
https://mon-partage.fr/f/dBwVptvH/

Une idée?

Merci à vous
Benoît

3 réponses

dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
9 mars 2021 à 04:01
J'ai remarqué, après coup, qu'il y avait parfois 2 cellules différentes. J'ai réadapté le main. D'ailleurs je ne l'ai pas créé.

Je fais des
call
de chaque sub pour l'assigner à tes boutons.

J'ai une erreur pour le bouton "compta chantiers". Est-ce que tu l'as aussi ? Normalement non. J'ai dû faire une bêtise dans le backup de ton fichier, j'ai perdu une feuille, celle qui mène vers "compta chantiers"

En refactorisant les sub, je suis passé d'un fichier de 172 KB à 43 KB. Bon, avec la feuille "compta chantiers" manquante, le fichier devrait faire plus de 43 KB.
1
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
7 mars 2021 à 02:20
Salut,

Quand surviennent ces ralentissements ?

Tu as un classeur rempli de données je pense. Avec LibreOffice, je ne constate pas de ralentissement. Avec tes macros, je navigue de feuille en feuille.

Si tu as des données. Fais une sauvegarde et ouvre le classeur sans les données. Constates-tu les mêmes ralentissements ?
0
Benoit69005 Messages postés 29 Date d'inscription vendredi 9 août 2019 Statut Membre Dernière intervention 23 janvier 2024
8 mars 2021 à 22:38
Bonsoir,

Les ralentissements surviennent quand j'essaie d'ouvrir des menus de format, par exemple quand je clique sur figer les volets, ou le bouton de format des nombres...Je ne penses pas avoir fait de fautes dans mes macros qui sont très légères il me semble. Je dois avoir un problème de conception des feuilles, mais lequel?
0
dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 148
8 mars 2021 à 23:17
Salut,

J'ai figé une colonne après un énorme zoom, puis, j'ai utilisé l'ascenseur. Aucune différence de vitesse colonne figée ou non.

Tu as testé sans les données ? Je vois A65000 dans ta macro, s'il y a 6 octets (6 caractères) par ligne, ça fait 380 KB.

Tu peux aussi diagnostiquer les macros en général. Tu les désactives, tu fais les mêmes actions qui ralentissent Excel. Si ça ne ralentit pas, c'est sans doute un problème de macro. Dans ce cas, tu en actives une, tu refais le diagnostic, et ainsi de suite.

Je ne sais pas bien lire le VBA mais on dirait que tu n'as pas factorisé tes macros.

Je prends 2 sub :

Sub Onglet_Fournisseurs()

With Sheets("Fournisseurs")
.Visible = True
.Select
    
End With

If Range("A2") <> "" Then
    Range("A65000").End(xlUp).Offset(1).Select
Else
    Range("A2").Select
 
End If

Sheets("Accueil").Visible = False


End Sub
Sub Onglet_Sous_traitants()

With Sheets("Sous-traitants")
.Visible = True
.Select
    
End With

If Range("A2") <> "" Then
    Range("A65000").End(xlUp).Offset(1).Select
Else
    Range("A2").Select
 
End If

Sheets("Accueil").Visible = False


End Sub


Tu pourrais essayer et adapter selon la façon d'appeler les sub :
sub onglet(feuille as string)

with Sheets(feuille)
.visible = True
.select
end with

if range("A2") <> "" then
    range("A65000").end(xlUp).offset(1).select
else
    range("A2").select
end if

sheets("Accueil").visible = False

end sub

sub main
' J'ai besoin de l'onglet Fournisseurs :
    onglet("Fournisseurs")

' J'ai besoin de l'onglet Sous-traitants :
    onglet("Sous-traitants")
end sub
0