Copie Colle avec condition sans vba

BENAM69

XLDnaute Occasionnel
Bonjour le forum,

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.

Merci de votre retour

Benam69
 

Pièces jointes

  • Classeur1.xlsx
    12.5 KB · Affichages: 6

BENAM69

XLDnaute Occasionnel
Salut Roblochon,

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 aide encore une fois

Cordialement

Benam
 

BENAM69

XLDnaute Occasionnel
Roblochon,

Finalement j'ai compris la formule agregat^^

Goube

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

Cdlt

Benam
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

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.

Lien vers l'aide excel: https://support.office.com/fr-fr/ar...fonction-43b9278e-6aa7-4f17-92b6-e19993fa26df

Cordialement
 

job75

XLDnaute Barbatruc
Bonsoir BENAM69, Roblochon, goube,

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.

Valider les formules par Ctrl+Maj+Entrée.

A+
 

Pièces jointes

  • Classeur(1).xlsx
    13 KB · Affichages: 4

job75

XLDnaute Barbatruc
Personnellement, j'utilise la fonction agregat, car elle a été écrite pour être plus performante que n'importe quelle autre formule matricielle
J'ai testé dans les mêmes conditions les formules des posts #2 (AGREGAT) et #7 (matricielles).

Les durées d'exécution sont les mêmes.

Salut JM et bonne nuit.
 

Pièces jointes

  • Agregat(1).xlsm
    561 KB · Affichages: 1
  • Matricielle(1).xlsm
    575 KB · Affichages: 2

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01