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 :

VBA : depassement de capacité.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Par défaut VBA : depassement de capacité.
    Bonjour à tous,

    J'ai écris un code qui, en soit fonctionne mais VBA me dit :" Dépassement de capacité" et cela m'embête car j'aimerais appliquer ce code à tout mon fichier et il m'en empêche, pouvez-vous m'aider ?

    Voici le code :

    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
    Sub titre()
    For i = 1 To 790
    Cells(i + 1, 8).Select
    Cells(i + 1, 8) = (Cells(i + 2, 2) - Cells(i + 1, 2)) / Cells(i + 1, 2)
    Next
    End Sub
     
    Sub SPI()
    For i = 1 To 790
    Cells(i + 1, 8).Select
    Cells(i + 1, 8) = (Cells(i + 2, 2) - Cells(i + 1, 2)) / Cells(i + 1, 2)
    Next
    End Sub
    Sub rdtanormaux()
    For i = 1 To 790
    Cells(i + 1, 10).Select
    Cells(i + 1, 10) = (Cells(i + 1, 8) - Cells(i + 1, 9))
    Next
    End Sub
    Sub pppp()
    Call titre
    Call SPI
    Call rdtanormaux
    End Sub
    Je peux joindre le fichier si besoin est : Merci à tous

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Un sujet fort similaire traité ce matin.
    Tu as peut être la solution

    http://www.developpez.net/forums/d13...ment-capacite/

  3. #3
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    Au cours des lignes 4 et 11, tu effectue une division par . Si cette valeur vaut 0 => dépassement de capacité, car les grandes lois des mathématiques nous interdisent toutes division par 0.

    Cdt

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Par défaut
    Je vois...Merci ! Comment puis-je remédier à ceci silteplait ? Je suis assez nouveau dans VBA je n'ai pas encore les bons reflexes.

    Merci.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Dans un premier temps, tu peux supprimer toutes tes lignes avec des Select, de ce que l'on voit de ta macro, ils sont inutiles.

    Ensuite, tu effectue un test sur la valeur bloquante avec une structure conditionelle if... end if.

    Pour cela remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i + 1, 8) = (Cells(i + 2, 2) - Cells(i + 1, 2)) / Cells(i + 1, 2)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If cells(i+1,2) = 0 then
    "Action à faire si la valeur est 0, cela dépend de ton fichier"
    else
    Cells(i + 1, 8) = (Cells(i + 2, 2) - Cells(i + 1, 2)) / Cells(i + 1, 2)
    end if
    Enfin, je ne saisis pas la différence entre ta fonction Titre() et Spi().

    Bonne journée à toi, et bon courage dans le codage

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Par défaut
    @ Guiiand

    Je te remercie cela fonctionne parfaitement. La fonction titre et SPi sont pour 2 colonnes différents si jamais.

    Bonne journée

    Bonsoir,
    Alors cela fonctionne sur une feuille du classeur, mais pas sur toutes. La ligne en rouge est en cause... Je réouvre donc le sujet, je n'arrive pas a uploader le fichier sur le site, il est disponible sous ce lien : http://cjoint.com/13ma/CCfsvQhuR4l.htm ! Merci !

    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
    30
    Code: Tout sélectionner
        Sub titre()
          For i = 2 To Range("A" & Rows.Count).End(xlUp).Row - 1
            Cells(i, 8) = (Cells(i + 1, 2) - Cells(i, 2)) / Cells(i, 2)
          Next
        End Sub
        
        Sub SPI()
          For i = 2 To Range("A" & Rows.Count).End(xlUp).Row - 1
        Cells(i, 9) = (Cells(i + 1, 6) - Cells(i, 6)) / Cells(i, 6)
          Next
        End Sub
    
        Sub rdtanormaux()
          For i = 2 To Range("A" & Rows.Count).End(xlUp).Row - 1
            Cells(i, 10) = (Cells(i, 8) - Cells(i, 9))
        Next
        End Sub
    
        Sub pppp()
        Dim RR As Worksheet
        For Each RR In ActiveWorkbook.Sheets
            RR.Activate
         
          Call titre
          Call SPI
          Call rdtanormaux
          Next
        End Sub

  7. #7
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Pourquoi ne testes tu pas la valeur de Cells(i, 6) comme nous te l'avons proposé?

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    En testant la valeur du dénominateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Cells(i + 1, 2).value <>0 then Cells(i + 1, 8) = (Cells(i + 2, 2) - Cells(i + 1, 2)) / Cells(i + 1, 2)

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

Discussions similaires

  1. [VBA-E] erreur 1004 et depassement de capacité dans une boucle
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 11/02/2007, 13h37
  2. [VBA Excel] pb depassement de capacité
    Par DiverSIG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2006, 14h06
  3. [VBA-E]Depassement de capacité
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/05/2006, 15h13
  4. [VB6] Hex(Double) - depassement de capacite
    Par SErhio dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 18/05/2005, 17h09
  5. depassement de capacité
    Par jpg dans le forum ASP
    Réponses: 2
    Dernier message: 19/08/2004, 18h26

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