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:
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:
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" !
1 pièce(s) jointe(s)
Macro se bloque, cause format conditionnel
Bonsoir.
Dans BnqTest.xls (ci-joint) :
- Une fonction personnalisée :
Code:
1 2 3
| Function UneFormule(ici As Range)
UneFormule = ici.HasFormula
End Function |
- Une macro commandée par un bouton :
Code:
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.