Microsoft 365 Copie d'une ligne entière d'un onglet vers un autre

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 !

Droopyougo

XLDnaute Nouveau
Bonjour,
J'ai un fichier composé de 3 onglets:
- "Réservations": tableau avec les noms en première colonne (B) et, ensuite, dans les colonne C,D,E,F,G,H,I et J, les produits concernés. En colonne K, j'ai le montant total et en L la date de paiement.
- "Commandes individuelles": tableau reprenant la structure du premier tableau, mais individualisé.
- "Participants": liste des participants s'incrémentant au fur et à mesure du remplissage du tableau "Résevations"

Je voudrais pouvoir recopier automatiquement dans l'onglet "Commandes individuelles" chaque ligne (colonnes de B à J) du tableau "Réservations" lorsque la date de paiement est introduite en colonne L du tableau "Réservations".
Cela, bien entendu, en utilisant une formule, pas de VBA (sinon ce ne serait pas amusant!) ;-)

J'ai utilisé la formule trouvée dans une discussion précédente et proposée par ROUGE en janvier 2021 (https://excel-downloads.com/threads...tomatiquement-sur-une-autre-feuille.20053107/)...
=SIERREUR(INDEX(Feuil1!$A$1:$G$1000; PETITE.VALEUR(SI(Feuil1!$C$2:$C$1000="voiture";LIGNE(INDIRECT("1:"&LIGNES(Feuil1!A2:A1000))));LIGNES($1:1))+1;COLONNE());"")
que j'ai "adaptée" à ma configuration de la manière suivante:
=SIERREUR(INDEX(Tableau3[Colonne1]; PETITE.VALEUR(SI(Tableau3[Colonne13]<>"";LIGNE(INDIRECT("1:"&LIGNES(Réservations!B5:J5))));LIGNES($1:1));COLONNE());"")

Cela me recopie bien le nom inscrit en colonne 1 de la ligne 1 (B5), mais c'est tout! rien de ce qui est dans les autres colonnes n'apparaît!
Et c'est ce même nom qui est reporté sur chaque ligne dès que j’introduis une date en colonne L (Colonne 13 du tableau)...

J'ai donc plusieurs problèmes:
- Pourquoi est-ce toujours le même nom qui revient sur chaque ligne?
- Pourquoi le reste de la ligne n'est-il pas recopié?
- Pourquoi, quelle que soit la ligne pour laquelle la colonne L est remplie la formule copie-t-elle le nom de la première ligne?

Je vous joint une copie du fichier dans lequel j'ai testé la formule en lignes 26 et suivantes de l'onglet "Commandes individuelles".
Les tableaux individuels des lignes précédentes étant des copies manuelles (copier-coller).

Pourriez-vous m'aider à comprendre ce qui ne fonctionne pas et comment modifier la formule pour obtenir le résultat souhaité?
Je continue à chercher de mon côté, mais... pour l'instant je ne vois pas où est l'erreur.

Si vous avez un peu de temps disponible et une idée pour créer automatiquement ces tableaux individualisés, je suis également preneur, mais c'est moins important!

Merci d'avance pour votre aide.
 

Pièces jointes

Bonjour,
Avec office 365, le plus simple est d'utiliser les formules modernes, ajoutées à cette version.
Formule unique :
Code:
=FILTRE(Tableau3[[Colonne1]:[Colonne1132]];Tableau3[Colonne13]<>"")

Le fichier exemple
Bonjour Cousinhub,
Grand merci pour cette solution qui fonctionne parfaitement.
Je ne connaissais pas cette fonction.
Est-ce qu'il serait possible d'insérer automatiquement les en-tête de colonne entre les noms de chaque participant?
Cela pour, au final, obtenir une fiche individuelle reprenant les choix de chacun.

Merci.

J'ai réutilisé ta formule en la modifiant légèrement pour faire la liste des participants en onglet 3. Ça fonctionne parfaitement lorsque je la colle n'importe où sur la feuille, mais pas dans le tableau!
Je reçois un message #PROPAGATION!
Qu'est-ce que cela signifie et comment faire pour que cela fonctionne dans le tableau aussi?
Merci d'avance.
 
Bonjour,
Hélas, ces nouvelles fonctions, dites "dynamiques", ne fonctionnent pas à l'intérieur d'un Tableau Structuré.
Il leur faut de la place en dessous, pour qu'elles puissent se propager suffisamment.
Quant à insérer les en-têtes entre les noms, et sans VBA, je ne vois pas trop, mais peut-être qu'un "formuliste 365" aguerri va passer par ce fil...
Sinon, il y a la possibilité Power Query, également nativement intégré à ta version Office.
 
Bonjour Droopyougo, Cousinhub, le forum,

Une solution classique.

Dans la 2ème feuille, pour remplir le tableau de la ligne 26, entrez en A26 cette formule matricielle :
VB:
=SIERREUR(INDEX(Tableau3; PETITE.VALEUR(SI((Tableau3[Colonne1]<>"")*(Tableau3[Colonne13]<>"");LIGNE(Tableau3)-4);LIGNE(A1));COLONNE());"")
à tirer vers la droite et le bas.

Les valeurs zéro peuvent être masquées avec le format 0;; sur B26:I29.

Sur Microsoft 365 la validation matricielle n'est plus nécessaire.

A+
 

Pièces jointes

Bonjour Droopyougo, Cousinhub, le forum,

Une solution classique.

Dans la 2ème feuille, pour remplir le tableau de la ligne 26, entrez en A26 cette formule matricielle :
VB:
=SIERREUR(INDEX(Tableau3; PETITE.VALEUR(SI((Tableau3[Colonne1]<>"")*(Tableau3[Colonne13]<>"");LIGNE(Tableau3)-4);LIGNE(A1));COLONNE());"")
à tirer vers la droite et le bas.

Les valeurs zéro peuvent être masquées avec le format 0;; sur B26:I29.

Sur Microsoft 365 la validation matricielle n'est plus nécessaire.

A+
Hello,
Cela, il l'avait déjà, avec la fonction "Filtre".
Son besoin est d'avoir en plus les en-têtes entre chaque nom. (sans VBA....) 🤔
 
Bonjour,
Hélas, ces nouvelles fonctions, dites "dynamiques", ne fonctionnent pas à l'intérieur d'un Tableau Structuré.
Il leur faut de la place en dessous, pour qu'elles puissent se propager suffisamment.
Quant à insérer les en-têtes entre les noms, et sans VBA, je ne vois pas trop, mais peut-être qu'un "formuliste 365" aguerri va passer par ce fil...
Sinon, il y a la possibilité Power Query, également nativement intégré à ta version Office.
Merci Cousinhub, je vais regarder du côté de Power Query, que je connais un peu, mais que je ne maîtrise pas vraiment.
Sinon, tu as une solution en VBA?

A+
 
Dernière édition:
Bonjour Droopyougo, Cousinhub, le forum,

Une solution classique.

Dans la 2ème feuille, pour remplir le tableau de la ligne 26, entrez en A26 cette formule matricielle :
VB:
=SIERREUR(INDEX(Tableau3; PETITE.VALEUR(SI((Tableau3[Colonne1]<>"")*(Tableau3[Colonne13]<>"");LIGNE(Tableau3)-4);LIGNE(A1));COLONNE());"")
à tirer vers la droite et le bas.

Les valeurs zéro peuvent être masquées avec le format 0;; sur B26:I29.

Sur Microsoft 365 la validation matricielle n'est plus nécessaire.

A+
Merci Job75.
Cela ressemble furieusement à la formule que j'utilisais initialement, mais manifestement améliorée car les différentes colonnes sont prises en compte.
Je vais y regarder de plus près, histoire de comprendre pourquoi la mienne ne fonctionnait pas.
La formule "moderne" proposée par Cousinhub est tout aussi fonctionnelle, en étant, me semble-t-il, plus simple.
Mais quoi qu'il en soit, j'aime apprendre et comprendre où sont mes erreurs, donc merci pour l'effort.
Je vais maintenant essayer de trouver une solution pour intégrer les lignes de titre des colonnes entre les noms afin d'obtenir des "tickets" individuels.
Cousinhub m'a mis sur la piste Power Query, je vais voir ce que je peux faire de ce côté là.
Si tu as une idée, je suis évidemment preneur, si possible avec un minimum d'explication, que je ne meure pas totalement idiot! ;-)

A+
 
Re-,
Avec Power Query.
J'ai modifié ton tableau d'entrée, et mis les plats en en-têtes.
Dans le 2ème onglet, le tableau tel que tu le voulais, et dans le 3ème onglet, la récap des commandes.
Pour mettre à jour, dans ruban "Données", tu cliques sur le bouton "Actualiser tout...".
J'ai commenté le code de la première requête dans l'éditeur avancé. La deuxième requête peut être entièrement réalisée par la souris.
J'ai appliqué une Mise En Forme Conditionnelle dans le tableau de commandes, afin d'avoir les mêmes couleurs que les en-têtes.
N'hésite pas si tu veux de plus amples explications.
 

Pièces jointes

Bon pas besoin de tableau en jaune, il suffit d'entrer en A5 :
Code:
=SIERREUR(INDEX(Tableau3; PETITE.VALEUR(SI((Tableau3[Colonne1]<>"")*(Tableau3[Colonne13]<>"");LIGNE(Tableau3)-4);1+(LIGNE()-5)/5);COLONNE());"")
et de recopier autant de fois que nécessaire le tableau A2:I6 vers le bas avec un pas de 5.
 

Pièces jointes

Le VBA n'est pas indispensable mais on peut se contenter de recopier les lignes 1 a 5 vers le bas avec leurs formules :
VB:
Private Sub Worksheet_Activate()
Dim n, pas
With [Tableau3] 'tableau structuré
    n = Application.CountIfs(.Columns(1), "<>", .Columns(11), "<>") 'SOMME.SI.ENS
End With
Application.ScreenUpdating = False
With Rows("1:5")
    pas = .Rows.Count
    .Offset(pas).Resize(Rows.Count - pas).Delete 'RAZ
    If n > 1 Then .Copy .Offset(pas).Resize(pas * (n - 1)) 'copier-coller
End With
End Sub
La macro est dans le code de la 2ème feuille et se déclenche quand on l'active.

Edit : en l'état la MFC de cette feuille ne sert à rien, on peut la retirer.
 

Pièces jointes

Dernière édition:
Waouw... ça s'emballe, là! Je n'arrive pas à suivre! ;-)
Merci à vous, Cousinhub et Job75, je vais regarder à vos solutions à tête reposée.
Dès que j'aurai pu tester et, surtout, comprendre les solutions proposées, je viendrai commenter et, probablement, fermer la discussion.

Encore un tout grand merci pour votre rapidité de réaction et le temps que vous avez déjà accordé à résoudre mon problème.

Cordialement
 
Bonjour,
Avec office 365, le plus simple est d'utiliser les formules modernes, ajoutées à cette version.
Formule unique :
Code:
=FILTRE(Tableau3[[Colonne1]:[Colonne1132]];Tableau3[Colonne13]<>"")

Le fichier exemple
J'aime bien cette formule, je ne pensais pas qu'on pouvait faire une condition sur un champ hors range à extraire ....
J'en étais resté à cette formule :
Code:
=CHOISIRCOLS(FILTRE(Tableau3;Tableau3[Colonne13]<>"");1;2;3;4;5;6;7;8;9)
 
- 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

Réponses
3
Affichages
216
wDog66
W
  • Question Question
Microsoft 365 Aide TCD Excel
Réponses
11
Affichages
634
Réponses
23
Affichages
734
Retour