Verification de l'erreur
messin57000
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
messin57000 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
messin57000 Messages postés 67 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Verification de l'erreur
- Verification lien internet - Guide
- Verification windows 11 - Guide
- Verification de l'identité du serveur impossible - Forum WiFi
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
2 réponses
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+
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+
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+
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+
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
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
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 :
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