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 :
@+Thierry