CompterCelluleContenantUneFormule

M

Moa

Guest
Salut à Toutes et tous !

Est-il possible, avec une formule ( pas en Vba), de compter les cellules contenant UNE FORMULE ?


Merci beaucoup d'avance

@ +

Moa
 
A

andré

Guest
Salut Moa,

Puisque personne ne t'a répondu, je te donnes ma solution.
Si j'ai quelque peu attendu, c'est parce qu'elle n'est pas trop fameuse !

Tu copies ta feuille (astuce de Cathy : tu sélectionnes l'onglet en tenant la touche Ctrl enfoncée, puis tu déposes ton curseur entre l'onglet sélectionné et l'onglet suivant).
Sur la feuille copiée, tu fais F5 / Cellules / Constantes / OK / Delete.
Il ne reste donc plus que tes formules dans ta feuille.
Puis tu fais appel à la fonction NB.SI().

C'est un peu tiré par les cheveux, je le sais, mais je n'ai rien trouvé d'autre.

André.
 
A

andré

Guest
Resalut Moa,

Autre méthode :

Dans une cellule quelconque (p.ex. A1), tu tapes un chiffre quelconque (p.ex. 1).
Tu ajoutes dans toutes tes formules : (A1*0).
Le résultat de tes formules ne se modifie pas.
Lorsque tu changes le chiffre en A1 par une lettre quelconque, le résultat de tes formules sera #VALEUR!
Puis tu emploies la formule : = NB.SI(ta plage;"#VALEURS!"), et tu obtiens le nombre de formules.

André.
 
C

Cathy

Guest
Bonjour le forum, bonjour Moa et André

si tu veux une solution en VBA, je peux te proposer :
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
For Each cellul In Selection
toto = toto + 1
Next

toto sera = au nombre de cellules contenant des formules.

@+

Cathy
 
M

Moa

Guest
Ok Merci à tous, mais aucune solution ne me convient.

Cathy, cela marche très bien, mais le hic, est que cela me compte toutes les formules de ma feuille, et ce qui m'intéresse, c'est de compter que la colonne sélectionnée.

En fait, le problème est plus profond, et je pensais pouvoir le résoudre, en faisant une somme sur une colonne.

Ce que je veux faire est plus simple :

Si en D46, j'ai "une formule", alors écris 1 en D43, si je n'ai "rien" ou "0", alors écris 0 en D43.

J'ai éssayé de transformer la formule de Cathy, mais...pas facile...pour un jeune Vbtiste....hihihi

Encore Merci à vous deux.

@ +, je continue à chercher.

Moa
 
C

Cathy

Guest
Moa, pour le vb, tu peux corriger comme suit :

Sub ComptageFormules()
Dim cel As Range
Columns("F:F").Select '(par exemple, si c'est la colonne F)
For Each cel In Feuil2.UsedRange.SpecialCells(xlCellTypeFormulas, 23)
toto = toto + 1
Next cel
End Sub

sinon, sans vb, une simple formule suffit :
en D43 :
=SI(GAUCHE(D46;1)="=";1;"")
 
C

Cathy

Guest
Moa,

je suis pas très douée avec les imbrications de NB.SI

J'essaye de faire un truc du style =NB.SI(gauche(B3:B6;1);"=") mais ça marche pas,

par contre avec les matricielles on paut faire (ailleurs qu'en colonne B)

=SOMME(SI(GAUCHE($B$1:$B$65536;1)=0;$B$1:$B$65536;0))

valider par ctrl+maj+entrée (les 3 à la fois)

ça comptera toutes les formules de B1 à B65536 (à adapter si tu veux moins).

Cathy
 
M

Moa

Guest
Eh oui Cathy, je continue à chercher aussi.

Résumé :

La formule : =Si (Gauche ....), ne fonctionne que si il n'y a pas de signe "="
au début.

J'ai l'impression, que ce genre de formule, ne s'appliquent qu'à du texte.

J'ai retravaillé ta macro :

Range("ds16:ds17").Select
Selection.SpecialCells(xlCellTypeFormulas, 23).Select
toto = toto + 1
End Sub

Bon là cela fonctionne, puis que cela me compte les cellules avec des formules.

Mais maintenant, faut que j'arrive à dire dans ma macro :

Si le résultat du comptage, donne une valeur supérieur à 0 ( cad, que j'ai au moins une formule, dans ma plage), alors il faut que ma cellule Ds14=1, sinon Ds14=0.

Nota : J'ai éssayé Range("ds16:ds16).Select, aussi range("ds16").select, afin de ne compter que dans la cellule Ds16, mais la macro, me compte toutes les formules de ma feuille.

Je viens de tester : =SOMME(SI(GAUCHE($B$1:$B$65536;1)=0;$B$1:$B$65536;0))

Si il y a une formule, cela affiche "0", j'ai donc changé le dernier critère en "1", et cela compte bien toutes les cellules avec une formule, mais par contre, si l'on éfface les formules, ou si l'on les remplace par des "0", le résultat ne change pas.

Merci de tous tes efforts Cathy, j'y retourne

@ +


Moa
 
C

Cathy

Guest
Tu as raison, dans une plage nommée Vendeur, j'ai le nom des meneurs (enfin, je veux dire des vendeurs), et là ça marche au poil

=SOMME(SI(GAUCHE(Vendeur;1)="L";1;0)) ctrl+maj+entrée

Je planche sur le reste de ta question...

réponse dans qq mn...

Cathy
 

Discussions similaires

Réponses
10
Affichages
300

Statistiques des forums

Discussions
312 837
Messages
2 092 666
Membres
105 482
dernier inscrit
Eric.FKF