Macro: passage excel 2007 --> 2003

  • Initiateur de la discussion Initiateur de la discussion shooya
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

shooya

XLDnaute Nouveau
Bonjour!

Dans un fichier excel très important pour un client j'ai été amenée à créer une macro bien que je ne maitrise pas vraiment VBA. Voici le resultat:


Public Function NbVal_Distinct_Visible(oRange As Range)


Dim wCell As Range
Dim NbValDistinctVisible&
Dim ListValuesDistinctVisible$

End Function



Public Function NbVal_Distinct(oRange As Range)

Dim wCell As Range
Dim NbValDistinctTotal&
Dim ListValues$
ListValues$ = "|"

For Each wCell In oRange
If Not IsEmpty(wCell.Value) Then
If InStr(ListValues$, "|" & wCell.Value & "|") = 0 Then
ListValues$ = ListValues$ & wCell.Value & "|"
NbValDistinctTotal& = NbValDistinctTotal& + 1
End If
End If
Next wCell

NbVal_Distinct = NbValDistinctTotal&

End Function

Très fiere de moi j'ai envoyé le fichier au client. Malheureusement, bien que celui ci fasse partie du fleuron de l'industrie francaise, il n'est pas passé à excel 2007 mais bloque à 2003 là ou la macro ne fonctionne pas

Comment puis-je adapter cette macro?


Merci pour vos réponse!
 
Re : Macro: passage excel 2007 --> 2003

Bonjour Shooya et bienvenue sur ce forum 😉

Tout d'abord une petite info
Malheureusement, bien que celui ci fasse partie du fleuron de l'industrie francaise, il n'est pas passé à excel 2007 mais bloque à 2003 là ou la macro ne fonctionne pas
Il faut savoir que dans les gros groupes, dont je fais parti,
Un master est décidé au niveau de la DSI, avec test de compatibilité entre toutes les applications (externes et internes)
Nous ne faisons jamais la course au dernier logiciel sorti, cela entraîne trop de frais (achat et test) et de risque (incompatibilité)

Ensuite concernant ton code, il y a un GROS soucis ... 2 fois la même fonction, ce n'est pas possible
le voici corrigé, bien que je ne comprenne pas tout 🙄
Exemple pourquoi
Code:
 ListValues$ = ListValues$ & wCell.Value & "|"
😕

Code:
Public Function NbVal_Distinct_Visible(oRange As Range)  Dim wCell As Range
  Dim NbValDistinctTotal&
  Dim ListValues$
  ListValues$ = "|"


  For Each wCell In oRange
    If Not IsEmpty(wCell.Value) Then
      If InStr(ListValues$, "|" & wCell.Value & "|") = 0 Then
        ListValues$ = ListValues$ & wCell.Value & "|"
        NbValDistinctTotal& = NbValDistinctTotal& + 1
      End If
    End If
  Next wCell
  NbVal_Distinct = NbValDistinctTotal&
End Function
Il faut quand même savoir que nul besoin de code VBA pour calculer le nombre de valeur distinctes

A+
 
Dernière modification par un modérateur:
Re : Macro: passage excel 2007 --> 2003

Bonjour shooya, salut Bruno,

En effet VBA n'est pas nécessaire.

Mais si l'on en est accro, utiliser les bons outils :

Code:
Function NbVal_Distinct(oRange As Range)
Dim d As Object, wCell As Range
Set d = CreateObject("Scripting.Dictionary")
For Each wCell In oRange
  If wCell.Value <> "" Then d(wCell.Value) = wCell.Value
Next
NbVal_Distinct = d.Count
End Function
L'objet "Dictionary" est un bon outil, hyper rapide.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
242
  • Question Question
Microsoft 365 Excel VBA
Réponses
5
Affichages
361
Réponses
7
Affichages
116
Réponses
4
Affichages
166
Retour