=SOMMEPROD(--ESTTEXTE(FORMULETEXTE(a2:a10)))
Attention il y aura une formule de plus .
Sub Compte_Formules()
Dim Cpt As Long
Dim Feuille As Long
Application.ScreenUpdating = False
NbFeuil = ActiveWorkbook.Sheets.Count
For Feuille = 1 To NbFeuil
Sheets(Feuille).Select
Selection.SpecialCells(xlCellTypeFormulas).Select
Cpt = Cpt + Selection.Count
Next Feuille
MsgBox "Nombre de formules trouvées: " & Cpt
End Sub
Par contre ta macro renvoie un erreur si une des 60 feuilles ne contient aucune formule (j'ai fait un test).Bonjour,
Essayez ceci
VB:Sub Compte_Formules() Dim Cpt As Long Dim Feuille As Long Application.ScreenUpdating = False NbFeuil = ActiveWorkbook.Sheets.Count For Feuille = 1 To NbFeuil Sheets(Feuille).Select Selection.SpecialCells(xlCellTypeFormulas).Select Cpt = Cpt + Selection.Count Next Feuille MsgBox "Nombre de formules trouvées: " & Cpt End Sub
C'est parce qu'une feuille ne possède pas de formule cela m'a fait le même problème, il faut que toutes les feuilles aient une formule minimum pour que le code fonctionne.Bonjour Rouge, le fil,
j'ai testé ta macro mais voila l'erreur qui m'est renvoyé, j'ai désactivé option explicit
Une idée peut être ?
merci
ActiveSheet.SpecialCells(xlCellTypeFormulas).Select
On Error Resume Next
ou On Error Goto
pour éviter le plantage en cas de feuille de calcul qui est sans aucune formule.Ce qui donnerait quoi comme code final ? (je suis toujours pas bon en VBA)Bonjour pat66, Etoto,
en complément de la réponse d'Etoto, je crois que tu devrais utiliser :
ActiveSheet.SpecialCells(xlCellTypeFormulas).Select
et mettre une gestion d'erreur du styleOn Error Resume Next
ouOn Error Goto
pour éviter le plantage en cas de feuille de calcul qui est sans aucune formule.
soan
Sub Compte_Formules()
Dim Cpt As Long
Dim Feuille As Long
Application.ScreenUpdating = False
NbFeuil = ActiveWorkbook.Sheets.Count
For Feuille = 1 To NbFeuil
Sheets(Feuille).Select
Selection.SpecialCells(xlCellTypeFormulas).Select
On Error Resume Next
Cpt = Cpt + Selection.Count
Next Feuille
MsgBox "Nombre de formules trouvées: " & Cpt
End Sub
On Error Resume Next
dans la boucle For ! c'est inutile d'exécuter cette instruction à chaque tour de boucle (c'est-à-dire ici pour 1 à NbFeuil) ; met On Error Resume Next
avant la boucle For, par exemple juste après la ligne Dim Feuille As Long
On Error Resume Next
sera Cpt = Cpt + Selection.Count
; or il me semble bien qu'il ne faut pas que ce compteur Cpt soit incrémenté si la feuille ne contient aucune formule ; c'est pour ça que c'est moins simple qu'il y paraît ; je te laisse chercher une solution...