Verification de l'erreur

Fermé
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013 - 12 sept. 2013 à 16:55
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013 - 16 sept. 2013 à 14:30
Bonjour,

J'ai créeé une macro et sa prend beaucoup de temps pour s'executer, je souhaite utiliser le fonction Msg Box pour savoir ou sa bloque mais j'arrive pas à bien l'écrire .

voici ma macro en fait je veut verifier sur quel terme elle bloque...

For terme = 12 To 17

formule = "=" & Cells(8 + 43 * (vitesse - 1), 24 + terme - 1).Value & "*N" & (41 + 43 * (vitesse - 1)) & " ^ 6 + " & Cells(9 + 43 * (vitesse - 1), 24 + terme - 1).Value ... (ca continue)

End With

MsgBox ???

Next terme

Merci d'avance
A voir également:

2 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 sept. 2013 à 17:10
Bonjour,

Si ça prend beaucoup de temps, c'est que ça ne bloque pas :-/
Peut-être que ton code est à optimiser pour qu'il en prenne moins.
=> soit tu nous donnes tout le code, soit tu nous transmets le fichier via https://www.cjoint.com/

A+
0
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013
13 sept. 2013 à 09:20
Voici mon fichier de travail

http://cjoint.com/13sp/CInjntgxlwP.htm

alors j'explique le but final de ce fichier et de la macro c'est d'avoir la ligne des valeurs(ligne 39 pour vitesse 100% , ligne 39+43i pour le reste des vitess) pour un débit donné avec les coefficient en brut, la macro exécute parfaitement l'operation et cree une ligne en dessous ou les coefficient sont en brut et sa donne par exemple
0,00106430206581446*N41 ^ 6 + -0,0162123797053831*N41 ^ 5 + 0,0893517601820511*N41 ^ 4 ...

J'ai deux probleme pour l'instant :

* Le premier ca prend beaucoup de temps pour s'executer
* Le deuxieme c'est que dans la formule en brut que j'obtient je dois la copier dans un autre fichier exploitable sauf que le terme de la cellule N41 ou autre pour une autre cellule change quand je copie colle les infos que je veut...

merci A+
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 13/09/2013 à 11:33
Je me souviens maintenant, avec les coefficients et les valeurs, tout ça, et les courbes qui ne se croisent pas...
Tu as toujours la solution de concaténer (c'était moi, mais je n'avais pas compris que tu voulais le résultat dans la case) et de rédiger des formules classiques dans ton tableau.

Sinon, pour accélérer le calcul :
- un truc simple c'est de définir la variable "case" case="N41" dans le premier cas, ça évite que la macro recalcule à chaque fois
- idem pour la multiplication de 43*(vitesse-1) et 24 + terme -1 à mettre chacun dans une variable (et à faire une fois par vitesse et une fois par terme ; attention aux imbrications)

De plus le With Worksheets() ne sert à rien.

Ceci fait, indique-nous si la vitesse d'exécution est toujours trop lente
0
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013
13 sept. 2013 à 11:40
okai merci Zoul67 je vais essayer de mettre en application tous ca et je tiens au courant
0
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013
13 sept. 2013 à 11:42
oui exactement pour le concatner j'avais pas préciser qu'il me fallait le résultat dans la case ...
0
messin57000 Messages postés 67 Date d'inscription lundi 2 septembre 2013 Statut Membre Dernière intervention 9 décembre 2013
16 sept. 2013 à 09:19
salut Zoul67

J'ai essayé d'appliquer ce que tu m'a conseiller sauf que j'ai pas réussi à bien introduire la variable et je vois pas l'integrer dans la boucle...
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
16 sept. 2013 à 10:46
Salut messin57000,

En fait, ta macro s'appelait elle-même, c'est ça qui rendait l'exécution très longue... jusqu'à ce qu'une erreur apparaisse (dernière ligne : Call MAJsim_BB_New). Rien qu'en corrigeant ça, ça devrait aller, mais comme je ne l'ai vu que tardivement, j'ai aussi optimisé les variables calculées précédemment de nombreuses fois.

Code :
Sub MAJsim_BB_New()


Dim wrksht As Object, graphique As Object, série As Object, shp As Object
Dim formule As Variant
Dim vitesse As Integer, terme As Integer
Dim case_n As String
Dim modulo_ligne As Integer, colonne_form As Integer

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For vitesse = 1 To 8 '8 : 100%, 90%, ..., mini
case_n = "*N" & (41 + 43 * (vitesse - 1))
modulo_ligne = 43 * (vitesse - 1)
For terme = 1 To 10 ' 10 : de I0 à N
colonne_form = 24 + terme - 1
formule = "=" & Cells(8 + modulo_ligne, colonne_form).Value & case_n & " ^ 6 + " & _
Cells(9 + modulo_ligne, colonne_form).Value & case_n & " ^ 5 + " & _
Cells(10 + modulo_ligne, colonne_form).Value & case_n & " ^ 4 + " & _
Cells(11 + modulo_ligne, colonne_form).Value & case_n & " ^ 3 + " & _
Cells(12 + modulo_ligne, colonne_form).Value & case_n & " ^ 2 + " & _
Cells(13 + modulo_ligne, colonne_form).Value & case_n & " ^ 1 + " & _
Cells(14 + modulo_ligne, colonne_form).Value
Cells(41 + modulo_ligne, 4 + terme - 1).FormulaLocal = formule
Next terme
For terme = 12 To 17 ' 10 : de I0 à N
colonne_form = 24 + terme - 1
formule = "=" & Cells(8 + modulo_ligne, colonne_form).Value & case_n & " ^ 6 + " & _
Cells(9 + modulo_ligne, colonne_form).Value & case_n & " ^ 5 + " & _
Cells(10 + modulo_ligne, colonne_form).Value & case_n & " ^ 4 + " & _
Cells(11 + modulo_ligne, colonne_form).Value & case_n & " ^ 3 + " & _
Cells(12 + modulo_ligne, colonne_form).Value & case_n & " ^ 2 + " & _
Cells(13 + modulo_ligne, colonne_form).Value & case_n & " ^ 1 + " & _
Cells(14 + modulo_ligne, colonne_form).Value
Cells(41 + modulo_ligne, 4 + terme - 1).FormulaLocal = formule
Next terme
Next vitesse

'REMPLACE LES FORMULES DES GRAPHIQUES PAR LEURS VALEURS

For Each graphique In Worksheets("BLACK-BOOK").ChartObjects
For Each série In graphique.Chart.SeriesCollection
série.Values = série.Values
série.XValues = série.XValues
série.Name = série.Name
Next série
Next graphique

Set graphique = Nothing
Set shp = Nothing

Worksheets("BLACK-BOOK").Activate

Application.Calculation = xlCalculationAutomatic

End Sub

0