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 :

Compteur dans une fonction Worksheet_Calculate()


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut Compteur dans une fonction Worksheet_Calculate()
    Bonjour tout le monde ,

    Je suis nouvelle sur le forum et j'aimerais voir de l'aide concernant le code suivant qui n'arrête pas de faire planter mon excel à chaque fois que je modifie le contenu de mon fichier excel:
    Voici mon code , je pense que c'est la boucle while qui fait ça mais je ne comprends pas ce qui cloche .

    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
    Private Sub Worksheet_Calculate()
     
    v1 = Range("P19").Value
    v2 = Range("P29").Value
    v3 = Range("B31").Value
     
    Dim counter As Integer
     
    Do While counter < 1
     
        If (v1 > 40 Or v2 > 40) Then
     
            If v3 = 0 Then
                counter = counter + 1
     
                MsgBox "Souhaitez-vous ajouter votre temps supplémentaire dans la banque de temps? Si oui, veuillez cocher l'énoncé ci-dessous en jaune."
     
            End If
     
        End If
     
    Loop
     
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La variable 'counter' n'est pas initialisée.

  3. #3
    Candidat au Club
    Femme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Par défaut
    Merci pour ta réponse , c'est vrai que la variable devait être initialisé mais quand je rajoute ça , c'est toujours le même souci :

    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
    Private Sub Worksheet_Calculate()
     
    v1 = Range("P19").Value
    v2 = Range("P29").Value
    v3 = Range("B31").Value
     
    Dim counter As Integer
    counter = 0
     
    Do While counter < 1
     
        If (v1 > 40 Or v2 > 40) Then
     
            If v3 = 0 Then
                counter = counter + 1
     
                MsgBox "Souhaitez-vous ajouter votre temps supplémentaire dans la banque de temps? Si oui, veuillez cocher l'énoncé ci-dessous en jaune."
     
            End If
     
        End If
     
    Loop
     
    End Sub

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    c'est normal que cela ne change rien car en fait dès le code de départ,
    la variable est bien initialisée car typée Integer donc de facto égale à zéro ‼

    L'évènement Worksheet_Calculate est-il vraiment judicieux ?

    Commencer à coder dans une procédure normale avant de l'implémenter dans un tel évènement …

    Ensuite ce n'est qu'un problème de logique, si V3 n'est pas égale à zéro alors c'est une boucle infinie ‼

    Merci aussi d'utiliser l'icône # dédiée au code, c'est plus lisible et donnera l'envie aux habitués du forum de t'aider
    tout comme l'indentation aidant aussi à une meilleure lecture du code …

    Le plus simple serait d'expliquer littéralement les tenants et les aboutissants.

  5. #5
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tant que les conditions requises pour que le compteur soit incrémenté ne sont pas vérifiées, le compteur reste à zéro et le programme se mord la queue.

    Cordialement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    c'est normal que cela ne change rien car en fait dès le code de départ,
    la variable est bien initialisée car typée Integer donc de facto égale à zéro ‼
    Oups...

Discussions similaires

  1. Recuperation de formulaire dans une fonction
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 23/06/2004, 15h04
  2. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19
  3. Utilisez MinimizeName() dans une fonction
    Par James_ dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/05/2004, 18h05
  4. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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