Aide pour Optimisation Macro

  • Initiateur de la discussion Initiateur de la discussion Blues
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Blues

Guest
Bonjour Forum,

J'ai mis en fichier joint 2 macros fonctionnelles (elles sont au format exporter : frm, frx). Etant novice en la matière, j'aurais voulu savoir si elles étaient correctes. En effet, j'ai peur d'avoir intégré des notions qui ne servent à rien, si se n'est à l'alourdir. Vous est-il était possible d'y jeter un coup d'oeil.

Je vous remercie d'avance.
 

Pièces jointes

Bonjour Blues, le Forum

J'ai survolé tes codes, voici mes remarques vite fait, en vrac :

Toujours mettre "Option Explicit en début (Top) de Module, celà t'obligera à déclarer tes Variables :

Dans => FORMnewportefeuille / Private Sub UserForm_Activate
Dim i As Byte
Dim p As String

Dans => FORMnewportefeuille / Private Sub BTcreer_Click()
Dim ActWB As Workbook

Ne Jamais déclarer les Variables de cette manière :
Dim i, j, p, d As Integer

Mais Toujours comme ceci :
Dim i As Integer, j As Integer, p As String, d As Integer
(La Syntax que ta as employée équivaut à déclarer i, j et p As Variant)

D'ordre plus général à propos des Variables, tu as droit à 255 Caractères, alors mis à part pour le classique i (For i = 1 to 100), pour les Variables de Type String on leur donne un nom plus explicite (PortFolio au lieu de ton "p", par exemple)

Idem, pour les noms de Controls ActiveX, quand tu nommes une ComboBox "LISTEdates", ce n'est pas du tout conventionel, on préfèrera toujours se relire avec, par exemple "CbxListeDate"...

Par ailleurs toujours éviter de faire des "Select" quand celà n'est pas nécessaire, car celà ralentit de beaucoup l'exécution, par exemple :

Au lieu de ceci :
Range("a1").End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Return " + TXTx.Text

Il vaut mieux faire ceci :
Dim Col as Byte
With ActWB.Sheets("LaFeuilleConcernée")
   Col = .Range("a1").End(xlToRight).Column + 1
   .Cells(1, Col) = "Return " & TXTx.Text
End With

Ensuite, une dernière remarque, lorsque tu as écrit ton code, pense à bien indenter aussi tes codes, tu as des boutons prévus à cet effet dans la barre d'outils "Edit", car ceci est plus lisible :

Sub Test()
   For L = 1 To 250
       For C = 1 To 3
          If Cells(L, C) = "" Then Exit For
             CbxListeDates.AddItem Cells(L, C)
       Next X
   Next i
End Sub

Que ceci :
Sub Test()
For L = 1 To 250
For C = 1 To 3
If Cells(L, C) = "" Then Exit For
CbxListeDates.AddItem Cells(L, C)
Next X
Next i
End Sub

Voilà, sans faire aucun test bien sûr de tes codes et sans bien vraiment saisir l'utilité des formules et autre ouverture de fichier qui me semble bien lourd...

Bonne Continuation et "Welcome to the VBA World" et of Course :

Bienvenue_XLD.gif


@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour