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 :

Fonction personnalisée un peu trop envahissante !


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut Fonction personnalisée un peu trop envahissante !
    Bonjour forum !!!

    Voici mon problème : j'ai créé une fonction personnalisée que j'utilise dans des feuilles d'excel. Jusqu'ici tout va bien...

    La où j'ai un problème c'est que cette fonction s'active à chaque modification d'une cellule quelconque, liée ou pas avec la fonction !!!

    Le mieux c'est que, quand à j'ouvre en parallèle de mon fichier excel un classeur vierge, et que je modifie une cellule dans ce classeur vierge de formule et de code, la fonction s'active !!!

    La fonction n'est pas longue à s'exécuter toutefois, je suis amené régulièrement à modifier de manière automatique un grand nombre de cellule (plus de 300...) donc le code de la fonction s'exécuter plus de 300 fois ce qui deviens vite très très long !!!

    voici un fichier d'exemple si cela peut vous aiguiller...

    ps : bien que ce dernier contienne une procédure worksheet_change, celle-ci n'a pas d'influence sur le problème, pour s'en convaincre, on peut la passer en commentaire et rien ne s'améliore...

    Merci d'avance pour votre aide !!! toute proposition sera la bienvenue !!!
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Je vois pas vraiment où se situe le binz mais j'ai juste constaté un ptit truc dans le code suivant
    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
    Sub Worksheet_Change(ByVal Target As Range)
        
        If flag = True Then
            Exit Sub
        End If
        
        flag = True
        
        If Feuil1.Range("A1") = "oui" Then
            Feuil1.Range("A1") = "non"
        Else
            Feuil1.Range("A1") = oui
        End If
        
        flag = False
        
    End Sub
    il manque les ""
    @+

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Re,

    exact ! je n'avais pas vu...

    mais le problème de la fonction persiste...

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    juste pour mon info personnelle, c'est quoi cette variable "flag" ?

    qu'est ce qu'il fait qu'elle devient true ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 24
    Par défaut
    Re,

    la variable flag empêche la procédure worksheet_change de tourner en boucle :

    si tu change une valeur dans la feuille, la procédure se lance, si au cours de la procédure une valeur rechange, la procédure se réinitialise et ainsi de suite... ce qui est génant !

    donc tu mais la variable flag que tu déclare en public as boolean (donc false par défaut)

    quand tu rentres dans le code tu la met en true comme ca si le code boucle avec un petit exit sub au début si flag = true tu t'en sors et ton fichier ne bug pas !!!

    j'espère avoir été suffisament clair sinon demande !!!

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    merci, parfaitement clair et je me met cette petite astuce de côté au cas où

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

Discussions similaires

  1. [VBA-E] Fonction personnalisée moyenne à fin M
    Par Geoffray dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2006, 20h58
  2. Communication Série un peu trop lente?
    Par SimonBrodeur dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 16/01/2006, 14h41
  3. Erreur de lien un peu trop long...
    Par babemagus dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2005, 10h30
  4. Requête un peu trop compliqué pour moi
    Par Kokito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2005, 15h17

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