Bonjour à tous,
J'ai récemment modifié une grosse partie d'un code pour y intégrer des tableau structurés, ma table ayant pour but d'être changeante, cela m'apporte beaucoup moins de problèmes.
Cependant j'ai une certaine lenteur dans certains modules lorsque qu'ils sont appliqués plusieurs fois, le fichier finit par figer et je dois quitter et relancer. La table et les macros sont assez lourdes, cela gère des dossiers Windows, du Outlook, du PDF en plus des tables Excel, avec beaucoup de find dans deux tables différentes qui cumulent quasi à 5000 lignes sur 20 colonnes, lignes qui augmenterons d'environ 2500 chaque année...
Je réinitialise bien mes Objets à chaque fin de SUB, je suis passé par du "Select Case" au lieu des "IF" multiples, mais cela ne semble pas suffisant. J'ai donc quelques questions pour tenter de simplifier toutes ces recherches.
1) Est-ce que trier une colonne pour afficher moins de lignes permettrait de simplifier la recherche ou il va chercher sans tenir compte du tri ?
2) J'utilise pas mal le "With" pour simplifier mon code exemple: With [Table_SP].ListObject mais y aurait-il un intérêt a déclarer une variable courte pour éviter de répéter le [Table_SP].ListObject ?
3) J'utilise le find pour chercher une valeur dans une colonne, peut-être existe-t'il un moyen moins gourmand ? En général je procède ainsi:
'Initialisation des objets
Set Colonne = [Table_SP[Numéro d''offre]]
Set Recherche = Colonne.Find(UT2_TB_Offre)
If Recherche Is Nothing Then
MsgBox "L'offre " & UT2_TB_Offre & " n'existe pas.", vbExclamation, "Erreur"
UT2_TB_Offre = vbNullString
'Réinitialisation des objets
Set Colonne = Nothing
Set Recherche = Nothing
Exit Sub
End If
'Recherche de la ligne devis
Ligne = Recherche.Row - [Table_SP].ListObject.HeaderRowRange.Row 'Ligne du tableau structuré
'Réinitialisation des objets
Set Colonne = Nothing
Set Recherche = Nothing
'Suite du code...
Merci.