Sommeprod et Exact dans VBA
Résolu
lantenac
-
lantenac -
lantenac -
Bonjour,
Je cherche à créer une fonction personnalisée qui effectue un test simple sur une colonne de données, à savoir si pour chaque cellule il en existe d'autres qui ont la même écriture mais une casse différente. La formule que je tape directement dans excel est celle-ci :
En déroulant la formule, j'ai un vrai ou faux en face de chaque cellule ce qui me convient tout à fait.
J'aimerais créer une fonction personnalisée avec VBA qui fasse la même chose mais en un peu plus court. Je précise, ce qui sera certainement visible rapidement, que mes connaissances en VBA sont extrêmement basiques.
Le code que j'ai écrit est le suivant :
Seulement ça ne marche pas (erreur #VALEUR!).
J'ai cru comprendre que c'était le EXACT qui posait problème, mais je ne sais pas comment le remplacer ou écrire quelque chose qui aurait un effet similaire.
Si quelqu'un avait une idée, je vous en serais très reconnaissant :-)
Je cherche à créer une fonction personnalisée qui effectue un test simple sur une colonne de données, à savoir si pour chaque cellule il en existe d'autres qui ont la même écriture mais une casse différente. La formule que je tape directement dans excel est celle-ci :
=SI(SOMMEPROD(EXACT(F21;$F$21:$F$28)*1)=NB.SI($F$21:$F$28;F21);VRAI;FAUX)
En déroulant la formule, j'ai un vrai ou faux en face de chaque cellule ce qui me convient tout à fait.
J'aimerais créer une fonction personnalisée avec VBA qui fasse la même chose mais en un peu plus court. Je précise, ce qui sera certainement visible rapidement, que mes connaissances en VBA sont extrêmement basiques.
Le code que j'ai écrit est le suivant :
Function VerifieCasse(Cellule, Plage As Range) If WorksheetFunction.CountIf(Plage, Cellule) = WorksheetFunction.SumProduct(EXACT(Plage, Cellule) * 1) Then VerifieCasse = "Ok" Else VerifieCasse = "Problème" End If End Function
Seulement ça ne marche pas (erreur #VALEUR!).
J'ai cru comprendre que c'était le EXACT qui posait problème, mais je ne sais pas comment le remplacer ou écrire quelque chose qui aurait un effet similaire.
Si quelqu'un avait une idée, je vous en serais très reconnaissant :-)
A voir également:
- Sommeprod et Exact dans VBA
- Exact audio copy - Télécharger - Conversion & Extraction
- Excel compter cellule couleur sans vba - Guide
- Dépassement de capacité vba ✓ - Forum Excel
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
1 réponse
Bonjour,
J'ignore comment on traduit EXACT mais personnellement je n'aime pas trop utiliser les fonctions Excel en vba, je préfère une expression algorithmique classique d'ou ma proposition avec une petite boucle for :
J'ignore comment on traduit EXACT mais personnellement je n'aime pas trop utiliser les fonctions Excel en vba, je préfère une expression algorithmique classique d'ou ma proposition avec une petite boucle for :
Function VerifieCasse(Cellule, Plage As Range) For Each Celltest In Plage If Celltest.Value <> Cellule.Value And UCase(Celltest.Value) = UCase(Cellule.Value) Then 'Les cellules sont identiques mais la casse est différente VerifieCasse = "Problème" Exit Function End If Next Celltest VerifieCasse = "Ok" End Function
Effectivement, votre solution est bien plus élégante et me semble fonctionner correctement.
Un grand merci !