XL 2016 Fusionner 2 tableaux en 1 ou copier coller une ligne sur 2

DomCab

XLDnaute Nouveau
Bonjour à toutes et tous, et merci de votre attention.
Je bloque sur un sujet peut être déjà traité, mais je n'ai pas trouvé dans mes recherches, d'où ma question.

J'explique ma situation.
Je voudrais faire des statistiques comparative entre deux tableaux de données sur l'année 2019 et 2020.
Actuellement mon fichier excel est constitué de 3 onglets (2019, 2020 et Comparatif)
Le but est de compléter le tableau comparatif avec le moins de saisie possible.
J'aurai souhaité imbriquer le tableau 2020 avec le tableau 2019.
En résumer, il faudrait copier les lignes 3,4,5,6... du tableau 2019 pour les coller dans le tableau comparatif en lignes 3,5,7,9....
et copier les lignes 3,4,5,6... du tableau 2020 pour les coller dans comparatif en lignes 4,6,8,10....
Il est évident que mes tableaux comportent bien plus de 4 lignes, et qu'il devient fastidieux de retaper une formule à chaque fois, puisque l'incrémentation ne peut fonctionner dans cette situation.
La copie des cellules en colonne A peut éventuellement suffire, j'ai trouvé une solution avec RECHERCHEV pour compléter le reste du tableau (RECHERCHEX aurait été plus pratique, mais non disponible sur la version excel que j'utilise)

Y-a-t'il un solution à mon problème sans passer par des macros que je maîtrise encore assez mal ?

Je vous remercie

Dom.
 

Pièces jointes

  • Compare2019_2020.xlsx
    20.7 KB · Affichages: 15
Solution
Bonjour tout le monde,
En PJ un peu la même approche, mais les formules sont les mêmes pour tout le tableau donc très simple à mettre en œuvre, avec :
VB:
2019 : =INDEX('2019'!A:A;(LIGNE()+3)/2)
2020 : =INDEX('2020'!A:A;(LIGNE()+2)/2)

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour DomCab,
En PJ une autre approche sans rapatrier les données. Si seuls les Totaux et Evolutions vous intéressent, cela simplifie la feuille. Avec :
VB:
Dates :
=SI(INDEX('2019'!A:A;Comparatif2!B3)="";"";INDEX('2019'!A:A;Comparatif2!B3))
Total :
=SIERREUR(SOMME(INDIRECT("'2019'!B"&EQUIV(Comparatif2!C3;'2019'!A:A;0)&":Y"&EQUIV(Comparatif2!C3;'2019'!A:A;0)));"")
et pour les index de tableau :
Code:
=1+ARRONDI(0,01+LIGNE()/2;0)
( La première ligne de données doit être en 3eme ligne )
 

Pièces jointes

  • Compare2019_2020.xlsx
    24 KB · Affichages: 5

JHA

XLDnaute Barbatruc
Bonjour à tous,
Bonjour sylvanu et Roblochon

Avec un peu de retard, une solution par formule avec une colonne supplémentaire.
Pour les dates en "A3"
VB:
=SIERREUR(SI(MOD(LIGNE();2)=1;INDEX(Onglet2019;EQUIV(PETITE.VALEUR(Onglet2019;NB.SI($AB$3:$AB3;1));Onglet2019;0));INDEX(Onglet2020;EQUIV(PETITE.VALEUR(Onglet2020;NB.SI($AB$3:$AB3;0));Onglet2020;0)));"")
copier vers le bas
Pour les données en "B3"
Code:
=SIERREUR(SI($AB3=1;DECALER(Ref_2019;EQUIV(Comparatif!$A3;Onglet2019;0);COLONNE()-1);DECALER(Ref_2020;EQUIV(Comparatif!$A3;Onglet2020;0);COLONNE()-1));"")
copier vers la droite jusqu'à la colonne "Z" et le bas

JHA
 

Pièces jointes

  • Compare2019_2020.xlsx
    22.6 KB · Affichages: 4

DomCab

XLDnaute Nouveau
Bonjour à tous et un grand merci
Merci Sylvanu, Merci Roblochon et Merci JHA.

Sylvanu, j'avais effectivement pensé à la simplification du tableau comparatif et je garde au chaud ton modèle

Roblochon, ta solution est très séduisante. Je ne connaissais pas les requêtes PowerQuery, et je vais approfondir le sujet. Malheureusement, la version que j'utilise est un peu plus ancienne que celle avec laquelle tu as généré le fichier ; je rencontre donc quelques erreurs d'incompatibitée.

JHA, le dernier qui a parlé à toujours raison ! Ce sont tes formules que je pense finalement utiliser pour résoudre mon problème.

Sinon, entre temps... parce que je n'aime pas rester sur un échec, j'ai réfléchi et trouvé peut-être une solution pour les tableaux spécifiques sur lesquels je travaille.
Comme vous l'avez certainement remarqué, les dates 2019 et 2020 évoluent de sept en sept.
Donc en A3 et A4 je copie simplement la première date 2019 et la première date 2020.
En A5 et A6, j'inscris =A3+7 et =A4+7
Sélection des deux cellules que je tire jusqu'au bas du tableau.
Pour les autres valeurs du tableau, j'utilise la formule RECHERCHEV ; =RECHERCHEV($A3;'2019'!$A$3:$Y$7;2;FAUX) réajustée pour chaque plage horaire.

Voilà, ce n'est peut-être pas très académique comme solution, mais à priori dans ce cas là, ça fonctionne !

Merci pour toutes vos contributions,
Bonne journée.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Malheureusement, la version que j'utilise est un peu plus ancienne que celle avec laquelle tu as généré le fichier ; je rencontre donc quelques erreurs d'incompatibitée.
Bonjour,

C'est étonnant, 2016 étant nativement muni de PowerQuery dont les méthodes ont guères évolué depuis.
Je serais curieux, pour une prochaine fois de savoir quelles erreurs de compatibilité vous avez rencontrées.

Cordialement
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
En PJ un peu la même approche, mais les formules sont les mêmes pour tout le tableau donc très simple à mettre en œuvre, avec :
VB:
2019 : =INDEX('2019'!A:A;(LIGNE()+3)/2)
2020 : =INDEX('2020'!A:A;(LIGNE()+2)/2)
 

Pièces jointes

  • Compare2019_2020 rev1 (2).xlsx
    21.4 KB · Affichages: 3

DomCab

XLDnaute Nouveau
Bonjour,

C'est étonnant, 2016 étant nativement muni de PowerQuery dont les méthodes ont guères évolué depuis.
Je serais curieux, pour une prochaine fois de savoir quelles erreurs de compatibilité vous avez rencontrées.

Cordialement
C'est peut-être mon incompétence qui est en cause ;)
Je ne maîtrise pas du tout les requêtes. Il va falloir que je me penche sur cet outil qui semble offrir pleins de possibilités.
L'erreur qui apparaît est la suivante :
Une erreur s'est produite dans la requête "T_2019". Expression.Error : 5 arguments ont été passés à une fonction qui en attendait entre 2 et 4.​
Détails :​
Pattern=​
Arguments=List​
Ceci est apparu lorsque j'ai voulu lancer "Modifier" dans le menu "Outils de requête".
En fait je voulais essayer de comprendre comment fonctionne ces requêtes pour pouvoir les adapter à mon fichier final.

Merci encore pour le temps que vous m'accordez.

Cordialement
 

DomCab

XLDnaute Nouveau
Bonjour tout le monde,
En PJ un peu la même approche, mais les formules sont les mêmes pour tout le tableau donc très simple à mettre en œuvre, avec :
VB:
2019 : =INDEX('2019'!A:A;(LIGNE()+3)/2)
2020 : =INDEX('2020'!A:A;(LIGNE()+2)/2)
Merci Sylvanu,

En voyant ta solution, ça semble tellement simple !
J'ai le cerveau trop compliqué, et même si je suis parvenu à un résultat avec ma "méthode", elle était encore lourde à mettre en oeuvre et surtout à faire évoluer.

Merci du temps que vous m'avez consacré.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

J'ai repris le fichier que je vous ai donné. Et la seule ligne dans laquelle il y a 5 arguements est la dernière ligne de la requête T_2019, nommée "Index ajouté" et qui ressemble à ça (dans la barre de formule de l'éditeur de requête PowerQuery) :
Table.AddIndexColumn(#"Lignes triées", "Index", 1, 1, Int64.Type)
Essayez de supprimé le dernier argument qui est optionel pour qu'elle devienne :
Table.AddIndexColumn(#"Lignes triées", "Index", 1, 1)

Faites de même pour la requêt T_2020

Voyez l'image ci-dessous.
1613049817944.png


Cordialement
 

DomCab

XLDnaute Nouveau
Re,

J'ai repris le fichier que je vous ai donné. Et la seule ligne dans laquelle il y a 5 arguements est la dernière ligne de la requête T_2019, nommée "Index ajouté" et qui ressemble à ça (dans la barre de formule de l'éditeur de requête PowerQuery) :

Essayez de supprimé le dernier argument qui est optionel pour qu'elle devienne :


Faites de même pour la requêt T_2020

Voyez l'image ci-dessous.
Regarde la pièce jointe 1095219

Cordialement
Merci Roblochon pour toutes ces précisions,
Je vais essayer de décortiquer ces requêtes qui me semble être vraiment un outil très intéressant, mais comme je le disait dans mon précédent message, je ne maîtrise absolument pas, il faut que je fasse un apprentissage.
Dans tous les cas merci à toutes et tous pour votre temps, vos solutions et précieux conseils qui m'ont permis de progresser.
Cordialement.
 

chris

XLDnaute Barbatruc
Bonjour à tous

Pour l'instant je n'ai trouvé que 2 différences, récentes, sur PowerQuery entre la 365 et les anciennes versions:
  • les index où il y a un argument en plus
  • le fractionnement de colonne sur la base de texte-chiffres ou chiffres textes
Mais j'ai trouvé dans Excel des incompatibilités dans des formules a priori toutes bêtes.
Donc l'écart va se creuser entre 365 et les versions 2019 et moins, pas seulement sur PowerQuery qui finalement semble plus stable pour l'instant...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 499
Messages
2 110 249
Membres
110 711
dernier inscrit
chmessi