Depassement de capacité
Fermé
Yaramoh
-
20 juil. 2016 à 11:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juil. 2016 à 10:56
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juil. 2016 à 10:56
A voir également:
- Depassement de capacité
- Créer un compte yahoo mail gratuit avec capacité de - Guide
- Yahoo Mail - Télécharger - Mail
- Test capacité pc - Guide
- Capacité disque dur externe - Guide
- Dépassement de capacité vba ✓ - Forum Excel
4 réponses
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
20 juil. 2016 à 11:47
20 juil. 2016 à 11:47
Salut,
Si tu nous donnais la ligne et que tu mettais ton code dans un balise
Si tu nous donnais la ligne et que tu mettais ton code dans un balise
basic...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
20 juil. 2016 à 13:12
20 juil. 2016 à 13:12
bonjour
--
--
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
20 juil. 2016 à 13:14
20 juil. 2016 à 13:14
La déclaration des variables est mauvaise. En VBA, on type chaque variable. Comme ceci :
Dim a As Long, M2 As Long, M3 As Long
--
Dim a As Long, M2 As Long, M3 As Long
--
Yaramoh
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
20 juil. 2016 à 13:19
20 juil. 2016 à 13:19
J'ai changé la declaration mais le probleme persiste
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
20 juil. 2016 à 13:44
20 juil. 2016 à 13:44
Bonjour à tous
Mettez un point d'arrêt sur la ligne en défaut et relevez les valeurs de "a" et de "Nm"
ça peut vous aider à déterminer d'où vient l'erreur
Cdlt
Mettez un point d'arrêt sur la ligne en défaut et relevez les valeurs de "a" et de "Nm"
ça peut vous aider à déterminer d'où vient l'erreur
Cdlt
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
>
Yaramoh
20 juil. 2016 à 14:04
20 juil. 2016 à 14:04
Je reprends ce que j'ai cru lire un peu plus haut
L'erreur se situe a ce niveau
/M2 = CLng(a * 1000 / range("Nm")) /
Avez-vous mis le point d'arrêt et relevé les valeurs comme demandé précédemment?
L'erreur se situe a ce niveau
/M2 = CLng(a * 1000 / range("Nm")) /
Avez-vous mis le point d'arrêt et relevé les valeurs comme demandé précédemment?
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
649
20 juil. 2016 à 14:06
20 juil. 2016 à 14:06
A mon avis tu lui en demande trop, comme je te l'ai dis plus haut,
range("Nm")contient une valeur mais aussi X objets supplémentaires que tu demandes.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 25/07/2016 à 10:57
Modifié par pijaku le 25/07/2016 à 10:57
Bonjour,
Après réflexion, il s'agit surement d'un problème de distributivité de la division par rapport à la multiplication.
Prenons cette formule mathématique par exemple :
Si a = 1 000 000 et que Range("Nm") contient 1, quel devrait être le résultat?
Ici Excel calcule cette formule comme ceci :
D'abord la division :
4 / range("Nm") ==> 4
Ensuite les multiplications
1 000 000 x 4 x 1000 ==> 4 000 000 000
=====> Dépassement de capacité !
pour mémoire : Long : Stocke les nombres compris entre -2 147 483 648 et 2 147 483 647
C'est comme si tu avais écrit :
Maintenant, si le résultat doit être :
4 000 000 / 1000 => 4 000, il convient d'utiliser la formule :
Quoiqu'il en soit, ajouter des parenthèses, qui peuvent, mathématiquement parlant, sembler inutile, n'est pas un luxe en Excel et en VBA...
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
Après réflexion, il s'agit surement d'un problème de distributivité de la division par rapport à la multiplication.
Prenons cette formule mathématique par exemple :
M1 = CLng(a * 4 / range("Nm") * 1000)
Si a = 1 000 000 et que Range("Nm") contient 1, quel devrait être le résultat?
Ici Excel calcule cette formule comme ceci :
D'abord la division :
4 / range("Nm") ==> 4
Ensuite les multiplications
1 000 000 x 4 x 1000 ==> 4 000 000 000
=====> Dépassement de capacité !
pour mémoire : Long : Stocke les nombres compris entre -2 147 483 648 et 2 147 483 647
C'est comme si tu avais écrit :
M1 = CLng(a * (4 / range("Nm")) * 1000)
Maintenant, si le résultat doit être :
4 000 000 / 1000 => 4 000, il convient d'utiliser la formule :
M1 = CLng((a * 4) / (range("Nm") * 1000))
Quoiqu'il en soit, ajouter des parenthèses, qui peuvent, mathématiquement parlant, sembler inutile, n'est pas un luxe en Excel et en VBA...
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
20 juil. 2016 à 12:12
/M2 = CLng(a * 1000 / range("Nm")) /
20 juil. 2016 à 12:21
20 juil. 2016 à 12:33
20 juil. 2016 à 12:38
20 juil. 2016 à 13:14