Procédure trop grande

Bonjour,

J'ai un problème de procédure trop grande quand je veux importer des données stockées sous Excel via une combobox.

Voici le code:

Me.Nom_Fichier = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 1), "0.00")

Me.E1 = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 2), "0.00")

Me.E2 = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 3), "0.00")

Me.OUVERTURE = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 4), "0.00")

Me.TensionT0 = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 5), "0.00")

Me.PressionETE = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 6), "0.00")

Me.PressionHIVER = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 7), "0.00")

Me.Gravite = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 8), "0.00")

Me.LPMini = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 9), "0.00")

Me.RefSG = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 10), "0.00")

Me.RefSD = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 11), "0.00")

Me.ChoixCP = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 12), "0.00")

Me.MLPorteur = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 13), "0.00")

Me.TRPorteur = Format(Worksheets("Enregistrement_resultats").Cells(Me.ChargementCalcul.ListIndex + 2, 14), "0.00")

Je ne colle pas tout mais cette procédure contient 500 lignes et VBA n'aime pas trop :/

Est-ce que quelqu'un pourrait me dire comment alléger mon code histoire que ça passe ?

Merci d'avance

Morgan

Bonjour,

Ya pas de petites économies : donc tu pourrais commencer par...

  • mettre des noms courts.
  • supprimer les Me
Hum... pour le coup E1 c'est un peu radin pour un nom de contrôle

Chez moi ça donnerait

With Worksheets("Res")
FileN = Format(Cells(CbC.ListIndex + 2, 1), "0.00")
Eg1 = Format(.Cells(CbC.ListIndex + 2, 2), "0.00")
Eg2 = Format(.Cells(CbC.ListIndex + 2, 3), "0.00")
Opn = Format(.Cells(CbC.ListIndex + 2, 4), "0.00")
...
End With

ça c'est le minimum syndical.

Ensuite on peut faire nettement mieux (en 3 lignes) à condition d'être très rigoureux dans la construction du USF :

Nommer tous les contrôles dans l'ordre :

Tb1, Tb2, Tb3... Tb500...

Ensuite :

Sub InitTb()
Dim i As Integer
With Worksheets("Res")
    For i = 1 To 500
    Me.Controls("TextBox" & i) = Format(.Cells(CbC.ListIndex + 2, i), "0.00")
    Next i
End With
End Sub

A+

Bonjour Morgan, bonjour le forum,

Je ne comprends pas où se situe ton problème dans le bout de code que tu proposes. On peut certes le simplifier comme ça :

Dim ER As Worksheet
Dim LI As Integer

Set ER = Sheets("Enregistrement_resultats")
LI = Me.ChargementCalcul.ListIndex + 2
Me.Nom_Fichier = Format(ER.Cells(LI, 1), "0.00")
Me.E1 = Format(ER.Cells(LI, 2), "0.00")
Me.E2 = Format(ER.Cells(LI, 3), "0.00")
Me.OUVERTURE = Format(ER.Cells(LI, 4), "0.00")
Me.TensionT0 = Format(ER.Cells(LI, 5), "0.00")
Me.PressionETE = Format(ER.Cells(LI, 6), "0.00")
Me.PressionHIVER = Format(ER.Cells(LI, 7), "0.00")
Me.Gravite = Format(ER.Cells(LI, 8), "0.00")
Me.LPMini = Format(ER.Cells(LI, 9), "0.00")
Me.RefSG = Format(ER.Cells(LI, 10), "0.00")
Me.RefSD = Format(ER.Cells(LI, 11), "0.00")
Me.ChoixCP = Format(ER.Cells(LI, 12), "0.00")
Me.MLPorteur = Format(ER.Cells(LI, 13), "0.00")
Me.TRPorteur = Format(ER.Cells(LI, 14), "0.00")

Cela ne fait que simplifier l'écriture, l'exécution du code reste la même... Pourrais-tu nous dire où et quand ça plante ?

[Édition]

Bonjour Galopin on s'est croisé...

C'est nickel ! merci ThauThème et galopin01 pour votre aide. Mon code avait juste besoin d'être simplifié afin que le message d'erreur "procédure trop grande" n'apparaisse pas.

Bonne soirée

Morgan

Rechercher des sujets similaires à "procedure trop grande"