XL 2016 Incompatibilité formules Office 365 sous Excel 2016

spike29

XLDnaute Occasionnel
Bonsoir le forum,

Je viens vers vous car je suis confronté à un problème de compatibilité de version Excel.
Je m'explique, je gère différent fichiers qui fonctionnent via du code VBA / formules excel classiques.
Depuis quelques temps je suis confronté à des difficultés car une partie de mon équipe travail sous un pack office office 365 et l'autre partie sous un pack office 2016 professionnel plus.

Quelques exemples précis qui me bloquent :

J'ai les formules suivantes sur l'un de mes fichiers. Sous office 365 RAS, elles fonctionnent correctement, en revanche sous Office 2016 pro elles affichent la mention :
#NOM?

Code:
=MAX.SI.ENS(STAT_NET!$B$11:$B$65000;STAT_NET!$F$11:$F$65000;Rapport_Net!$C13;STAT_NET!$D$11:$D$65000;Rapport_Net!$A13)

Code:
=SI($A13="";"";$C$8-$E13)

Je n'arrive pas à voir d'où peut provenir l'erreur.

Merci d'avance pour votre aide.

Bonne fin de journée
 
Solution
Re,
La valeur par défaut dont tu parles est en fait 0, mais ça m’étonnerait que ça marchait avec la formule MAX.SI.ENS que tu as indiquée.

Tu peux dans les options désactiver l'option affichant les valeurs 0 : Options, Options avancées, Options d'affichage de la feuille de calcul, et décocher Afficher un zéro dans le cellules qui ont une valeur nulle.

Ou alors faire un test dans la formule :
Code:
=SI(MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;""))=0;"";MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;"")))

Tu peux aussi nommer tes plages pour avoir une formule plus lisible et plus concise, par exemple ...

Phil69970

XLDnaute Barbatruc
Bonjour @spike29 , @Marcel32

Bien vu @Marcel32 ;)
Je crois bien que MAX.SI.ENS n'existe pas sous 2016.

1645744761209.png



@Phil69970
 

spike29

XLDnaute Occasionnel
Merci pour le retour.

Aie, du coup auriez-vous une idée de comment adapter ce code de sorte a ce qu'il soit compatible sur les deux versions (2016 et office 365) ?

Mon poste étant sur office 365 et ne pouvant pas accéder dans l'immédiat à un poste sous 2016.

Je ne voit pas trop comment se substituer à cette fonction.

Merci d'avance

Bonne fin de journée
 

spike29

XLDnaute Occasionnel
Bonsoir,

Merci pour le retour. J'ai inséré la formule dans mon fichier et tant bien que mal essayé de la remanier mais je n'arrive pas au même résultat qu'avec le "MAX.SI.ENS" d'origine.

A titre de test, j'ai inséré la formule dans la cellule E13 de la Feuil de calcul Rapport_Net et je suis censé y trouver la dernière occurrence présente dans la base de donnée de la Feuil STAT_NET pour la tâche MS du n° X36.

Lorsqu'on se reporte à la base de données présente dans la Feuil STAT_NET, je devrais en E13 obtenir la date 05/11/2021 (dernière date connue pour une tâche MS pour le n° X36) et non 08/11/2021.

Pour simplifier l'échange je vous met en PJ mon fichier anonymisé.

Concernant le test sous office 2016, je serais en capacité de le réaliser dès la semaine prochaine.

Encore merci pour votre aide.

Bonne fin de journée
 

Pièces jointes

  • Suivi_TEST.xlsm
    65 KB · Affichages: 6

ALS35

XLDnaute Occasionnel
Bonjour à tous,

Je pense plutôt comme ça :
VB:
=MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;""))
Formule matricielle à valider impérativement par Ctrl+Maj+Entrée, elle se met alors automatiquement entre accolades {}.

Cordialement
 

spike29

XLDnaute Occasionnel
Bonjour,

Merci du retour. Cela fonctionne correctement chez moi sous office 365.

Seul bémol, lorsqu'il n'y a pas de valeur dans la colonne C correspondant, la cellule en E n'affiche pas un contenu vide "", mais une valeur par défaut.
Ce que je souhaite (et qui fonctionnait avec la formule initiale MAX.SI.ENS) c'est qu'en l'absence de valeur dans la colonne C, que la cellule correspondante en col E reste vide.

Pourtant dans la formule proposée il y a bien à la fin les guillemets permettant en principe de ne rien afficher si la cellule de référence est vide.

Mon fichier en PJ.

Bonne journée
 

Pièces jointes

  • Suivi_TEST.xlsm
    65.5 KB · Affichages: 6

ALS35

XLDnaute Occasionnel
Re,
La valeur par défaut dont tu parles est en fait 0, mais ça m’étonnerait que ça marchait avec la formule MAX.SI.ENS que tu as indiquée.

Tu peux dans les options désactiver l'option affichant les valeurs 0 : Options, Options avancées, Options d'affichage de la feuille de calcul, et décocher Afficher un zéro dans le cellules qui ont une valeur nulle.

Ou alors faire un test dans la formule :
Code:
=SI(MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;""))=0;"";MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;"")))

Tu peux aussi nommer tes plages pour avoir une formule plus lisible et plus concise, par exemple :
Code:
=SI(MAX(SI((PlageNuméros=$A13)*(PlageTâches=$C13);PlageDates;""))=0;"";MAX(SI((PlageNuméros=$A13)*(PlageTâches=$C13);PlageDates;"")))

Sinon tes formules en C7 et D7 peuvent être simplifiées en
Code:
=TEXTE(C8;"jjjj")
et
Code:
=NO.SEMAINE(C8;21)
Ta formule en C8 affiche aujourd'hui quelle que soit la valeur de W8.

Cordialement
 

spike29

XLDnaute Occasionnel
Bonjour,

Désolé pour le retour tardif. Merci pour cette réponse détaillée.

La première formule fonctionne bien, un grand merci :

VB:
=SI(MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;""))=0;"";MAX(SI((STAT_NET!$D$11:$D$64449=$A13)*(STAT_NET!$F$11:$F$64449=$C13);STAT_NET!$B$11:$B$64449;"")))

Concernant ma formule MAX.SI.ENS de mon côté ça fonctionnait bien.
Si colonne C vide, colonne E vide.
Le fichier en PJ.

Encore merci pour votre aide, bonne journée.
 

Pièces jointes

  • Suivi_TEST.xlsm
    65.8 KB · Affichages: 3

ALS35

XLDnaute Occasionnel
Concernant ma formule MAX.SI.ENS de mon côté ça fonctionnait bien.
Si colonne C vide, colonne E vide.
Le fichier en PJ.
Bonjour,

Je pense que tu as des macros qui recréent ta formule en E et/ou probablement la mise en forme, et comme il y a un mot de passe pour l'accès à vba !
Sinon je confirme, la formule MAX.SI.ENS affiche bien 0 quand il n'y a pas de correspondance, teste sur une autre colonne que E.

Cordialement
 

spike29

XLDnaute Occasionnel
Bonjour,

Autant pour moi j'ai oublié de retirer le mdp sur la version que j'ai transmise.
Oui tu as parfaitement raison, ma macro utilise la méthode ".FormulaLocal" afin de systématiquement au moindre clic recréer la formule (méthode aussi lourde qu'imparable pour les éventuels utilisateurs peu précautionneux...

Oui sur une autre col que E nous sommes bien d'accord.

Cordialement,
 

Discussions similaires

Réponses
6
Affichages
1 K