Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 09h07   #1
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Par défaut Fonction personnalisée: erreur à l'ouverture du fichier

Bonjour,

J'ai écrit cette fonction qui me permet de compter des valeurs uniques.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Function CompterValeursUniques(PlageComptage As Range, Optional Plage As Range = Nothing, Optional Critere As Variant)
 
Dim Comptage As Variant, Element As Variant, TabPlage(), Collec As Collection, wksPlage As Worksheet, wksPlageComptage As Worksheet
Dim strWksPlageComptage As String
 
Set Collec = New Collection
strWksPlageComptage = PlageComptage.Worksheet.Name
Set wksPlageComptage = Worksheets(strWksPlageComptage)
Comptage = 0
 
On Error Resume Next
'====== SI LA PLAGE OU APPLIQUER LE CRITERE ET LE CRITERE NE SONT PAS DEFINIS.
If Plage Is Nothing And IsMissing(Critere) Then
    For Each Element In PlageComptage
       Collec.Add CStr(Element), CStr(Element)
    Next Element
Else
'====== SI LA PLAGE ET LE CRITERE SONT DEFINIS.
    TabPlage = Plage
    Comptage = 0
    For i = LBound(TabPlage) To UBound(TabPlage)
        With wksPlageComptage
            If .Cells(i, Plage.Column) = Critere Then Collec.Add CStr(.Cells(i, PlageComptage.Column)), CStr(.Cells(i, PlageComptage.Column))
        End With
    Next i
End If
On Error GoTo 0
 
Comptage = Collec.Count
Set Collec = Nothing
CompterValeursUniques = Comptage
 
End Function
Cette fonction est placée dans un module standard du fichier sur lequel je travaille (et également dans mes macros complémentaires maintenant). Elle fonctionne bien, et les résultats sont ceux que j'attends.
Cependant, à chaque fois que j'ouvre le-dit fichier, toutes les cellules dans lesquelles j'utilise cette fonction m'indiquent #VALEUR. F9 ne change rien, et je suis obligé de faire F2 + ENTREE dans chaque cellule pour que la fonction m'affiche de nouveau le résultat correct.

Est-ce que vous avez une idée de la raison? Au passage, si vous avez des améliorations pour ma fonction, je suis preneur.
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 09h48   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie d'ajouter :

en début de macro.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/10/2011, 11h10   #3
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Ah, effectivement, ça ne le fait plus. Merci.
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h03.


 
 
 
 
Partenaires

Hébergement Web