Dépassement de capacité vba access

Résolu/Fermé
mohcultiv Messages postés 48 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 19 juin 2007 - 20 avril 2007 à 11:46
 le père - 23 nov. 2007 à 16:25
salut à tous,

je dévelloppe avec vba access et lorsque j'essaie d'effectuer l'opération suivante j'obtiens un dépassement de capacité:

dim h as integer
h= 12*3600

j 'ai essayer de mette h en long mais ca ne change rien

si je fais :
h=12*360
h=h*10
ca fonctionne

mais le mieux c pas ca c quand je fais
dim h as integer
h=12*36000
ca fonctionne!

J'ai rien compris multiplication par 3600 cause un dépassement de capacité mais par 36000 ca fonctionne.

Est ce que quelqun y comprend quelque chose?

5 réponses

jaajaa Messages postés 5 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 23 novembre 2007 2
23 nov. 2007 à 15:38
salut

j'ai une quistion a une relation avec le dépassement en arithmétique binaire
je voudrais s'avoire c quoi un dépassement ;et. je voudrais effectier les operations suivants en signialant s'il a dépassement ou non :et pour quoi il y ce dépassement ?
merci
1
Bonjour,

Pour faire simple, disons qu'un dépassement, c'est quand un calcul donne un nombre trop grand. Contrairement aux hommes qui peuvent écrire des nombres aussi longs que nécessaire (s'ils en ont le courage) sur un bout de papier, les logiciels utilisent généralement des nombres de taille fixe.
La limite dépend de la machine, du langage et du type de nombre (entier, virgule flottante...). En général, le langage de programmation gère lles dépassements en indiquant une erreur et en arrêtant le programme, mais on peut les gérer soi-même à l'aides d'instructions particulières ( par exemple On error en VB)
0
jaajaa Messages postés 5 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 23 novembre 2007 2
23 nov. 2007 à 15:43
A=01010111, B+00111100 et C=10100110
(a) A+B
(b) A+B+C
(c) B-A
(d) C-A
1
Qu'il y ait ou non un dépassement, cela dépend de la machine, du langageet du type de variable que tu utilises.
Si tu travailles sur des octets (8 bits), tu n'as pas de dépassement avec A+B, mais il y en a un avec A+B+C
1
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
20 avril 2007 à 13:53
Salut,

normalement, seul h=12*360 devrait marcher...

Un integer est compris entre -32768 et 32767 (16 bits), donc toute opération qui tend à mettre une valeur en dehors de ces limites se voit être refusée.

Quand ça marche, tu n'as pas mis h en variant ?
0
mohcultiv Messages postés 48 Date d'inscription vendredi 9 février 2007 Statut Membre Dernière intervention 19 juin 2007 8
22 avril 2007 à 16:50
non il etait bel et bien en integer

mais en mettant toutes les variables qui servent à mon calcul en long ca marche
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jaajaa Messages postés 5 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 23 novembre 2007 2
23 nov. 2007 à 16:17
merci
par exemple en a A=01010111 et B = 00111100 C=10100110
et je voudrais effectuer les operation A+B et A+B+C
je sais bien que A+B=10010011 et A+B+C=100111001 mais est ce qu'il y a un dépassement dans si operations et le quelle?
et merci beaucoup d'avoire répondai a ma quistion
0