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 :

Boucle infinie sur macro [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut Boucle infinie sur macro
    Bonjour,
    Cela fait plusieurs fois que j'ai des bugs. En pas à pas, je me suis aperçu que sans raison (voulue), la macro bascule sur une autre macro d'un autre fichier sans aucun rapport.
    A priori, cela peux m'arriver a différents endroits du code et sur différente macros et cela n'appel a chaque fois la macro suivante qui boucle sur elle-même a l’infini.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function RecupCommentaire(c)
    ' Récupère dans la cellule le commentaire de la cellule c
     
       Application.Volatile
       If c.Comment Is Nothing Then
         RecupCommentaire = ""
       Else
         RecupCommentaire = Replace(c.Comment.Text, Chr(10), " ")
       End If
    End Function
    Je ne suis pas l'auteur de cette macro mais elle est de mon point de vue très bien faite. Je n'arrive pas a comprendre ce qui ce passe.

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

    Il s'agit d'une fonction qui je pense agit à chaque fois qu'il y a une quelque chose dans ton code sur une cellule.

    Dans cette fonction il y a Application.Volatile, ce qui signifie qu'elle agit comme une fonction Excel et donc calcul quelque chose (ici recherche de commentaires sur une cellules) à chaque fois que tu agis sur l'une qui comporte celle-ci.

    Elle remplace les retours chariots par un blanc dés qu'elle rencontre un commentaire dans une cellule.

    Si elle t'est utile rien à faire à part supprimer le calcul automatique, où sinon mets Application.Volatile en commentaire.

    Philippe

  3. #3
    Membre confirmé Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut
    Bonjour Philippe,
    Sur tes conseils, j'ai mis en commentaire la ligne Application.Volatile et après quelque essais cela fonctionne comme avant mais le bug survient encore.
    J'utilise cette fonction dans des cellules (planning hebdo) avec un INDEX\EQUIV pour récupérer les commentaire d'une autre feuille (planning annuel). Après avoir mis un commentaire dans le planning annuel, je me repositionne sur l'onglet hebdo pour voir mon commentaire se mettre a jour. Cela n'as pas fonctionné au début et j'ai trouvé un artifice c.a.d que j'ai ajouté <Calculate> dans chaque feuille hebdo au niveau de la procédure <activate>. J'aimerais trouvé un autre moyen de rendre cette fonction dynamique sans passer par le <Calculate> qui m'annule systématiquement la mémoire tampon du copier / coller.
    Peut-être qu'une nouvelle approche ne comporteras pas ce bug.

  4. #4
    Invité
    Invité(e)
    Par défaut Peut-être qu'une nouvelle approche ne comporteras pas ce bug
    Bonjour,
    Lorsque qu‘une macro est assujettie au contenue de cellules et que son rôle est également de modifier le contenu de cellule, ta macro vas tourner en boucle.
    Tu dois interdire le traitement d’une nouvelle occurrence pendant le temps d’exécution de la macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Static Exec As Boolean
    If Exec = True Then Exit Function 'OU SUB
    Exec = True
    'Code...
     
     
    Exec = False
    End Function 'OU SUB
    Pour interdire à l’endroit où tu as mis les instructions en commentaire.
    Dernière modification par Invité ; 17/02/2013 à 19h15.

  5. #5
    Membre confirmé Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut
    Bonjour rdurupt,
    En mode pas a pas,quand je reviens sur ma feuille,le<Calculate> de la procédure <activate> me lance ma macro sur toute les cellules.Pour chaque cellule, la macro démarre et se termine normalement. J'ai essayé ton code et je comprend son rôle mais bizarrement la variable Exec est toujours vraie et ma macro n'est pas executée. Ci-dessous, la formule que j'utilise dans mes cellules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RecupCommentaire(INDEX(Noms_Semaine;EQUIV(A46;Noms;0);$J$33+8))
    "Noms" et "Nom_semaine" sont des cellules dans le planning annuel.

  6. #6
    Invité
    Invité(e)
    Par défaut j'ai mis en commentaire la ligne Application.Volatile
    Bonsoir,
    Donne-moi la totalité de la macro où tu as mis en commentaire ‘Application.Volatile
    Je vais regarder il ne faut pas oublier de remettre la variable Exec=false à la fin de ta macro .

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

Discussions similaires

  1. [AC-2003] Boucle Infinie sur RecordSet
    Par aminnio dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/06/2013, 10h55
  2. Boucle infini sur Cat
    Par Jiheme44 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/05/2013, 12h12
  3. boucle infinie sur remplissage du rapport
    Par couetbis dans le forum Jasper
    Réponses: 5
    Dernier message: 15/08/2010, 07h39
  4. Boucle infinie et focus sur un contrôle.
    Par FadeOut dans le forum C#
    Réponses: 3
    Dernier message: 14/09/2008, 17h20

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