Fonction personnalisée fonctionne sur un seul onglet à la fois

Xoros

XLDnaute Nouveau
Bonjour,

Je suis archi novice sur VBA, j'ai reproduit une fontion personnalisée NbShapes(source Boisgontier) qui me permet de compter le nombre d'images présentes dans un champ. Tout fonctionne parfaitement sur mon onglet Feuil1, en tapant sur F9, mes calculs se mettent à jour.

Le problème est que lorsque je duplique mon onglet (Feuil2) et que je mets à jour les calculs, le résultat sur Feuil1 devient #Valeur et vice versa.

De plus sur une 3ème feuille nommée TOTAL, je souhaiterais totaliser les résultats des onglets précédents et forcément, vu le problème de #Valeur, cela ne peut pas fonctionner.

Ci-dessous la fonction :

Function NbShapes(champ, generique)
Application.Volatile
For Each s In ActiveSheet.Shapes
If Not Intersect(s.TopLeftCell, champ) Is Nothing And _
s.Name Like generique & "*" Then n = n + 1
Next s
NbShapes = n
End Function

Je vous joins également le classeur que Boisgontier avait posté à l'époque sur lequel j'ai ajouté des onglets pour illustrer mon problème.

Merci à tous ceux qui voudront bien prendre le temps de me répondre.

Bonne journée.
 

Pièces jointes

  • Classeur1.xls
    28.5 KB · Affichages: 44
  • Classeur1.xls
    28.5 KB · Affichages: 34
  • Classeur1.xls
    28.5 KB · Affichages: 42

Xoros

XLDnaute Nouveau
Merci beaucoup PierreJean, c'est génial :D, je ne serais pas arrivée là par moi même avec mon niveau en VBA!!

Je voulais juste savoir s'il était possible que dans la formule NbShapes, le nom de l'onglet change automatiquement si celui est changé.

J'ai essayé après avoir désigné une cellule cible qui détermine le nom de l'onglet (B32) de modifier la formule NbShapes de la sorte :

=NbShapes("B32!B3:E13";"pompe")

mais B32 n'est pas reconnu comme une adresse de cellule.

Bon j'en demande beaucoup, si c'est trop prise de tête je m'accommoderai très très bien de la fonction que tu as modifié pour moi.
Je remets le classeur

En tout cas merci à toi et à Efgé d'avoir répondu si vite !
 

Pièces jointes

  • xoros_Classeur1.xls
    38.5 KB · Affichages: 44

Efgé

XLDnaute Barbatruc
Re : Fonction personnalisée fonctionne sur un seul onglet à la fois

Re, Bonjour PierreJean :) et bravo pour la modif.
Pour ne pas rester sur une mauvaise proposition: a mettre sur la feuille 1
VB:
=nbshapes(B32& "!B3:E13";"pompe")
Cordialement

EDIT : si non, beaucoup plus long, mais sans cellule "relai":
VB:
=nbshapes(STXT(CELLULE("filename";$A$2);TROUVE("]";CELLULE("filename";$A$2))+1;255)& "!B3:E13";"pompe")
Cordialement
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
708

Statistiques des forums

Discussions
312 855
Messages
2 092 855
Membres
105 544
dernier inscrit
Eden90