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 :

Petit souci dans une macro - VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Cadre
    Inscrit en
    Novembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Novembre 2011
    Messages : 70
    Points : 30
    Points
    30
    Par défaut Petit souci dans une macro - VBA
    Bonjour à toutes & à tous,

    Alors voilà, je suis ici car j'ai créé une macro mais celle-ci rencontre un petit problème lorsque je la lance.

    Voici le code en question:

    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
    Sub comptemois()
     
    Application.ScreenUpdating = False
    '
    ' Macro1 Macro
    '
    Dim i, j As Integer
    Dim compteur As Integer
    Dim eotp, eotp1 As Integer
    Dim period, period1 As Integer
     
    For k = 3 To 76
    Sheets("TempsEOTPMOIS").Select
    eotp = Cells(k, 2).Value
    eotp1 = Cells(k + 1, 2).Value
     
    For m = 3 To 39
     
    period = Cells(2, m).Value
    period1 = Cells(2, m + 1).Value
     
    Sheets("Planning (2)").Select
    compteur = 0
    i = eotp + 1
     
     
    Do While i < eotp1
    j = period
    Do While j < period1
     
    If IsNumeric(Cells(i, j).Value) = False Then
        If Cells(i, j).Value <> "CE01" And Cells(i, j).Value <> "CT02" And Cells(i, j).Value <> "CT04" And Cells(i, j).Value <> "CT10" And Cells(i, j).Value <> "EP03" And Cells(i, j).Value <> "ES01" And Cells(i, j).Value <> "ES02" And Cells(i, j).Value <> "ES03" And Cells(i, j).Value <> "ES04" And Cells(i, j).Value <> "MT01" And Cells(i, j).Value <> "RA01" And Cells(i, j).Value <> "RS02" And Cells(i, j).Value <> "RS03" Then
    compteur = compteur + Cells(i + 1, j).Value
        End If
    End If
     
     
    j = j + 1
    Loop
    i = i + 1
    Loop
     
    Sheets("TempsEOTPMOIS").Select
    Cells(k, m).Select
    ActiveCell.FormulaR1C1 = compteur
     
     
    Next
    Next
    Application.ScreenUpdating = True
    '
    End Sub
    Le déboggueur m'affiche une erreur sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur = compteur + Cells(i + 1, j).Value
    Quel est le problème d'après vous et comment puis-je le résoudre ?

    Merci à tous

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Quel est le message d'erreur ? Que valent compteur et Cells(i + 1, j).Value dans les espions ?
    Ce sont toutes les questions qu'il faut commencer par te poser.

    Le problème peut être :
    - compteur dépasse la taille maximale d'un entier (un peu plus de 32000). Dans ce cas il faut le déclarer en Long
    - Cells(i + 1, j).Value n'est pas un entier (un réel ou du texte) et du coup ça ne peut pas marcher.
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous

    Peut-être que ce n'est pas une valeur qu'il y a dans vu le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(Cells(i, j).Value) = False
    donc difficile de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur = compteur + Cells(i + 1, j).Value
    Eric

  4. #4
    Nouveau membre du Club
    Profil pro
    Cadre
    Inscrit en
    Novembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Novembre 2011
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    J'ai essayé de déclarer "compteur" en Long mais cela ne résoud pas le problème.

    Et ce sont bien des entiers qu'il y a dans les cellules donc cela me semble bizarre...

    Concernant l'erreur, c'est juste le deboggueur qui me stipule qu'il y a une erreur sur cette ligne.

    D'autres idées ?

    Merci !

  5. #5
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Effectivement, je n'avais pas bien vu ton code est c'est évident que tu rentres dans la boucle seulement si ce n'est pas un nombre.
    Il faut que tu apprennes à te servir du pas à pas et des espions du déboggeur.
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  6. #6
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Re

    et si tu essayais de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric(Cells(i, 2).Value) = True
    si seules les cellules que tu veux exploiter sont des valeurs
    Eric

  7. #7
    Nouveau membre du Club
    Profil pro
    Cadre
    Inscrit en
    Novembre 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Novembre 2011
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Re,

    Cela ne fonctionne toujours pas, grrrrrrr !!!

  8. #8
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Re

    Ta condition est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsNumeric(Cells(i, 2).Value)=False
    => donc "pas valeur"

    ton test est : => donc diff de "CE01"....

    et tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur + Cells(i + 1, j).Value
    => donc "valeur"

    est-ce bien ce que tu veux faire ?

    Fais du pas-à-pas et vérifie ce qu'il y a dans les "variables"

    Eric

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/04/2014, 15h04
  2. Chemin de partage dans une macro VBA
    Par Aquellito dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2011, 10h20
  3. [PPT-MAC 2011] Rafraichissement écran dans une macro VBA
    Par McOliver dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 07/06/2011, 11h34
  4. Intégrer un VBS dans une macro VBA (Excel)
    Par fabibi001 dans le forum VBScript
    Réponses: 2
    Dernier message: 12/06/2010, 16h33
  5. Copier Coller du Code dans une macro VBA
    Par ted the Ors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2008, 16h11

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