Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  LOGICIELS


|||-  

VBA Excel : dépassement de capacité

 

1 utilisateur anonyme et 159 utilisateurs inconnus
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

VBA Excel : dépassement de capacité

Prévenir les modérateurs en cas d'abus 
marsokod
marsokod
  1. Posté le 26/06/2007 à 19:07:31  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour,
 Je débute en VBA sous Excel et j'ai un problème lors de l'execution de ma macro.
 J'ai de nombreuses feuilles de calcul qui donnent un résultat en fonction d'un paramètre que j'ai inscrit dans une cellule. Le but est de faire varier ce paramètre puis de récupérer le résultat et de mettre tout ça ne forme dans une autre feuille. Le problème est qu'au bout de trois boucles, cette erreur apparait. Y aurait-il un type à respecter pour les Range ?
 Merci d'avance

 Dim i As Integer
 Dim rayon As Long
 For i = 0 To 9000
 Sheets("rp" ).Select
 rayon = 340000000 + i * 10000
 Range("A18" ) = rayon
 Range("K14" ).Select
 Selection.Copy
 Sheets("Results" ).Select
 Range("A1" ).Offset(i, 0) = 340000000 + i * 10000
 Range("A1" ).Offset(i, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
 False, Transpose:=False
 Next i

 EDIT : Je suis parvenu à régler mon problème en créant la colonne des rayons sous la feuille excel puis en récupérant la valeur. C'est moins joli mais ça marche. Je suis toujours intéressé pour connaître le problème de ma macro initiale.

skyla
  1. Posté le 30/07/2008 à 20:59:27  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
salut,
 ton probleme vient de ta declaration
 Dim rayon As Long
 rayon = 340000000 + i * 10000

 Exemle

Dim result As Long

result = 100 * 1000

 ramene l'erreur pourtant, le résultat (100000) est compatible avec le type long.

 Explication : Quand il effectue des opérations arithmétiques entre 2 expressions, VB produit un résultat intermédiaire (avant affectation) qui est du même type que celui de l'expression ayant le type le plus précis.
 L'ordre de précision, du plus précis au moins précis est : Byte, Integer, Long, Single, Currency, Double, and Decimal.

 Les constantes non suffixées comme 100 ou 10000 sont de type Integer. VB essaie donc de créer un résultat intermédiaire de type Integer pour y stocker 100000, ce qui est en dehors de la plage pour ce type (-32768, +32767).

 Pour éviter cela, on peut spécifier que les constantes sont de type Entier Long, en ajoutant le signe & en suffixe :

result = 100& * 1000&
 Note : une bonne pratique est de ne pas utiliser de constantes numériques ("nombres magiques" ) dans le code. On devrait préférer une déclaration explicite d'une constante, de préférence bien typée. Par exemple pour une constante de type Entier Long :

Const Pesanteur As Long = 10

(Publicité)
 Page :
1

Aller à :
 

Sujets relatifs
VBA et power point Besoin d'aide : programmation VBA sur Excel
Besoin d'aide urgente VBA (Excel) cause examen le 19 Juin!!! impression recto verso en VBA
depassement de de volumesur un cd capacite dvd+
Plus de sujets relatifs à : VBA Excel : dépassement de capacité

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
Question pour mon forum 2
Un fond de site.... 2
hébergeur de site gratuit? 6
referencement PRO 0
Recherche personne pour mon futur site 1