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 :

erreur de code 6 sur une execution de programme


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut erreur de code 6 sur une execution de programme
    bonjour
    lors de l'execution du code ci joint , j'ai le renvoi "erreur code 6 depassement de capacite avec arret sur la ligne suivante

    pour info le contenu de certaines colonnes sont des nombres pouvant avoir des valeurs compris en 1 à 9999999

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     UserForm1.TextBox1.Value = UserForm1.TextBox1.Value & "Il y a eu pour la valeur somme " & resultat(1, k) & "a été trouve " & (resultat(2, k) + resultat(3, k) + resultat(4, k)) & " :  " & " " & (FormatNumber((resultat(2, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0)) & "%valeur < qui suivaient     " & (FormatNumber((resultat(3, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0)) & " " & "%valeur = qui suivaient    " & (FormatNumber((resultat(4, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0)) & "%valeur > qui suivaient " & vbCrLf




    voici la totalise du code programme

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    Private Sub CommandButton1_Click()
     
     
    Dim liste As New Collection
    Dim i As Long, DerniereLigne As Long
    Dim k, colonne As Variant
    Dim nbinf, nbsup, nbegal As Long
    Dim resultat() As Long
    Dim typedepari As Integer
     
     
    typedepari = 0
    colonne = 0
     
     
     
     
    If OptionButton1.Value = True And CheckBox1.Value = True Then typedepari = 5 ' quintesomme
    If OptionButton1.Value = True And CheckBox2.Value = True Then typedepari = 55 ' quintemultiplication
     
    If OptionButton2.Value = True Then typedepari = 4 'quarte
    If OptionButton3.Value = True Then typedepari = 3 'tierce
     
     
     
    Select Case typedepari
     
    Case 5 'somme qunte
       'pour le quinte
        DerniereLigne = Range("j65536").End(xlUp).Row 'la somme des chx arrivee au quinte
        colonne = 10
     
    Case 4
       'pour le quarte
        DerniereLigne = Range("k65536").End(xlUp).Row 'la somme des chx arrivee au quarte
        colonne = 11
    Case 3
       'pour le tierce
        DerniereLigne = Range("l65536").End(xlUp).Row 'la somme des chx arrivee au tierce
        colonne = 12
     
    Case 55 'multiplication
        'pour le quinte
        DerniereLigne = Range("m65536").End(xlUp).Row 'la somme des chx arrivee au quinte
        colonne = 13
     
     
     
     
     
    End Select
     
     
     
     
    On Error Resume Next
     
     
     
     
    For i = 2 To DerniereLigne
        liste.Add Cells(i, colonne), CStr(Cells(i, colonne))
    Next i
    On Error GoTo 0
    ReDim resultat(1 To 4, 1 To liste.Count)
    For k = 1 To liste.Count
    nbinf = 0
    nbsup = 0
    nbegal = 0
        For i = 2 To DerniereLigne - 1
            If Cells(i, colonne) = liste.Item(k) Then
                If Cells(i, colonne) > Cells(i + 1, colonne) Then nbinf = nbinf + 1
                If Cells(i, colonne) = Cells(i + 1, colonne) Then nbegal = nbegal + 1
                If Cells(i, colonne) < Cells(i + 1, colonne) Then nbsup = nbsup + 1
            End If
        Next i
        resultat(1, k) = liste.Item(k)
        resultat(2, k) = nbinf
        resultat(3, k) = nbegal
        resultat(4, k) = nbsup
    Next k
     
     
        UserForm1.TextBox1.Value = ""
     
     
     
    For k = 1 To liste.Count
     
      'UserForm1.TextBox1.Value = UserForm1.TextBox1.Value & "Il y a eu pour la valeur somme " & resultat(1, k) & " :" & " " & resultat(2, k) & " valeur < qui suivaient  " & resultat(3, k) & " " & " valeur = qui suivaient " & resultat(4, k) & " valeur > qui suivaient " & vbCrLf
    ' mettre en %
     
      'UserForm1.TextBox1.Value = typedepari
      UserForm1.TextBox1.Value = UserForm1.TextBox1.Value & "Il y a eu pour la valeur somme " & resultat(1, k) & "a été trouve " & (resultat(2, k) + resultat(3, k) + resultat(4, k)) & " :  " & " " & (FormatNumber((resultat(2, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0)) & "%valeur < qui suivaient     " & (FormatNumber((resultat(3, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0)) & " " & "%valeur = qui suivaient    " & (FormatNumber((resultat(4, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0)) & "%valeur > qui suivaient " & vbCrLf
     
     
     
    Next k 'Voila le contenu de ma colonne j

    je comprends pas pourquoi l'erreur sur le textbox ??

    merci de votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    Un long va jusqu'à 2 milliards et des bananes si je me souviens bien. Dans le doute, as-tu tenté de déclarer resultat() comme un Double ?

    Cependant, je ne pense pas que cela soit cela. Essaie d'afficher seulement le résultat de ton calcul dans ta TextBox sans l'ensemble du texte et regarde si cela passe. Il est en effet possible que tu essaies d'afficher trop de choses dedans.

    Tu testes et tu nous dis ?

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour

    Un long va jusqu'à 2 milliards et des bananes si je me souviens bien. Dans le doute, as-tu tenté de déclarer resultat() comme un Double ?
    oui effectivement , à quelques bananes et ananas prets . j'avais deja essaye mais en vain


    pour l'affichage dans le texbox, j'ai reduit la suivante à sa plus simplte expression .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
           UserForm1.TextBox1.Value = UserForm1.TextBox1.Value & "Il y a eu pour la valeur somme " & resultat(1, k) & "a été trouve " & (resultat(2, k) + resultat(3, k) + resultat(4, k)) & " :  " & " " & vbCrLf

    cela fonction je n'ai plus l'erreur mais mon affichage n'est pas complet .
    je ne comprend pas pourquoi ce textbox est si limité en caracteres.
    pour un autre programme j'utilise des textbox que je remplis avec enormement de characteres sans depassement de capacite ?

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Utuile un label (intiutlé dans la boites à outils) ca sera plus jolie et peut être moins limité (et ton utilisateur ne sera pas tenté de le modifier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim ligne as string
     
     
    ligne = ligne & "Il y a eu pour la valeur somme " & resultat(1, k) & "a été trouve " & (resultat(2, k) + resultat(3, k) + resultat(4, k)) & " :  " & " " & vbCrLf
    userform1.Label1=ligne

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    cela semble venir des calculs suivants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (FormatNumber((resultat(2, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0))
    la division par 0 il n'aime . cela se passe lors qu'il atteint la dernier colonne non vide

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

Discussions similaires

  1. Erreur étrange sur une execution de requete sql
    Par Petaroux dans le forum Bases de données
    Réponses: 6
    Dernier message: 13/02/2015, 14h25
  2. [AJAX] AJAX erreur code 0 sur une méthode POST
    Par Batou_37 dans le forum AJAX
    Réponses: 4
    Dernier message: 24/03/2014, 13h29
  3. Afficher les coordonnées d'un code postal sur une carte
    Par FredericB dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/12/2007, 16h54
  4. Réponses: 9
    Dernier message: 13/06/2007, 13h35
  5. Réponses: 21
    Dernier message: 11/06/2007, 09h30

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