Report d'informations entre 2 fichiers

Bonjour !

Je travaille sur un fichier de statistiques sur la location d'engins.

J'ai un premier fichier, le fichier "Table", qui est un export de mon logiciel. Mon deuxième fichier "Statistiques locations", que me permettra de jouer avec les données.

J'aimerais que la plage de date (G et H) dans le fichier "Table" soit reporté sous forme de "1" dans le fichier "Statistiques locations", aux bonnes dates et sur le bon n° de parc. Subtilité : il peut y avoir plusieurs plages pour un même n° de parc, qu'il doit toute ajouter.

Est-ce que quelqu'un saurait m'aider ? :)

Bonsoir,

donc peu importe que les dates concernent l'entrée ou la sortie, elles doivent toutes les 2 figurer dans le tableau sous forme de 1 ?

Je suppose que Novembre en F2 c'est pour 2023.

Il faudra modifier le format de date sinon la formule ne pourra pas savoir où mettre les 1.

Et je n'ai pas bien compris l'histoire des plusieurs plages pour un même n° de parc.

Bonjour,
En fait, la première date correspond au premier jour de location et la deuxième date correspond au dernier jour de location.

J’aimerais qu’il mette un 1 sur ces deux dates mais aussi entre : début le 01/02/24, fin le 03/02/24, il me faut un 1 sur la case du 01/02/24, 02/02/24 et 03/02/24.

Nouvembre et Décembre sont en effet en 2023. Je dois juste mettre un format date sur le mois et le jour ?

Sur le fichier Table, tu vas avoir plusieurs fois le même numéro de parc avec d’autres plages de dates = ce sont d’autres locations dans le mois pour le même engin. Et bien toutes ces locations doivent apparaître, il ne faut pas qu’il s’arrête en se disant : j’ai déjà rempli des cases pour ce numéro de parc.

Et voilà le fichier avec les dates au format date !

Merci, figure-toi que j'avais déjà transformé les chiffres en dates.

En une formule je ne pense pas que ce soit possible, sauf que je ne connais pas toutes les possibilités de 365 puisque j'en suis encore à Excel 2016.

Alors voici mon idée ;

- inscrire à côté des dates de retour toutes les dates allant de la sortie au retour

- faire un nouveau tableau avec une seule ligne par machine et par parc avec toutes les dates les unes derrière les autres (sans vide entre les périodes)

- se référer à ce nouveau tableau pour remplir le fichier de stat'.

J'ai fait la 1ère étape ;

excel a1 table par vaesinea b

On peut bien sûr mettre tout ça dans un autre fichier si le fichier "Table" est amené à être mis à jour régulièrement. Il faudra alors adapter les formules.

Dis-moi si ça convient et si tu parviens à faire la suite.

Merci Doux Rêveur

En effet, ta solution pourrait m'aider à faire ce que je veux cependant, mon fichier Table est un export de mon logiciel que je vais faire tous les mois.

J'aimerais éviter autant que possible de devoir noter des formules, et préfère automatiser le process via un code vba présent sur mon fichier statistique.

Penses tu que ce soit envisageable ?

Je ne connais pas grand chose en VBA.

Mais avec ce que je propose tout est automatisé, il ne faudra pas changer les formules.

A condition que le fichier créé tous les mois ait toujours le même nom ; il suffit pour ça de renommer le précédent pour qu'il ne soit pas effacé par la création du nouveau. Et ça je pense que c'est faisable avec un simple code VBA si tu ne veux pas le faire manuellement.

Quand je disais qu'il faudra adapter les formules, c'est une seule fois pour la version définitive du fichier, en rajoutant le nom du fichier de référence dans les formules.

Par exemple au lieu de mettre B3 dans une formule, on aura ;

'[table.xlsx]A'!$B$3

Il suffit de le faire dans la 1ère ligne et d'étier vers le bas, ça prend quelques secondes.

De toute façon ton projet utilise 2 fichiers.

Autre possibilité : tu gardes le fichier que j'ai fait et tu y rajoutes un code VBA qui tous les mois va effacer les colonnes entre A et H et les remplacer par le contenu du nouveau fichier.

Ou une variante peut-être plus simple : on met ces formules sur une 2ème feuille (d'un fichier nommé par exemple "Table 2") et chaque mois le code va effacer toute la 1ère feuille (sans devoir cibler les colonnes entre A et H) et la remplacer par le contenu du fichier "Table" (il peut même avoir un autre nom, tu peux faire une macro qui va cibler le fichier le plus récent).

A voir ce qui te convient mais au final ça reviendra au même, il n'y aura plus rien à changer.

Bonjour à tous,

Un essai (pas sûr d'avoir bien compris) :

Daniel

Bonjour Daniel,

Je pense que ta solution me convient mieux, je te remercie beaucoup Doux Rêveur pour ton aide !

Daniel, pourrais-tu m'expliquer un peu la formule s'il te plaît ? Je penses qu'il y a de petits décalages au niveau de la formule car les données sur le fichier stats ne correspondent pas totalement aux données dans la table.

Bonjour,

En F4, "FILTRE('[table-excelpratique.xlsx]A'!$E$1:$H$1000;'[table-excelpratique.xlsx]A'!$E$1:$E$1000=$E4)" reprend les colonnes E:H du classeur table pour lesquelles la colonne E est égale à E4, soit la matrice :

capture d ecran 2024 04 10 121505

La fonction affecte la variable "flt" à cette formule.

"ASSEMB.V(PRENDRE(flt;;-1);CHOISIRCOLS(flt;3))" assemble les deux colonnes de dates (G et H) l'une au dessus de l'autre:

capture d ecran 2024 04 10 122106

Ensuite, avec EQUIVX, je recherche la date en F3 dans la matrice ci-dessus. Si la date est trouvée, EQUIVX renvoie son numéro d'ordre dans la matrice, donc un nombre. Je teste si le résultat de EQUIVX est numérique et dans ce cas, je mets un "1".

Si tu veux d'autres explications, dis-le.

Daniel

Est-ce que ce genre de formule est possible sur les versions antérieures à 365 ?

Je me demandais comment utiliser les dates sans les écrire toutes à côté mais je n'avais pas trouvé.

Merci Daniel pour tes explications, c'est plus claire.

J'ai essayé de faire 2 fichiers plus petit pour bien comprendre le fonctionnement de ta formule, mais ça ne fonctionne plus.. Ci-joints les petits fichiers.

Par contre, il y a plusieurs point que je ne comprends pas dans la formule :

Dans la partie FILTRE([Table.xlsx]A!$E$1:$H$999;[Table.xlsx]A!$E$1:$E$999=$E4)

Tu fais référence, dans la matrice, aux colonnes allant de la désignation à la date de retour. Le critère se fait également sur la désignation. Or, mon numéro unique est mon n° de parc et pas la désignation qui va se répéter plusieurs fois.

J'ai essayé de refaire uniquement cette partie là en adaptant au n° de parc mais excel me renvoi l'erreur #CALC. Je ne comprends pas pourquoi ça ne fonctionne pas..

image
7table.xlsx (8.87 Ko)

@Doux Rêveur :

Je ne pense pas que ce soit possible sans colonnes de calcul supplémentaires. C'est en partie pourquoi j'ai souscrit un abonnement MS365 bien que je sois opposé au principe de l'abonnement.

Daniel

Est-ce que je me trompe ? Il n'y a pas de correspondance entre les numéros de parc des deux fichiers ?

Daniel

Les n° de parc présents dans le fichier "Table" se trouvent forcément dans le fichier "Stats"

Mais pas dans tes derniers classeurs :

capture d ecran 2024 04 10 161050

Daniel

Pour moi si ?

image

Voici le classeur "table" que tu as posté :

image

Daniel

Autant pour moi ! Voilà le bon

5table.xlsx (9.42 Ko)

Les numéros de parc étaient numériques dans le fichier table et alphanumérique dans l'autre. J'ai modifié le premier en utilisant :

=CTXT(D2;0;1)

Dans une autre colonne et en recopiant les valeurs en D2.

Voici les deux classeurs :

Daniel

6table.xlsx (16.07 Ko)
Rechercher des sujets similaires à "report informations entre fichiers"