Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

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 !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai 2 colonnes nommées (l'une s'appelant "ColonneLimiteInf", l'autre "ColonneLimiteSup") dans lesquelles se trouvent des chiffres décimaux ou pas. S'il s'agit de chiffres décimaux, le nombre de décimales est variable.
Je dispose d'une fonction intitulée "HowLong" qui me renvoie le nombre de décimales d'un chiffre, par ex., en supposant que dans la cellule A1 il y ait le chiffre 12.369 : HowLong(A1)=3 (effectivement il y a 3 décimales ou, si vous préférez, 3 chiffres après la virgule).
Je voudrais connaître le nombre maximum de décimales que l'on peut trouver dans les 2 colonnes.
Une solution "lourde" consiste à mettre à côté de chacune des 2 colonnes une colonne supplémentaire, et dans chaque cellule écrire "=HowLong(Cellule de la colonne correspondante)", on tire ensuite jusqu'au bas de la colonne, puis on fait de même avec l'autre colonne. Enfin, on trouve ce que l'on cherchait, à savoir le nombre de décimales le plus important existant dans les 2 colonnes par (en supposant que les colonnes où sont rapportés les nombres de décimales aillent de E10 à E50 et de G10 à G50) :
"=Max(E10:E50;G10;G50)"

Je cherche une solution, disons plus "légère", qui m'éviterait de rajouter 2 colonnes excédentaires. Je pense qu'au moyen d'une formule matricielle on pourrait y arriver, mais je bute...

En tout cas merci pour toute aide.
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Un grand merci PierreJean, je pense que cette fois-ci c'est la bonne !
Ta fonction fonctionne même avec les cellules vides.
En regardant de près la syntaxe de cette fonction, il y a une sentence qui revient autant de fois que le nonbre de plages à étudier :
For Each cel In zone1
If cel.Value <> "" Then
If HowLong(cel.Value) > MaxLong Then MaxLong = HowLong(cel.Value)
End If
Next cel

Ne peut-on pas réaliser une boucle du type :
For i=1 To numéro_de_la_dernière_plage
la boucle précédente
Next i

Ce qui permettrait de pouvoir sélectionner un nombre indéfini de plages déclarées dans l'en-tête de la fonction, en partant du principe que les plages se succèdent chronologiquement :
maxlong(Colonne1, Colonne2, Colonne3,...,Colonnen)

Réponse à Soenda :
J'aurais dû mettre superflues entre guillemets. J'entends par là des colonnes (occultes)nécessaires pour les calculs. Dans la mesure où l'on peut trouver une astuce pour s'en débarrasser (ce qu'a réussi PierreJean), pourquoi alors ne pas en profiter !
Quand tu as essayé la 1ère formule de PierreJean avec des colonnes contenant des cellules vides, ça marchait et c'était tout à fait normal. Le problème dans mes colonnes c'est que les cellules recevaient toujours un résultat, et, suivant la condition :
SI(ET(OU(G18=0;H19="");J18="");"";J17)
(précédemment c'était écrit en espagnol... ¡1000 disculpas!)
ce pouvait être une valeur numérique ou du texte (""). Et là la fonction plantait !
PierreJean a résolu le problème en modifiant sa fonction.
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Re

C'est la 1ere fois que je 'ponds' une fonction avec des parametres optionnels
Je vais regarder de + pres car certaines fonctions peuvent avoir une quasi infinité de parametres
je ne suis pas certain de pouvoir y arriver
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Re

Eh bien voila , ce n'etait pas trop difficile (Merci F1 ..... et Magic Doctor)

Code:
Function maxlong(ParamArray zone() As Variant) as Long
Dim cel As Range
Dim n As Integer
maxlong = 0
For n = LBound(zone) To UBound(zone)
For Each cel In zone(n)
 If cel.Value <> "" Then
   If HowLong(cel.Value) > maxlong Then maxlong = HowLong(cel.Value)
 End If
 Next cel
Next n
End Function
 
- 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

Retour