Supprimer la valeur d'une cellule mais conserver la formule

oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 3 mars 2010 à 15:24
r1r2 Messages postés 22 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 31 mars 2010 - 5 mars 2010 à 12:34
Bonjour,

je dispose d'un modèle Excel permettant de faire du contrôle de factures. J'aimerais parfois être en mesure de réinitialiser toute la feuille, càd mettre une chaine vide dans toutes les cellules variables. Pour les cellules qui ne possèdent pas de formule, pas de soucis, mais pour les autres c'est une autre paire de manches.
Pour ces dernières, j'ai tenté la méthode bourrine, à savoir supprimer la valeur (Value "") puis réaffecter la formule à la cellule (Formula "=SI...")
Problème, j'ai presque 40 formules et le debugger s'arrête sur une bonne dizaine... avec un vieux message énigmatique : "Erreur définie par l'application ou par l'objet" !

Deux questions donc :
- Y'a t'il un moyen plus simple pour faire ce genre de choses ?
- Pourquoi ma méthode, aussi peu optimisée soit-elle, ne marche pas ?

un exemple de ligne qui ne passe pas :
Worksheets("Contrôle").Range("B15").FormulaLocal = "=SI($F$2="";"";SI(RECHERCHEV($F$2;'D:\[BDD.xls]Signés_Actifs'!$1:$65536;33;FAUX)="";""Avertissement"";RECHERCHEV($F$2;'D:\[BDD.xls]Signés_Actifs'!$1:$65536;33;FAUX)))"

Merci d'avance
-------------------------------------------------------------------------Etienne

1 réponse

r1r2 Messages postés 22 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 31 mars 2010
5 mars 2010 à 12:34
Bonjour,

Si dans une plage de cellules tu veux réinitialiser celles qui ne contiennent pas de formule, tu peux utiliser quelque chose du type (en supposant que maplage fasse référence à une plage de cellules) :
maplage.SpecialCells(xlCellTypeConstants, 1).ClearContents
pour réinitialiser les cellules contenant des nombres,

maplage.SpecialCells(xlCellTypeConstants, 2).ClearContents
pour réinitialiser les cellules contenant du texte,

maplage.SpecialCells(xlCellTypeConstants, 3).ClearContents
pour réinitialiser les cellules contenant des nombres ou du texte.

Cette instruction VBA correspond dans Excel à : menu 'Edition' / 'Atteindre' (ou CTRL+T) puis 'Cellules...' et option 'Constantes'.

En espérant que cela puisse t'aider...

PS : je pense que ton erreur sur la formule vient d'un problème de doubles cotes.
Essaie avec Worksheets("Contrôle").Range("B15").FormulaLocal = "=SI($F$2="";"";SI(RECHERCHEV($F$2;'D:\[BDD.xls]Signés_Actifs'!$1:$65536;33;FAUX)="""";""Avertissement"";RECHERCHEV($F$2;'D:\[BDD.xls]Signés_Actifs'!$1:$65536;33;FAUX)))"
0