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 :

Code VBA bloqué par fonction personnalisée


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité ingén.automatisme
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité ingén.automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Par défaut Code VBA bloqué par fonction personnalisée
    Bonjour,
    Peu usager des fonctions personnalisées, voici mon problème :
    Dans le tableau ci-dessous :
    Montant..............Prévisions
    -57.23................-85.85
    1105.96............1658.94
    -60.00.................-60.00
    -37.00................-55.50
    -61.67.................-61.67
    -33.28.................-33.28

    Initialement, chaque montant (police normale) est égal (par formule) à la prévision correspondante .
    Lors des actualisations les montants réels sont saisis manuellement (ce qui écrase la formule)
    Afin que les montants actualisés soient repérables au 1er coup d’œil,
    j'ai voulu faire ressortir en Gras-Italique-Bleu les cellules où la formule a été remplacée par une constante.
    Pour cela, j'ai créé une fonction personnalisée (dans module standard M1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function UneFormule(ici As Range)
        UneFormule = ici.HasFormula
    End Function
    et les cellules "Montants" sont affectées du format conditionnel :
    Condition (par formule) : =UneFormule(A...)=FAUX
    Format police : Gras-Italique-Bleu

    Jusque là ça marche.

    Problème :
    J’ai créé le code suivant pour insérer une ligne en dessus d’une ligne sélectionnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub InsertLigne()
        Selection.Insert Shift:=xlDown
    End Sub
    Le pb est que l’exécution s’arrête juste après l’insertion de la ligne (sans boucler).
    En exécution pas à pas le surlignage qui repère le « pas » suivant disparaît.
    Si je commande l’exécution du pas suivant (pour aller sur « End Sub »),
    le code repart au début et insère une nouvelle ligne (et ainsi de suite).
    Même après avoir réinitialisé, les exécutions d’autres codes dans d’autres fichiers sont bloquées ou perturbées.
    En commande manuelle directe "Insertion" dans le fichier Excel, tout va bien.
    Merci à celui qui verra ce qui "cloche" !

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,
    Le pb est que l’exécution s’arrête juste après l’insertion de la ligne (sans boucler).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub InsertLigne()
    Selection.Insert Shift:=xlDown
    End Sub
    Elle est où la boucle ?

    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité ingén.automatisme
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité ingén.automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Elle est où la boucle ?

    Hervé.
    Excuses ...
    Je me suis mal exprimé,
    Qqfois, en pas à pas, quand le surlignage disparaît, c'est parce que le code boucle. Je voulais dire que ce n'est pas le cas.
    J'aurais mieux fait de m'abstenir.
    Merci de ton attention.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Et alors s'il n'est pas question de boucle ... quel est ton problème ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité ingén.automatisme
    Inscrit en
    Janvier 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité ingén.automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 61
    Par défaut Macro se bloque, cause format conditionnel
    Bonsoir.
    Dans BnqTest.xls (ci-joint) :

    - Une fonction personnalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function UneFormule(ici As Range)
        UneFormule = ici.HasFormula
    End Function
    - Une macro commandée par un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub InsertLigne()
        Lign = Selection.Row
        Selection.EntireRow.Select
        Selection.Insert Shift:=xlDown
        MsgBox "N° de la ligne insérée : " & Lign
    End Sub

    Problème :

    - Le simple fait d'utiliser la fonction "UneFormule" dans un format conditionnel entraine le blocage de la macro "InsertLigne", juste après avoir exécuté l'insertion de la ligne.
    - Chaque nouvelle commande de la macro ajoute une nouvelle ligne insérée avec blocage après exécution de la ligne 4 de la macro.
    - VBA se trouve perturbé (même après réinitialisation) puisque après cette anomalie les macros d'autres fichiers Excel se plantent (principalement les macro évènementielles).
    Merci à qui trouvera une explication.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Quel code VBA pour cette fonction.
    Par AlexisSz dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/05/2011, 11h03
  2. Acces aux fonctions d'une DLL par code VBA
    Par GlamIS dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2010, 15h59
  3. [XL-2003] Simplification code VBA généré par enregistreur de macro
    Par altra dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/08/2009, 11h47
  4. Comment faire Copier/Coller par code VBA sur INTERNET...
    Par GESCOM2000 dans le forum Access
    Réponses: 5
    Dernier message: 02/01/2006, 13h19
  5. Réponses: 4
    Dernier message: 13/10/2005, 14h44

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