IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de dépassement de capacité


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 38
    Points
    38
    Par défaut Problème de dépassement de capacité
    bonjour,

    j'ai un problème de "dépassement de capacité"

    voici mon code :
    J'ai mis des variables pour le debug et je constate que les valeurs dans les variables a,b et c sont toutes à fait correctes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim val As Double
        Dim val2 As Double
        Dim val3 As Double
     
        If Target.Count > 1 Then Exit Sub
     
            If Sh.Name <> "donnees" And Sh.Name <> "HD ccharge" Then
     
                val = Cells(4, Target.Column).Value
                val2 = Target.Value
     
                'MsgBox "Vous venez de modifier la cellule " & Target.Address & _
                '" (" & Target.Value & ")" & _
                '" dans la feuille nommée " & Sh.Name
     
                Dim a, b, c
                a = Target.Row
                b = Cells(Target.Row, 13)
                c = Cells(Target.Row, 12)
     
                probleme ici -----> val3 = Cells(Target.Row, 12) / Cells(Target.Row, 13)
     
                Cells(4, Target.Column).Value = val3
     
            End If
     
    End Sub
    Avez vous une idée du pourquoi de ce dépassement sur cette division ?
    Je précise qu'il n'ya aucune valeur négative ni de 0 dans ces cases.

    merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Que retour b et c (les valeurs)?

    ++
    Minick

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(4, Target.Column).Value = val3
    Ceci déclenche l'événement et tu ne t'arrêteras jamais

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Points : 38
    Points
    38
    Par défaut
    @ Minick

    Les valeurs renvoit le contenu des cases de mon tableau, c'est à dire des chiffres entiers du style 2, 5 ,4...

    Par contre, si je fais un b/c c'est le même problème...

    si je fais b/2 --> pas d'erreur
    si je fais c/2 --> pas d'erreur

    @ mercatog

    Comment je peux faire alors ? je dois interdire les événements ?

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Re,

    Bien vu mercatog, j'ai pas vu qu'on etait dans un evenement.

    Oui eventuellement pour les evenement
    avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    et surtout n'oublis pas de le remettre tout de suite apres

    ++
    Minick

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Essaie cela pour intercepter la changement issu de la procédure
    Déclaration en haut du module de Flag
    ensuite dans ta procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public Flag As Byte
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        'Dim val As Double
        'Dim val2 As Double
        'Dim val3 As Double
     
        If Target.Count > 1 Or Sh.Name = "donnees" And Sh.Name = "HD ccharge" Then Exit Sub
     
                 Flag=Flag+1
     
                'val = Cells(4, Target.Column).Value
                'val2 = Target.Value
     
                'MsgBox "Vous venez de modifier la cellule " & Target.Address & _
                '" (" & Target.Value & ")" & _
                '" dans la feuille nommée " & Sh.Name
     
                If Flag (Mod 2=1) then
                     Flag=1
                     'val3 = Cells(Target.Row, 12) / Cells(Target.Row, 13)
                     Cells(4, Target.Column).Value = Cells(Target.Row, 12) / Cells(Target.Row, 13)  'val3
                End If
     
    End Sub
    Ici on fait le test supplémentaire pour éviter l'erreur "dépassement de capacité" au cas où Cells(Target.Row, 13)=0 ou Null

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public Flag As Byte
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim val As Double
        Dim val2 As Double
     
        If Target.Count > 1 Or Sh.Name = "donnees" Or Sh.Name = "HD ccharge" Then Exit Sub
     
                 Flag=Flag+1
     
                'val = Cells(4, Target.Column).Value
                'val2 = Target.Value
     
                'MsgBox "Vous venez de modifier la cellule " & Target.Address & _
                '" (" & Target.Value & ")" & _
                '" dans la feuille nommée " & Sh.Name
     
                If (Flag Mod 2)=1 then
                     Flag=1
                     If Not IsNull(Cells(Target.Row, 13)) And Cells(Target.Row, 13)<>0 Then
                       Cells(4, Target.Column).Value = Cells(Target.Row, 12) / Cells(Target.Row, 13)
                    End If
                End If
     
    End Sub
    Que veux-tu faire avec ce code?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème de dépassement de capacité
    Par Tiviia dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/03/2013, 16h56
  2. Problème de dépassement de capacité
    Par moilou2 dans le forum VBA Access
    Réponses: 31
    Dernier message: 18/06/2008, 16h14
  3. [VBA-E] Problème de dépassement de capacité sous Excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2006, 10h36
  4. Problème de dépassement de la capacité d'un TImage
    Par fred.mathiot dans le forum Composants VCL
    Réponses: 7
    Dernier message: 28/12/2005, 11h13
  5. détection de dépassement de capacité
    Par tut dans le forum C++
    Réponses: 10
    Dernier message: 01/12/2004, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo