Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

MarionT

XLDnaute Nouveau
Bonjour,

Je suis débutante en Excel et je n'ai pas trouvé la réponse à ma question... je n'ai peut-être pas assez cherché, désolée, mais je ne vois pas !

J'ai un onglet avec 3 colonnes.
Je souhaite reporter chacune des lignes dans l'onglet 2, 3 ou 4 en fonction du contenu de la 1ère cellule.
Si A1 = A, alors reporter A1, B1 et C1 dans l'onglet 2
Si A1 = ?, alors reporter A1, B1 et C1 dans l'onglet 3
Si A1 = D, alors reporter A1, B1 et C1 dans l'onglet 4

Je souhaite pouvoir mettre à jour ma liste dans l'onglet 1, et que les 3 listes différentes se mettent à jour automatiquement dans les 3 autres onglets.

Merci d'avance pour votre aide !
 

MarionT

XLDnaute Nouveau
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Merci..
je ne suis pas très douée, je n'arrive à reporter cette cellule dans mon document.
J'ai changé le nom de l'onglet (il s'appelle "Tous" chez moi) mais je ne vois pas ce qui peut bloquer d'autre.
Quand je recopie la formule dans l'onglet 2, il affiche la valeur de la cellule B1, quel que soit le code de la case A1.
Et il n'affiche rien dans les cases suivantes, même en y recopiant aussi la formule.
 

Dugenou

XLDnaute Barbatruc
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour,
si vous pouviez joindre votre fichier exemple avec quelques lignes ce serait certainement plus évident de vous aider (voir la charte)
la formule est "matricielle" et doit être validée avec la combinaison de touches ctrl+maj+enter aprés chaque modification (ensuite elle se recopie)
Cordialement
 

MarionT

XLDnaute Nouveau
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Merci beaucoup, ça marche ! C'était cela qui manquait.

Une dernière demande : quand la case d'origine est vide (2ème ou 3ème colonne), est-ce possible que la case reportée soit vide aussi, et non pas avec la valeur "0" comme c'est le cas actuellement ?
 

Dugenou

XLDnaute Barbatruc
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour,

Si si vous êtes douée : peu de nouveaux s'en sortent sans plus d'explication !! :)

Si toutes les données à reporter sont du texte : ajouter &"" à la fin de la formule (et valider à nouveau par ctrl+maj+enter)
Code:
=SIERREUR(INDEX(Onglet1!B$1:B$9;PETITE.VALEUR(SI(Onglet1!$A$1:$A$9="A";LIGNE(Onglet1!$A$1:$A$9));LIGNE()));"")&""

Si toutes vos données sont des chiffres : utilisez le format personnalisé suivant sur vos cellules de destination : 0;0;

Cordialement
PS : attention cependant : puisqu'on utilise une formule, la cellule de destination ne sera jamais "vide". Elle contiendra "" ou un zero masqué par le format selon que vous utilisez la solution 1 ou 2
 
Dernière édition:

jcf6464

XLDnaute Occasionnel
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour à MarionT, Dugenou et le forum

Cette matricielle est bien quand on commence le transfert dans onglet 2 ligne A1

mais quand le transfert est sur onglet 2 ligne 4 !!!

bonne soirée

jcf64
 

Dugenou

XLDnaute Barbatruc
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour,
Si la formule est en ligne 4 :
=SIERREUR(INDEX(Onglet1!B$1:B$9;PETITE.VALEUR(SI(Onglet1!$A$1:$A$9="A";LIGNE(Onglet1!$A$1:$A$9));LIGNE()-3));"")&""
Le terme ;ligne() est utilisé pour renvoyer 1 puis 2 etc en recopiant vers le bas pour la partie petite.valeur(matrice;k)
Cordialement
 

Koenraad

XLDnaute Nouveau
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour,

Je suis dans un cas très semblable:

1. Je remplis les cellules de la colonne C de la feuille "produits", à l’aide de la liste déroulante qui fait référence aux articles de la colonne C de la feuille "catégories".
2. Je voudrais que les cellules de la colonne B (toujours de la feuille "produits") se remplissent automatiquement par le contenu de la colonne B de la feuille "catégories" se trouvant sur la même ligne que l'article choisi dans le 1. ci-dessus.
3. Si cette cellule B "source" est vide, il faut aller chercher le contenu de la cellule pleine qui est située plus haut.
4. Même chose pour la colonne A de la feuille "produits".

Voici le lien de mon fichier:
https://www.dropbox.com/s/81ffj157c59kq9j/LISTECOMPLETE%202.xlsx?dl=0
Exemple: dans la feuille "produits" j'ai coché "Les livres liturgiques officiel" (cellule C68). Il faudrait que B68 se remplisse de "Livres liturgiques" et A68 de "Liturgie".

Je vous remercie d'avance et vous prie de m'excuser d'en savoir si peu en Excel,

Koenraad
 

Dugenou

XLDnaute Barbatruc
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour,
Ne t'excuses pas ! ce site est fait pour que chacun puisse s'améliorer.
Je ne peux malheureusement pas accéder au site dropbox.
Peux tu joindre un fichier (même structure mais peu de lignes) directement à ce fil en cliquant sur le bouton aller en mode avancé puis gérer les pièces jointes ou icone trombone.

Cordialement
 

Dugenou

XLDnaute Barbatruc
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonjour,
Je pense que tu aurais pu créer un nouveau sujet car c'est un peu différent dans ton cas.
Il faut renvoyer la dernière ligne non vide de la colonne à gauche du choix :confused:

Voir en PJ la formule un peu compliquée mais expliquée pas par pas.

Attention à bien valider en matriciel : à chaque fois que vous corrigez la formule : valider par la combinaison des 3 touches CTRL+MAJ (prov) + ENTER : des {} doivent apparaître autour de la formule

Pour la colonne B
Code:
=INDEX(Catégories!$B$1:$B$57;MAX(SI(NON(ESTVIDE(DECALER(Catégories!$B$1;;;MAX(SI(Catégories!$C$1:$C$57=Produits!C4;LIGNE(Catégories!$C$1:$C$57))))));LIGNE(DECALER(Catégories!$B$1;;;MAX(SI(Catégories!$C$1:$C$57=Produits!C4;LIGNE(Catégories!$C$1:$C$57))))))))

Pour la colonne A
Code:
=INDEX(Catégories!$A$1:$A$57;MAX(SI(NON(ESTVIDE(DECALER(Catégories!$A$1;;;MAX(SI(Catégories!$C$1:$C$57=Produits!C4;LIGNE(Catégories!$C$1:$C$57))))));LIGNE(DECALER(Catégories!$A$1;;;MAX(SI(Catégories!$C$1:$C$57=Produits!C4;LIGNE(Catégories!$C$1:$C$57))))))))

Par la suite on pourrait rendre l'ensemble plus lisible avec une formule nommée.

Cordialement
 

Pièces jointes

  • Koenraad.xlsx
    43.9 KB · Affichages: 106

Koenraad

XLDnaute Nouveau
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Merci mille fois! c'est un vrai cours de programmation que vous me donnez. Cela fonctionne parfaitement pour le remplissage automatique de la colonne B; mais:
– si C est vide, il me met par défaut "Images, jeux et accessoires" dans A et "Bricolage" dans B;
– si je mets quelque chose manuellement dans cette même colonne B (grâce à la liste déroulante), la colonne A ne réagit pas, alors que là aussi, il faudrait que A affiche le contenu de la cellule A de la même ligne ou de la ligne supérieure de la feuille "catégories" correspondant à ce que j'ai choisi dans B. J'ai mis comme exemple dans le B5 "Discours et lettres"; A5 devrait afficher "Magistère".
J'en demande peut-être trop pour Excel?

Koenraad
 

Pièces jointes

  • Koenraad2.xlsx
    44.1 KB · Affichages: 77

Dugenou

XLDnaute Barbatruc
Re : Reporter une ligne dans une autre feuille en fonction du contenu d'une cellule

Bonsoir,
Demander trop à Excel : non (la seule chose qu'Excel ne sait pas faire c'est le café !! :))
pas le temps ce soir : je verrai demain.
En effet pour une cellule vide il y a plusieurs possibilités donc ça renvoie n'importe quoi
pour la colonne B : on ne peut pas avoir en même temps une valeur et une formule.
On peut modifier la formule de la colonne A pour que ça recherche la valeur de la colonne B mais si vous mettez une valeur dans cette colonne b puis que vous voulez rechercher à partir de la colonne C ça ne changera plus rien.
Peut être prévoir 2 types de recherche ou un choix de la colonne.
Ensuite il faut s'assurer qu'on a pas deux valeurs identiques dans la colonne B (ou C d'ailleurs)
Enfin il faut éviter les valeurs vides dans vos listes de recherches : on peut le faire aussi par formules.

Tout serai plus simple si vous ré écriviez la valeurs des colonnes A et B sur chaque ligne dans une véritable base de données, ensuite on pourrait faire des recherches dans tous les sens ... ou utiliser un filtre tout simplement.

A demain donc
 

Discussions similaires