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 :

Message d'erreur "division par zéro"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut Message d'erreur "division par zéro"
    Bonjour,

    Je vous soumets un problème sous Vba incompréhensible pour moi.

    J'ai 2 macros Vba qui tournent indépendamment sans aucun problème.

    Lorsque je les réunis dans une seule et même macro, pour n'effectuer qu'un seul lancement, la première s'exécute normalement, puis j'obtiens le message "erreur 11, division par zéro"'.
    Je passe outre ce message en cliquant sur "fin" sur le panneau d'erreur, et la seconde macro s'exécute alors sans problème.

    Il n'y a aucune division dans ces macros.

    Si quelqu'un peut m'expliquer comment éradiquer cette erreur, je lui en serai très reconnaissant.

    Merci.
    macro 1.txtmacro 2.txt

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, telles quelles, les macros ne présentent pas d'erreur. Il faudrait pouvoir tester avec le classeur qui pose problème.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour cette réponse.

    Pour le test, je joins un classeur comprenant les 2 macros, et un fichier d'opérations bancaires rapatrié pour traitement : mise en forme, puis calcul du solde progressif.

    Bien cordialementClasseur test.xlsm

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Si j'ai bien compris, tu veux réunir les 2 macros en une seule, ce que j'ai fait sans rien changer à ton code et cela fonctionne parfaitement.
    La mise en forme se fait puis le calcul du solde sans aucune erreur à aucun moment. J'ai juste fait un copier/coller de tes 2 macros dans 1 seule.
    Tu as peut-être fait une erreur de manipulation quelque part ?

    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
    100
    101
    102
    103
    104
    105
    Sub Traitement_Operations()
        ' ELIMINATION DES COLONNES INUTILES
        ' ***************************************
        lin = 1
        col = 1
     
        Do Until Cells(lin, col) = ""
     
            If Cells(lin, col) Like "*Libelle operation*" _
            Or Cells(lin, col) Like "*Debit*" _
            Or Cells(lin, col) Like "*Credit*" _
            Or Cells(lin, col) Like "*Date operation*" Then
     
                col = col + 1
     
            Else
     
                Columns(col).Delete
     
            End If
     
        Loop
     
        ' REORGANISATION DES COLONNES
        ' **********************************
     
        Columns("A:A").Insert Shift:=xlToRight
        Columns("E:E").Cut
        Columns("A:A").Select
        ActiveSheet.Paste
        Range("A1").Select
     
        ' DEBITS ET CREDITS SUR UNE SEULE COLONNE
        ' **********************************************
        lin = 2
        col = 1
     
        Do Until Cells(lin, col) = ""
     
            If Cells(lin, 4) <> "" Then
                Cells(lin, 3) = Cells(lin, 4)
            End If
     
            lin = lin + 1
     
        Loop
     
        Columns(4).Delete
     
        ' FORMATAGE DES MONTANTS
        ' *****************************
        Columns("C:C").NumberFormat = "#,##0.00"
     
        ' LARGEUR DES COLONNES ET CENTRAGE LIBELLES
        ' *************************************************
        ActiveSheet.UsedRange.EntireColumn.AutoFit
        Rows("1:1").HorizontalAlignment = xlCenter
     
        ' COULEUR DE L'ONGLET
        ' ***********************
        With ActiveSheet.Tab
            .ThemeColor = xlThemeColorLight2
            .TintAndShade = 0.799981688894314
        End With
     
        ' RENOMMAGE DE L'ONGLET
        ' ***************************
        mois = Application.InputBox(Prompt:="Nom du mois concernŽ ?", Type:=2)
        ActiveSheet.Name = mois
     
        ' Calcul du solde
        ' ***************************
        Dim Solde_depart As Double
        Dim Solde As Double
     
        L = 2
        Compteur = 0
     
        Solde_depart = Application.InputBox(Prompt:="Solde du mois prŽcŽdent ?", Type:=1)
     
        Solde = Solde_depart
        Cells(1, 5) = "Solde"
     
        Do Until Cells(L, 1) = ""
            Compteur = Compteur + 1
            L = L + 1
        Loop
     
        lin = L - 1
     
        For k = Compteur To 1 Step -1
     
            Solde = Solde + Cells(lin, 3)
     
            Cells(lin, 5) = Solde
            lin = lin - 1
     
        Next
     
        ' FORMATAGE DES MONTANTS POUR LE SOLDE
        ' *****************************
        Columns("E:E").NumberFormat = "#,##0.00"
     
        Range("A1").Select
    End Sub
    Je me suis permis l'une ou l'autre petite optimisation, suppression de .select et .activate, suppression de variable et d'une boucle, libre à toi de l'utiliser ou non.

    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
    Sub Traitement_Operations()
        Dim lin As Long
        Dim col As Long
        Dim mois As String
        Dim Solde_depart As Double
        Dim Solde As Double
        Dim Compteur As Long
        Dim L As Long
     
        ' ELIMINATION DES COLONNES INUTILES
        ' ***************************************
        lin = 1
        col = 1
     
        Do Until Cells(lin, col) = ""
            If Cells(lin, col) Like "*Libelle operation*" _
            Or Cells(lin, col) Like "*Debit*" _
            Or Cells(lin, col) Like "*Credit*" _
            Or Cells(lin, col) Like "*Date operation*" Then
                col = col + 1
            Else
                Columns(col).Delete
            End If
        Loop
     
        ' REORGANISATION DES COLONNES
        ' **********************************
        Columns("A:A").Insert Shift:=xlToRight
        Columns("E:E").Cut Columns("A:A")
     
        ' DEBITS ET CREDITS SUR UNE SEULE COLONNE
        ' **********************************************
        lin = 2
     
        Do Until Cells(lin, 1) = ""
            If Cells(lin, 4) <> "" Then
                Cells(lin, 3) = Cells(lin, 4)
            End If
            lin = lin + 1
        Loop
     
        Columns(4).Delete
     
        ' FORMATAGE DES MONTANTS
        ' *****************************
        Columns("C:C").NumberFormat = "#,##0.00"
     
        ' LARGEUR DES COLONNES ET CENTRAGE LIBELLES
        ' *************************************************
        ActiveSheet.UsedRange.EntireColumn.AutoFit
        Rows("1:1").HorizontalAlignment = xlCenter
     
        ' COULEUR DE L'ONGLET
        ' ***********************
        With ActiveSheet.Tab
            .ThemeColor = xlThemeColorLight2
            .TintAndShade = 0.799981688894314
        End With
     
        ' RENOMMAGE DE L'ONGLET
        ' ***************************
        mois = Application.InputBox(Prompt:="Nom du mois concernŽ ?", Type:=2)
        ActiveSheet.Name = mois
     
        ' Calcul du solde
        ' ***************************
        L = Cells(Rows.Count, 1).End(xlUp).Row
        Compteur = L - 1
     
        Solde_depart = Application.InputBox(Prompt:="Solde du mois prŽcŽdent ?", Type:=1)
     
        Solde = Solde_depart
        Cells(1, 5) = "Solde"
     
        For lin = L To 2 Step -1
            Solde = Solde + Cells(lin, 3)
            Cells(lin, 5) = Solde
        Next
     
        ' FORMATAGE DES MONTANTS POUR LE SOLDE
        ' *****************************
        Columns("E:E").NumberFormat = "#,##0.00"
     
        Range("A1").Select
    End Sub

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Bonjour

    merci d'avoir consacré du temps à mon problème.

    Effectivement, je réunis ces 2 macros dans une seule, et c'est là que j'ai la fameuse erreur, alors que je suis bien d'accord, ça DOIT fonctionner.

    Bon, ça reste un mystère.
    J'arriverai peut-être à trouver ce qui se passe mal chez moi.

    Je reprends déjà tes améliorations, et je classe ce problème en "résolu".

    Un grand merci !

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Bonjour,

    j'ai remis cette discussion en "n'est plus résolu", car à la relecture, je me suis aperçu que tu avais réuni les 2 macros en une seule par un simple copier-coller.

    j'ai procédé différemment, en créant une 3ème macro qui appelle les 2 autres.
    En d'autres termes, ma macro comporte 2 lignes, chacune étant les noms macro1 et macro2.

    Voilà peut-être la source de l'erreur, que je ne m'explique pas.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/11/2020, 08h45
  2. Réponses: 1
    Dernier message: 24/03/2016, 16h22
  3. [XL-2010] Erreur 11 division par zéro
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2015, 11h33
  4. [CR8.5] Problème de division par zéro sur formule
    Par franck.cvitrans dans le forum Formules
    Réponses: 3
    Dernier message: 10/06/2004, 13h41
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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