Aide pour Optimisation Macro

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

  • aide_macro.zip
    5 KB · Affichages: 28
  • aide_macro.zip
    5 KB · Affichages: 25
  • aide_macro.zip
    5 KB · Affichages: 22
@

@+Thierry

Guest
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
 

Statistiques des forums

Discussions
312 606
Messages
2 090 183
Membres
104 441
dernier inscrit
Dobbzzz