Excel 97 : Type de contenu d'une cellule - Windows & Software
Marsh Posté le 13-12-2001 à 14:15:54
je suis pas sûr de tout avoir compris... reprécise sinon....
si j'ai bien compris tu veux savoir si dans une cellule, tu as une formule faisant référence à d'autres cellules...
Pour moi la solution est la suivante...
=> Tu analyses la chaine de caractères qui fait la formule de la cellule et tu recherches dedans un truc du type "A1" ou bien "$A1" ou bien "$A$1" ou bien "A$1" ou bien cells(x,y)..;etc... enfin, tout ce qui peut marcher quoi pour désigner une autre cellule...
Tu effectue une recherche sur ta chaine de caractères en analysant aussi les ( et les " pour voir si ce n'est pas dans du texte que tu trouves ces infos....
VOilà.. c ça ou pas ?
Marsh Posté le 14-12-2001 à 08:03:57
J'ai déjà testé mais hélas cela ne fonctionne pas car les fonctions d'analyse de texte portent sur le résultat de la cellule et non sur son contenu réel.
Quand le contenu d'une cellule est une formule, elle commence systématiquement par le signe =. Donc, il suffirait de faire :
Exemple:
Supposons que
A1 = le texte "bonjour"
A2 = la formule "=A1"
Le résultat de A1 est "bonjour"
En faisant gauche(A1) on obtient "b"
En faisant gauche(A2) on obtient aussi "b"
Je ne sais donc pas quelle est la cellule qui contient une formule!
Si tu connais une fonction quelconque ou une façon spéciale d'écrire la fonction pour qu'elle analyse le contenu réel et non le résultat je suis preneur.
Marsh Posté le 14-12-2001 à 08:23:06
Si si, c'est bien possible de récupérer la formule et non le résultat ! J'avoue néanmoins que je ne l'utilise pas spécialement, mais ça existe...
VOilà qq extraits de l'aide VB pour Applications d'Excel (version 97 et donc avec toutes les versions supérieures... à la syntaxe française/anglaise près !)...
*************************
Formula, propriété:
Renvoie ou définit la formule de l'objet dans le style de référence A1 et dans la langue de la macro. Type de données Variant en lecture-écriture pour les objets Range et type de données String en lecture-écriture pour tous les autres objets.
Remarques
Si la cellule contient une constante, cette propriété la renvoie. De même, si la cellule est vide, Formula renvoie une chaîne de caractères vide. Si la cellule contient une formule, Formula la renvoie sous la forme d'une chaîne de caractères dont le format est celui qui serait utilisé pour afficher cette formule dans la barre de formule (signe égal compris).
Si vous affectez une date à la formule d'une cellule, Microsoft Excel vérifie si la cellule est déjà dotée de l'un des formats numériques ou de date. Si tel n'est pas le cas, Microsoft Excel lui affecte le format de date numérique par défaut.
Si la plage est unidimensionnelle ou bidimensionnelle, vous pouvez affecter à la formule un tableau Visual Basic de même dimension.
Le fait de définir la formule pour une plage comprenant plusieurs cellules insère cette formule dans la totalité des cellules de la plage.
*************************
Cet exemple montre comment définir la formule de la cellule A1 de la feuille Feuil1.
Worksheets("Feuil1" ).Range("A1" ).Formula = "=$A$4+$A$10"
*************************
RMQ => ceci peut donc se faire à priori dans les 2 sens, tu peux récupérer dans une variable chaine ta formule en faisant une opération du type:
MaChaineFormule= Cells(x,y).Formula
et voilà.. ça ira mieux comme ça. Mais je pense que tu es obligé de passer par une macro à mon avis, les formules "de base" ne permettent pas ce genre d'opération sinon.
Je t'ai mis en gras/couleur les trucs qu prouvent que la propriété est bien en lecture écriture...
Enjoy it...
Marsh Posté le 14-12-2001 à 13:00:12
Merci beaucoup pour ton aide et à charge de revanche.
Cela étant, mon problème n'est pas résolu car je ne peux pas passer par une macro.
Le but final est, en utilisant le formatage conditionnel, faire apparaître sur fond jaune par exemple, les cellules contenant une formule et sur fond blanc les autres afin de visualiser immédiatement celles qu'il faut mettre à jour manuellement.
Je vais continuer à chercher (y compris de l'aide) et dès que j'aurai trouver quelque chose, je t'en informerai
Marsh Posté le 14-12-2001 à 13:32:58
SdQY a écrit a écrit : Merci beaucoup pour ton aide et à charge de revanche. Cela étant, mon problème n'est pas résolu car je ne peux pas passer par une macro. Le but final est, en utilisant le formatage conditionnel, faire apparaître sur fond jaune par exemple, les cellules contenant une formule et sur fond blanc les autres afin de visualiser immédiatement celles qu'il faut mettre à jour manuellement. Je vais continuer à chercher (y compris de l'aide) et dès que j'aurai trouver quelque chose, je t'en informerai |
euh.. et pkoi une macro ça n'ira pas ?!??? je vois pas le pb que ça pose... tu te crées un bouton pour l'exécuter..... et comme ça dès que tu veux "rafraichir" ton truc... ben tu lances.. ensutie à toi de scanner les cellules intelligement pour que ça aille vite.
Mais bon, sans passer par une macro, c impossible... je te l'assure !!! et c une solution tout à fait correcte je trouve d'ailleurs ! non ?
@+
Marsh Posté le 14-12-2001 à 21:27:28
Ouais! j'suis ok! çà marche mais cela me parait un peu lourd. j'préfèrai utiliser la mise en forme conditionnelle.
Marsh Posté le 13-12-2001 à 13:36:51
Qui peut me dire comment déterminer si une formule contient un texte, un nombre ou, une formule faisant référence à une ou plusieurs autres cellules.
Exemple:
A1 = le texte «bonjour»
A2 = le nombre «2001»
A3 = la formule «=A1»
A4 = la formule «=A2»
Avec la fonction CELLULE("type";référence) on obtient le type du résultat, et non le type du contenu. c.à.d. le même résultat appliqué sur A1 et A3, ou A2 et A4
Même chose avec CELLULE("contenu";référence).
Pas plus de succès avec NBCAR(référence)
ni avec
ESTNUM(valeur)
ESTTEXTE(valeur)
Quant à ESTREF(valeur) qui devrait être la solution, j'ai l'impression qu'elle ne fonctionne pas.
Ce qui est un comble pour une fonction
Merci de votre aide
---------------
@+