Bonsoir,
Prenons 3 cellules x,y z avec y=f(x) et z=f(y).
Si le calcul de f en z commence avant la fin du calcul de f en y, excel tourne en rond "ad aeternam"
Que faire?
Je vous remercie de vos informations.
alainfa
Bonsoir,
Prenons 3 cellules x,y z avec y=f(x) et z=f(y).
Si le calcul de f en z commence avant la fin du calcul de f en y, excel tourne en rond "ad aeternam"
Que faire?
Je vous remercie de vos informations.
alainfa
Salut,
je ne comprends pas. A quel niveau cela pose problème ?
Tu peux très bien avoir en
- A1 la valeur 2
- en B1 la formule "=A1*A1" (affichant 4)
- en C1 la formule "=B1*B1" (affichant 16)
![]()
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
De la façon suivante:
d'abord je définis une fonction VBA par exemple' Scho' pour obtenir une valeur modifiée du paramètre d'entrée:
Sur la feuille EXCEL j'ai A1=3 puis B1=Scho(A1), C1= Scho(B1), .... etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Function Scho(ByVal N As Integer, ByVal D As Integer) As Long Dim x As Double x = (N * 5 + 1) / (5 ^ D) If Fix(x) - x = 0 Then Scho= x Else Scho = 0 End If End Function
une telle construction plante EXCEL.
Bonjour,
???Sur la feuille EXCEL j'ai A1=3 puis B1=Scho(A1), C1= Scho(B1), .... etc.
ta fonction a 2 paramètres d'entrée non ?
Dépose un fichier, ça nous évite d'avoir à en construire un. Qui lui fonctionnera peut-être car sans tes erreurs...
eric
Bonjour,
OK voici en pièce jointe le fichier qui me cause problème.
On y trouve une ligne (ligne 31) de plus de 2 valeurs.
Si on clique sur la cellule B31 pour étendre la formule plus loin sur la ligne, ça plante.
Merci de vos informations
Alainfa
Bonjour,
déclare tes variables en Long, Integer est limité à 255.
eric
Bonjour,
il est faux de dire que l'integer est limité à 255
http://silkyroad.developpez.com/VBA/LesVariables/#LII-C
Attention dans le fichier Excel tu n'as pas appliqué la même fonction en C31 qu'en B31, même avec les cellules qui varient...
au lieu de=Gen_Collatz(B31;$B$1;$B$2;$B$3)
Gen_Collatz n'existant pas dans ton fichier en PJ...=Gen_Affin(B31;$B$1;$B$2;$B$3)
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Migrer les applications VBA Access et VBA Excel vers la Power Platform
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Exact, erreur de ma part.il est faux de dire que l'integer est limité à 255
Disons que comme vba converti les integer en long pour les calculs, j'ai pris pour habitude de ne plus les utiliser.
Quelque manipulations sur la macro dont celle-ci n'a plus fait apparaitre le pb, d'où une conclusion erronée.
En fait mystérieusement (j'ai l'impression que ce n'est qu'à l'ouverture et qu'ensuite ça ne le fait plus) nb=0 même si la cellule d'origine est bien évaluée, et tu rentres dans une boucle sans fin.
Une parade serait de le tester :
Je pense qu'un msgbox serait bienvenue pour prévenir d'un risque de résultat erroné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 If x Mod divi = 0 Then If x = 0 Then 'alerte ou autre traitement Else While x Mod divi = 0 x = x / divi Wend End If Else ...
Et si ça se confirme que ce n'est qu'à l'ouverture un recalcul remettrait d'aplomb.
C'est bizarre et je n'ai jamais rencontré ça. Peut-être que qq'un trouvera la cause ou autre chose.
eric
Partager