XL 2016 VBA - Dépassement de capacité ?

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour,

Je me demande ce qui se passe:
VB:
Sub a()
    Dim v As Long

    v = 1000 * 100
End Sub

1615317352033.png


J'avoue en perdre mon latin. Enfin mon VBA.


Code:
Sub a()
    Dim v As Long

    v = CLng(1000) * CLng(100)
End Sub

Pourquoi dois-je convertir en Long les valeurs pour que VBA daigne faire le calcul en Long, type de la variable résultat ? Le compilo fatigue ?
 
Dernière édition:
Ce n'est pas vraiment un bogue mais une règle contestable: une multiplication de deux Integer est effectuée en Integer et plante donc si elle dépasse 32767. Par ailleurs une constante spécifiée sans caractère suffixe de type est assumée du plus court type pouvant la valoir.
 
Oui bien sûr c'est le compilo qui choisit de fabriquer le résultat sur un entier (VBA) en basant son choix sur le fait que les 2 constantes sont des entiers. Donc on se cogne au plafond des 32767. Mais Mr Compilo ne fait pas le bon choix madame.

C'est facile de contourner l'affaire avec vos multiples propositions.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
72
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
650
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
Réponses
3
Affichages
298
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
447
Réponses
10
Affichages
797
Réponses
7
Affichages
797
Retour