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

Bonsoir le fil, Magic_Doctor

Essayes avec
Code:
=MAX(NBCAR(A1-ENT(A1));NBCAR(B1-ENT(B1)))-2
Cette formule non-matricielle, renvoie le plus grand nombre de décimales sur les 2 valeurs prisent en compte.

A tirer vers le bas

A plus
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Merci Soenda pour ta proposition, mais d'une part je n'ai pas très bien compris ta formule qui me renvoie des résultats étranges, et d'autre part il s'agit en fait de savoir quel est le nombre de décimales le plus important se trouvant dans une série de chiffres (une cinquantaine au total) répartis sur deux colonnes.
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Bonsoir,
A partir de la proposition de soenda, essayez la formule matricielle :
Code:
{=MAX(NBCAR(A1:B5-ENT(A1:B5)))-SI(MAX(NBCAR(A1:B5-ENT(A1:B5)))=1;1;2)}
en adaptant évidemment à la zone concernée. Pour que cela fonctionne, toutes les cellules prises en compte doivent soit contenir un nombre, soit être vides.​
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Bonsoir Magic Doctor, ROGER2327

ta formule ... me renvoie des résultats étranges
Cela se produit si les 2 cellules contiennent des nombres entiers.
Effectivement, si les 2 nombres sont des entiers, on attend comme réponse : 0 (décimale)... Mea culpa 😱

Voici donc la formule non-matricielle corrigée
Code:
=SI(OU(A1-ENT(A1);B1-ENT(B1));MAX(NBCAR(A1-ENT(A1));NBCAR(B1-ENT(B1)))-2;0)
Explication
je n'ai pas très bien compris ta formule
Exemple avec : A1 = 1,23 B1 = 99 :
A1-ENT(A1) ==> 1,23 - 1 = 0,23
NBCAR(A1-ENT(A1)) ==> 4 (=le nombre de caractères "avec le 0 et la virgule")
NBCAR(B1-ENT(B1)) ==> 1 (99 - 99 = 0 ==> nombre de caractère = 1)
MAX(...A1;...B1)-2 ==> 2 (=Le plus grand nombre "sans le 0 et sans la virgule")

Effectivement, si les 2 nombres sont des entiers,
MAX(.. , ..) ==> 1, et MAX(.. , ..)-2 ==> -1

D'ou la correction qui se lit :
SI(Au moins 1 des 2 nombres n'est pas un entier; Appliquer la formule; Sinon ==> 0)

Exemple avec : A1=5; B1=99
A1-ENT(A1) ==> 0 Car 5 - 5 = 0
B1-ENT(B1) ==> 0 Car 99 - 99 = 0

Or 0 = FAUX d'ou
OU(A1-ENT(A1);B1-ENT(B1)) ==> FAUX
Et la formule renverra ==> 0 (au lieu de -1)

La formule corrigée fonctionne avec les entiers, les décimaux, les cellules vides et les nombres négatifs.

Un petit coucou à Roger 🙂

A plus
 
Dernière édition:
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Bonjour à tous et plus particulièrement à soenda et Roger.

J'ai tenté d'utiliser vos solutions, malheureusement sans grand succés, même en faisant en sorte que les 2 colonnes de chiffres (décimaux ou entiers) soient contiguës. Peut-être me suis-je mal exprimé dans ma requête... J'adresse donc un exemple de ce que j'ai utilisé pour résoudre le problème (ça marche), mais je voudrais savoir s'il est possible, au moyen d'une unique formule, d'obtenir le même résultat sans devoir rajouter, comme je l'ai fait, 2 colonnes supplémentaires.
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Bonjour Magic Doctor, soenda, Roger, pierrejean,

Une solution par formule matricielle (voir fichier joint) :

Code:
=MAX(NBCAR(STXT(B5:D11;CHERCHE("#";SUBSTITUE(SUBSTITUE(B5:D11;",";"#");".";"#")&"#")+1;100)))
Magic Doctor, ton truc n'est pas évident, en effet :

1) D7-ENT(D7) renvoie un nombre à 15 décimales (ces choses-là arrivent sur Excel...) donc cette méthode ne marche pas !

2) Il faut que la solution marche quelque soit le séparateur décimal utilisé

3) Enfin le ponpon 😛 en G7 tu fusionnes les cellules, ce qui ne permet pas d'y entrer une formule matricielle !

Edit : on peut remplacer B5: D11 par Colonne1:Colonne2. Bien sur, il ne faut pas de nombres décimaux entre les 2 plages.

A+
 

Pièces jointes

Dernière édition:
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Merci PierreJean pour ta solution.
Elle fera l'affaire en dépit d'un petit problème : la fonction ne reconnaît pas les cellules vides d'une des colonnes dans ma feuille (qui serait "Colonne1" dans l'exemple adressé), car ces cellules contiennent (pour des besoins de calculs ultérieurs) une condition du type :
SI(Y(O(G18=0;H19="");J18="");"";J17)
Quand elles contiennent un chiffre : pas de problème, mais quand elles sont vides : Erreur
La solution que j'envisage est, au moyen d'une macro événementielle, renommer automatiquement la Colonne1 afin que celle-ci ne contienne que des chiffres et aucune cellule vide.
À moins de faire une modification dans la fonction, mais là j'avoue ça me dépasse un peu...
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Bonjour Le fil, Roger, pierrejean, Magic Docteur

Formule (non-matricielle) rectifiée et testée avec les données fournies
Code:
=SI(ESTERREUR(CHERCHE(",";B5&D5));0;MAX(NBCAR(B5)-CHERCHE(",";B5&",");NBCAR(D5)-CHERCHE(",";D5&",")))
A plus

Edition : Bonjour job75

Correction : formule et fichier rectifiés
 

Pièces jointes

Dernière édition:
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Merci Soenda pour ta solution.
J'avais résolu le problème en utilisant une fonction, mais qui réclamait que l'on rajoute dans la feuille 2 colonnes. Je voulais trouver une solution pour obtenir le résultat escompté mais sans ces 2 colonnes superflues.
Ta solution fait économiser une colonne, en revanche celle de PierreJean, elle, résoud le problème des colonnes superflues malgré le détail des cellules vides que j'ai évoqué précédemment. Le problème était apparemment simple, mais la solution beaucoup moins...
Quant à la fonction fournie par PierreJean, elle démontre que la fonction parfaite qui fonctionne quelles que soient les circonstances, ne peut s'obtenir qu'en envisageant tous les cas de figures.
Mais encore merci à tous pour votre collaboration.
 
Re : Trouver, dans 2 colonnes, une valeur renvoyée par une fonction

Re

Veux-tu tester cette version qui devrait admettre des cellules vides issues de formule dans les zones
Je n'ai pas testé moi-même avec ta formule car elle se met en erreur chez moi et je ne suis pas assez formuliste pour savoir ce qui cloche
 

Pièces jointes

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

Re

@pierrejean
Ta solution fonctionne très bien chez moi (pas de souci avec les cellules vides) 🙂

ta formule ... se met en erreur chez moi
Si tu as testé avec SIERREUR (Excel2007), c'est normal car tu es sous Excel2000.
La formule pour Excel 2003 (voir PJ, 2 post plus haut) devrait fonctionner chez toi

Ceci dit, je n'ai toujours pas compris "le problème des colonnes superflues" 😕

A plus
 
- 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