Je n'ai pour le moment pas trouvé une personne dans les différents forums qui ait fourni une réponse à cette problématique, mais ne sait-on jamais.
Est-ce que quelqu'un saurait fournir une formule qui pourrait décrire ce besoin selon les conditions ci-dessous (sans VBA si possible) ?
SI sur l'onglet Base de donnée (démarrage de l'analyse ligne 10), (fonction ET) pour chaque cellule en C <>"" ET pour chaque cellule en D ="" ET pour chaque cellule en E <>"" , alors la valeur de chaque cellule E sera en cellule C sur l'onglet Feuille de réception (Seulement celles qui répondent à la condition)
Par contre, sur l'onglet Feuille de réception, il ne faut pas qu'il me laisse des cellules vides entre chaque cellule qui réponde à la condition et il ne faut pas que ce soit un doublon.
J'ai pu faire apparaître les données sur l'onglet Feuille de réception
Code:
=SI(ET('Base de donnée'!C11<>"";'Base de donnée'!D11="";'Base de donnée'!E11<>"");'Base de donnée'!E11;"")
mais c'est lorsque je tire la formule vers le bas, il y a des cellules vides. Il faut que les valeurs apparaissent à la suite si cela correspond.
Je vous ai mis en PJ le fichier pour que vous voyez ce que je recherche.
PS : Si vous réalisez un VBA en dernier choix, il faudrait l'adapter pour Excel 2013 bien que je peux aussi utiliser Excel 2016.
Je te remercie pour ton aide.
Le résultat correspond à ce que je recherche.
Est-ce que tu saurais m'expliquer la fonction agregat ? Je n'ai jamais entendu parler de cette formule.
Merci pour ton retour mais la réponse de roblochon se rapproche plus de ce que je recherche en terme de formule. En tout cas merci beaucoup pour t'être penché sur le problème
La fonction agregat permet d'appliquer différentes fonction d'agregation ou statistique à un base de donnée, en évitant les erreurs et/ou lignes masquée. Elle permet en plus, avec les fonctions matricielles comme Grande.Valeur ou Petite.Valeur de ne pas les valider par CTRL+MAJ+ENTREE
Ici on utilise la fonction petite.valeur pour retourner les index de lignes correspondantes en évitant les erreurs, provoquée par les divisions par 0 d'une condition. La fonction va donc retourner que les lignes pour lesquelles les divisions comparatives ne provoquent pas d'erreur #DIV/0.
C'est un problème très classique avec une formule matricielle.
Formule en G10 du fichier joint :
VB:
=SIERREUR(INDEX('Base de donnée'!B:B;PETITE.VALEUR(SI(ESTVIDE('Base de donnée'!$D$10:$D$21)*ESTNUM('Base de donnée'!$E$10:$E$21);LIGNE('Base de donnée'!$E$10:$E$21));LIGNES(G$10:G10)));"")
Pour les formules en H10 et I10 il suffit de la tirer vers la droite et d'adapter la plage à droite de INDEX.
Ce n'est que votre avis. Personnellement, j'utilise la fonction agregat, car elle a été écrite pour être plus performante que n'importe quelle autre formule matricielle, elle reste performante sur de grandes bases de données.