dépassement de capacité

  • Initiateur de la discussion Initiateur de la discussion wikend
  • 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 !

W

wikend

Guest
Bonjour forum,

J'ai une erreur dépassement de capacité que je ne comprend pas trop.
De plus, suis je obligé de récupérer les valeurs en string ?
Merci

Code:
    Dim Valeur1 as String
    Dim Valeur2 as String

    Valeur1 = Sheets(1).Cells(1, 1).Value
    Valeur2 = Sheets(1).Cells(1, 2).Value
    
    If CInt(Valeur1) < CInt(Valeur2) Then
    //Erreur dépassement de capacité !

Valeur1 = 5731528,3
Valeur2 = 5126110,59
 
Bonjour,

tu cherches à convertir en entier des valeurs de texte. Le problème c'est que 'integer' ne supporte que de -32 768 et 32 767. Donc, remplace CInt par CLng qui convertit en entier long (-2 à +2 milliards et des poussières)

A+

EDIT : je m'aperçois apres coup que tu as des décimales en plus... si tu souhaite les conserver : CDble

Message édité par: 2passage, à: 01/09/2005 11:51
 
Bonjour wikend et 2passage

Peut-être peux-tu simplemnt déclarer tes variables en double comme cela tu n'as pas besoin de conversion du style

Code:
   Dim Valeur1 as Double

    Dim Valeur2 as Double

    Valeur1 = Sheets(1).Cells(1, 1).Value

    Valeur2 = Sheets(1).Cells(1, 2).Value
  
    If Valeur1 < Valeur2 Then

(sinon méthode de 2passage)


Bonne journée

Message édité par: Pascal76, à: 01/09/2005 12:00
 
Bonjour WikEnd, le Forum

C'est normal car CInt est une Fonction de Conversion qui retourne une Valeur Integer (-32,768 to 32,767)

Essaie plutôt CDbl qui retournera une Valeur Double...

Par la même occasion il est très peu orthodox de passer de String vers du Numérique si on part d'une valeur en provenance d'une Range...

Voici déjà une exemple de base de test :
Sub VariableDouble()
Dim Valeur1 As Double
Dim Valeur2 As Double

 
    Valeur1 = 5731528.3
    Valeur2 = 5126110.59
   
   
If CDbl(Valeur1) < CDbl(Valeur2) Then
        MsgBox 'Glop Glop'
   
Else
        MsgBox 'Pas Glop'
   
End If


End Sub


Et maintenant un autre exemple avec gestion d'un test pour vérifier que la Valeur des Range est bien numérique, car la Déclaration 'As Double' ne fera pas de cadeau si il y a 'Toto' en A1...

Sub VariableDoubleFromRangeWithTest()
Dim Valeur1 As Double
Dim Valeur2 As Double


With Sheets(1)
If IsNumeric(.Cells(1, 1)) Then Valeur1 = .Cells(1, 1)
If IsNumeric(.Cells(1, 2)) Then Valeur2 = .Cells(1, 2)
End With

   
   
If CDbl(Valeur1) < CDbl(Valeur2) Then
        MsgBox 'Glop Glop'
   
Else
        MsgBox 'Pas Glop'
   
End If


End Sub

En fait à partir de là, la Conversion 'CDbl' devient même inutile, mais je l'ai laissée pour l'exemple


Bon Appétit
[ol]@+Thierry[/ol]

EDITION !!!

Sorry pas raffraichi et coup de Fil entre-temps pour poster ma réponse...
Bonjour à vous deux aussi Pascal et 2Passage !

Message édité par: _Thierry, à: 01/09/2005 12:05
 
Bonjour Pascal76, 2Passage et @+Thierry,

En mettant des Double celà fonctionne !
Un grand merci donc, je n'ai plus besoin de convertir et Pour infos j'avais prévu de tester la valeur numéric.
Donc merci bien ! 🙂

Bonne journée
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
287
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
820
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
97
Retour