Dans un feuille de calcul, j'ai 2 listes de validation (Prénoms et Mois 2008) en A2 et B2, et une fonction personnalisée (Boisgontier) placée en IV25 qui me calcule le nombre d'images dans la plage désignée comme ceci =NbShapes(C25:IJ25;"Retour")
Ci-dessous, la fonction est placée dans un module standard :
Code:
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
Une procédure événementielle placée dans ThisWorkbook pour mettre à jour le calcul de cette fonction personnalisée.
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CalculateFullRebuild
End Sub
Or je m'aperçois que mes 2 listes de validation situées en A2 et B2 interfèrent sur le résultat de ma fonction personnalisée.
En effet, le message d'erreur #Valeur s'affiche quand je veux opérer un changement dans mes listes de validation en A2 ou B2.
D'autre part, le menu déroulant de ma liste située en B2 ne fonctionne plus (la petite flèche n'apparaît plus).
Sinon tout fonctionne bien lorsque je navigue dans ma feuille de calcul.
Aussi en fermant puis en réouvrant mon classeur, tout se rétablit normalement.
Y a t-il un problème dans la procédure événementielle, je l'avais reprise dans un post du forum, est-elle la bonne solution pour la mise à jour de la fonction personnalisée ?
Re : Conflit entre 2 listes de validation et 1 fonction personnalisée
Bonjour Boisgontier,
Ci-joint mon fichier, je n'ai pas eu le temps de l'alléger, il est en cours d'élaboration, il s'agit de la feuille de calcul "Modele".
En colonne IV3:IV33, ta fonction personnalisée insérée.
En A2 et B2, les 2 listes de validation, à l'ouverture du fichier tout semble marcher, mais dès que je touche à A2 ou B2, #Valeur s'affiche.
Re : Conflit entre 2 listes de validation et 1 fonction personnalisée
Re Boisgontier,
Effectivement, j'y pensais.
Mais comme tu as pu le constater, j'ai des macros de marquage (insertion de différents caractères avec motif couleur) et des macros d'insertion de shapes (ces dernières définissent des événements intervenant dans une journée de travail).
Les shapes chevauchent mes caractères de marquage en quelque sorte. Je ne peux pas intégrer du "wingdings" cela va remplacer les caractères et fausser ainsi le résultat obtenu par mes macros de marquage.
Re : Conflit entre 2 listes de validation et 1 fonction personnalisée
Re bonsoir le forum,
Ca reste une enigme.
Malgré tout, si je supprime les 2 listes de validations en A2 et B2, la fonction personnalisée n'affiche plus le message d'erreur #Valeur, tout fonctionne à merveille.
Re : Conflit entre 2 listes de validation et 1 fonction personnalisée
Code:
Function NbShapes(f, champ, generique)
Application.Volatile
For Each s In Sheets(f).Shapes
If s.Type <> 8 Then
If Not Intersect(s.TopLeftCell, champ) Is Nothing And _
UCase(s.Name) Like UCase(generique) & "*" Then n = n + 1
End If
Next s
NbShapes = n
End Function
Re : Conflit entre 2 listes de validation et 1 fonction personnalisée
Bonsoir le forum,
Bonsoir Boisgontier,
Merci pour la modification de la "Function", cela me convient.
D'autre part, j'indiquais plus haut que la flèche de ma liste de validation située en B2 n'apparaissait plus, rendant le menu déroulant inexploitable.
Après recherche sur le forum, je m'aperçois que le problème est lié aux volets figés au niveau de cette cellule B2.
Je pense qu'il n'y a rien à faire sauf à libérer les volets ou les figer en C2 par exemple, la flèche devient alors à nouveau visible.
Bonne soirée à tous et à bientôt pour de nouveaux bugs.