Rapporter des donnée d'un ficher à un autre

Bonjour,

Je souhaite rapporter des données d'un fichier à un autre grace à une macro, c'est pour cela je m'adresse aux experts dans la matière dans ce forum car je suis débutant en VBA.

Voici deux fichier : je souhaite rapporter des données du premier fichier au deuxième.

Dans le premier fichier il y'a plusieurs données, mais que certains m'interesse pour ma base (ficher 2)

je souhaite rapporter le N° d'article (item), Tension(voltage Name), Frequence , les P2,P1, N , I vont rester vide pour l'instant et ensuite rapporter, P2 Name, Pole et supplier et enfin rapporter tout le tableau de la colonne AJ à BG.

Donc voila j'espere j'etais clair.

1er ficher:

http://cjoint.com/13oc/CJrpANDxtIf.htm

2ème fichier :

Je vous remerci d'avance

Messin

Salut,

messin57000 a écrit :

Donc voila j'espere j'etais clair.

Non, pas trop Raison probable pour laquelle tu n'as pas encore reçu de réponse.

Tu n’utilises pas les noms des fichiers mais tu parles du premier fichier, ficher 2 (enfin, je présume que ficher 2 ça veut dire fichier 2) ; tu dis que tu veux rapporter les P2, P1, etc. mais tu ne dis pas dans quelles colonnes ça se trouve. Tu ne dis pas si tu veux rapporter toutes les lignes du fichier « Fichier_travail » ou seulement certaines (tu n’as que 3 lignes à disposition dans ton fichier « Base_moteur_vf »). Tu parles de rapporter le « N° d’article (Item) » au lieu de dire tout de suite que tu parles de la colonne A ou de la colonne « Item », etc.

De plus, pourquoi commencer ton tableau dans le fichier « Base_moteur_vf » à la cellule B6 et non pas A1 ??

Mais avant que tu m’expliques un peu mieux tes désirs, pourquoi ne prendrais-tu pas simplement une copie du fichier de base dans lequel tu supprimerais toutes les colonnes et toutes les lignes qui ne t’intéressent pas ? Est-ce vraiment un travail que tu dois faire régulièrement ?

Si c’est vraiment une macro dont tu as besoin, merci de préciser quelles colonnes du fichier de base doivent aller dans quelles colonnes du fichier cible, d’indiquer quelles lignes doivent être traitée dans le fichier de base (toutes les lignes dès la ligne 4 sauf les lignes spéciales telles que le 17, la 31, etc. ??).

Merci également d’utiliser le correcteur d’orthographe de Word ; ça rend évite quand même pas mal de fautes, donc ça nous en facilite la lecture.

En enfin, si ce n’est pas nécessaire de passer par le site C-Joint car les fichiers sont trop gros, merci d’utiliser les outils du Forum, c’est quand même plus simple de consulter les fichiers.

A te relire.

Bonjour

Je m'excuse si j'étais pas très clair quand je decrivais mon souhait.

je vais essayer d être plus clair, en esperant y arriver

alors il y'a deux fichier

Fichier 1 : (fichier travail) http://cjoint.com/13oc/CJrpANDxtIf.htm

Fichier 2 : (base moteur)

Alors je dis je souhaite rapporter quelques données du fichier 1 au fichier 2.

Dans le fichier 2, il y'a un tableau pret a recevoir les données c'est ces données la que je souhaite rapporter.

pour les colonnes ou vont etre rapporter les données c'est suivant le tableau qui est pret, c'est a dire N° d'article dans la colonne B, Tension dans C ...

Pourquoi commencer mon tableau à B6 c'est juste une quetion de visuel, il n'ya pas vraiment une explication à ce choix...

Pourquoi ne pas faire juste une copie? le probleme c'est que le fichier il risque d'être incrementer par la suite avec un nouveau article et il faut que celui la apparait dans le deuxième fichier, alors que si on fait juste une copie le deuxieme fichier ne sera pas mis a jour.

Concernant le deuxième fichier il n'ya que 3 ligne qui sont prete mais j'utilise bien tout le fichier travail apres c'est juste la mise en forme que je vais regler.

Par contre , je te remerci d'avoir poser la question , les ligne grisé dans la base moteur ( ligne 17, 37, 41 ...) je ne l'ai prend pas en consideration et je ne les rapporte pas dans le nouveau fichier.

Donc les données a rapporter sont les données pret dans le deuxieme fichier (fichier travail).

Je te remerci d'avoir pris le temps d'éclairer mon sujet Yvouille.

Merci d'avance A+

Messin

Salut,

Je t’ai demandé de ne pas utiliser le site C-Joint si ce n’est pas nécessaire et bien entendu que tu utilises ce même site pour tes nouveaux fichiers Déjà là, je me pose la question de savoir si je te laisse tomber ou non, puisque tu n’écoutes pas ce que je te dis. Comme de plus tes fichiers sont absolument inutiles – puisque tu les avais déjà placés dans ton premier message – ça ne fait qu’alourdir tes informations.

Ensuite, vu les questions que je t’ai posées, tu aurais dû comprendre que j’avais compris que tu voulais transférer des données d’un fichier à un autre (c’est également indiqué dans ton titre), il était donc inutile de réexpliquer tout ça.

Avec Excel il faut se méfier des lignes vides comme de la peste. Il est donc assez déraisonnable de commencer un tableau au milieu d’une feuille. Si ça te gênes de ne pas voir les marges, utilise l’affichage « Mise en page ».

Maintenant je maintiens que le plus simple dans ton cas est d’effectuer une copie réactualisée de ta feuille de base – avec ta sélection de données - à chaque fois que tu en as besoin.

Comme tu es toujours aussi obscur dans tes explications – tu me dis par exemple que je dois reporter les numéros d’article *** dans la colonne B, mais il n’y a pas de numéros d’article dans ton fichier de base – je te montre un exemple personnel afin que tu comprennes mieux ce que je veux dire.

Afin de simplifier ma démonstration, je copie des données d’une feuille à une autre au lieu de les copier d’un fichier à l’autre, mais ça revient au même en finale ; lorsque nous nous serons mis d’accord sur les bases du problème, sur la manière de procéder, ce sera un jeu d’enfant de fignoler tout ça en fonction de tes désirs.

Dans le fichier ci-joint - sur la base du peu que j’ai compris - lorsque tu cliques sur le bouton ‘Reporter certaines données sur une autre feuille’, les données de la colonne A 'Item' *** de la ‘Feuille Source’ sont reportées dans la colonne A de la ‘Feuille Cible’ ; les données de la colonne ‘Voltages Name’ dans la colonne ‘Tension’, la colonne ‘Hz’ dans la colonne ‘Fréquence’. Les lignes ‘spéciales’ ne sont quant à elles pas reportées.

Si tu modifies des données de la ‘Feuille Source’ et que tu cliques à nouveau sur le bouton en place, la ‘Feuille Cible’ est bien réactualisée comme tu le désires, non ? De même que si tu effaces les données de la ‘Feuille Cible’ et que tu lances à nouveau la macro.

Si ça joue pour ces trois colonnes, on peut traiter autant de colonnes supplémentaires que tu le désires, il faudrait juste dire quelles colonnes de la ‘Feuille Source’ vont dans quelles colonnes de la ‘Feuille Cible’ (mais avec un peu plus de précisions que jusqu’ici).

Afin que tout ceci fonctionne, il faut bien entendu que les macros soient enclenchées sur ton ordi.

Ensuite, si tu ne désires pas devoir cliquer sur un bouton afin de réactualiser ta cible, on pourrait automatiser la chose de manière à ce que ça soit réactualisé par exemple à chaque sélection de la ‘Feuille Cible’ ou à chaque ouverture d’un ‘Fichier Cible’, ou je ne sais quoi. Et puis l’on pourrait également voir ce que tu désires comme mise en page finale, etc.

Mais allons-y par étape et commençons par le début, non ?

Amicalement.

*** cet exemple est un peu bête, mais reporte ce problème à 20 colonnes pour lesquelles les descriptions sont encore plus imprécises et tu comprendras ma douleur

Bonjour,

Merci encore pour le temps que tu consacre à mon sujet, et je m'excuse encore une fois si je me suis pas très appliqué...

Oui ce qui a été fait dans le fichier joint c'est exactement ce que je souhaite, le clique sur le bouton pour mettre à jour la liste me convient parfaitement.

Je vais commencer à expliquer dans l'ordre. Dans la feuille cible, pour l'instant il y'a les trois première colonne qui sont remplis avec le N° d'article, la tension et la frequence, ensuite je vais organiser la succesion des colonnes dans l'ordre qu'il est aujourd'huit dans la feuille cible en 4 parties :

1 - [P2,P1,N,I]

2 - [P2Name,Pole,Supplier]

3 - trois colonne vide

4 - 5 valeurs de chacun des parametres P2,P1,N,I

pour la premiere partie, il n y'a rien a rapporter les 4 colonne vont etre calculés à partir des valeurs disponible dans la partie 4 (droitereg), donc ce qu'il faudrai rapporter c'est la partie 4 et par la suite envisager de creer une macro qui cacul les coeff et fait les equations mais pour l'instant on se concentre sur rapporter les valeurs.

Pour la deuxieme partie elle doit etre rapporter de la feuille source. jevais donner les details de quelle valeurs de la feuille source va dans quelle colonnede la feuille cible un peu plus en bas.

Pour la 3ème partie, j'ai laissé trois colonnes vide au cas ou on souhaiterai ajouter d'autres paramètres par la suite.

Pour la 4ème partie il faudrai la rapporter aussi de la feuille source.

Pour la suite, je souhaite rapporter les données suivant :

Feuille source Feuille cible

P2 Name Colonne H ( P2 Name)

Pole Colonne I ( Pole)

Supplier Colonne J (Supplier)

Pour la 4ème partie les valeurs dans la feuille source sont situées de la colonne AJ à la colonne BG. il faudrai rapporter toutes ces colonnes dans les colonnes de N à AK de la feuille cible.Il sont dans l'ordre de P2-0% à I125%. remarque meme si les lignes de ces colonnes la sont encore vides, ils vont être incrémenter par la suite.

Voila j'espere j'etais un peu plus clair cette fois -ci.

Très amicalement

Salut,

Sur la base de tes explications, voici ce que j’ai ajouté dans le fichier ci-joint :

De Feuille Source / à Feuille Cible

P1 Name / Colonne H

Pole / Colonne I

Supplier / Colonne J

Colonnes AJ:BG / Colonnes N:AK.

messin57000 a écrit :

pour la premiere partie, il n y'a rien a rapporter les 4 colonne vont etre calculés à partir des valeurs disponible dans la partie 4 (droitereg), donc ce qu'il faudrai rapporter c'est la partie 4 et par la suite envisager de creer une macro qui cacul les coeff et fait les equations mais pour l'instant on se concentre sur rapporter les valeurs.

Si tu indiques manuellement sur une Feuille Cible – après que ma macro ait été lancée – ce que tu désires comme formules dans ces colonnes, je peux l’inclure au code de base.

J'ai trouvé que tout le reste n'était que blablabla. Si jamais j'ai loupé quelque chose d'important, merci de me le redire.

Je t’ai déjà conseillé d’utiliser le correcteur d’orthographe Word (tu copies ton texte ou tu l’écris directement dans Word et tu lances le correcteur d’orthographe) ; ceci évite déjà énormément de fautes et tu montres ainsi beaucoup plus de respect à la personne qui doit te lire

Amicalement.

Bonjour,

Merci encore une fois pour ta réponse et pour le temps que tu consacre à mon sujet.

J'ai essayé cette fois-ci d'utiliser le correcteur d'orthographe sur WORD.

Alors, j’ai fait juste un petit changement dans la macro, j’ai ajouté :

Pole / colonne L

IEx/ colonne I

Size/ colonne K

Pour la suite, je veux qu’on s’intéresse à la partie de calcul pour remplir P2 (colonne D) , P1 (colonne E) N ( colonne F) et I (colonne G), et pour cela on va utiliser les données disponible de la colonne N à la colonne AK de la feuille cible.

Voici un fichier qui contient l’exemple du premier article et l’explication complète de ce que je souhaite.

Cet exemple doit être appliqué sur tous les autres articles grâce à une macro, et pour le tableau de coefficient, on peut le mettre tout à droite du fichier.

Très amicalement

16concatener.xlsm (20.59 Ko)

Désolé j'ai oublié de joindre le fichier avec les modifications.

Salut,

Si tu as modifié ma macro, se serait bien que tu me fournisses ton nouveau fichier afin que je puisse voir à quoi ressemble ta Feuille Cible avant que tu y introduises les données manuelles supposées m’aider à continuer la macro (afin de voir ce qui est apporté par la macro, ce qui est ajouté par toi).

Ensuite, je n’ai pas trop cherché à comprendre le tout en attendant le fichier demandé ci-dessus, mais je ne vois en tout cas pas d’où sort ton tableau en H7:O10 sur ton fichier exemple ‘Concatener’.

J’espère comprendre un peu plus avec le fichier à recevoir.

Merci d’avoir utilisé le correcteur d’orthographe …… en tout cas pour le texte dans ton message. Dans le fichier Excel il reste passablement d’erreur de français.

Et puis évite d’écrire la moitié de l’explication dans ton fil et l’autre moitié dans le fichier : ça nous oblige à mettre ces deux textes en parallèle afin de voir ce qui se recoupe, ce qui se complète, ce qui se contredit parfois (pas dans ce cas précis, mais ça c'est déjà vu)

Cordialement.

RE,

Alors oui désolé le fichier modifié je me suis rendu compte juste après et je l'ai envoyé il est juste au-dessus de ton dernier message. Le voici je le joint à ce message.

Pour le tableau, je l'ai mis au milieu juste pour avoir toutes les données sous les yeux, pour que tu puisses mieux comprendre comment je procède pour obtenir les 4 colonnes P2, P1, N et I. Ce tableau pourrai être fixé tout à droite du fichier, tu peux proposer une solution ou le mettre aussi si ta une idée, je n’ai pas de contrainte pour l'emplacement de tableau, il servira juste à calculer les coefficients.

Cordialement

Salut,

Ce n’est pas évident de te suivre ! Je te demande de ne pas placer deux fois le même fichier, mais tu le fais quand même. Tu modifies la feuille exemple (dans ton fichier ‘concatener’ il manque la première ligne de la ‘Feuille Cible’ et ça créé plein de boges), tu n’utilises pas de ponctuation, il manque des mots dans tes phrases, tu parles de P2, mais il ne s’agit pas de la cellule P2, mais de ta colonne P2 (KW), ….

Je pense avoir compris ton besoin et j’ai déplacé ton tableau dans trois groupes de colonnes, dans les colonnes AL à BI. Pour l’instant je ne me suis occupé que de ta colonne E (P1 KW) de la ‘Feuille Cible’. Si c’est ce que tu désires, je vais encore m’occuper de tes colonnes F et G.

A te relire.

Amicalement.

Re,

Comme je pense être sur la bonne voie, voici encore les formules pour les colonnes F et G.

Bonne soirée.

Bonjour,

C'est parfait je ne sais pas comment te remercier, c'est vraiment parfait c'est exactement ce que je voulais en principe.

Maintenant, il faudrait juste que ça soit un transfert d'un fichier à un autre et que je change juste l'emplacement du fichier dans la macro pour rapporter les données du fichier d'origine et ça sera fini pour ce fichier.

Cependant, c'est bien d'avoir le résultat mais je souhaite un peu comprendre la macro, et je voulais savoir laquelle partie de la macro qui permet de faire la mise à jour, et ces parties que j'ai pas réussis à comprendre :

Quelle est l'utilité de ces lignes ?

Application.ScreenUpdating = False

DerLig = Range("B" & Rows.Count).End(xlUp).Row

Et

For i = DerLig - 1 To 3 Step -1 'Comme ça été calculé sur l'autre feuille, on a une ligne de "Réserve" (en fait, la 3)

If .Range("A" & i) = "" Then .Range("A" & i).EntireRow.Delete

Next

.Activate

Merci beaucoup

A plus

Salut,

Application.ScreenUpdating = False permet de ne pas mettre à jour l’écran à chaque instruction, ce qui peut prendre beaucoup de temps. Alors au lieu de voir (même rapidement) chaque étape, tu ne vois ainsi que le début et la fin. Dans ton cas ça ne change presque rien, mais je l’avais placé par précaution. Certaines fois, le temps de la macro peut être sensiblement prolongé si tu ne places pas cette instruction.

DerLig = Range("B" & Rows.Count).End(xlUp).Row permet d’affecter à la variable DerLig le numéro de la dernière ligne utilisée de la colonne B.

For ….Next permet d’effectuer une boucle (ici depuis l’avant dernière ligne de ta ‘Feuille Cible’ à la ligne 3, en remontant de 1 ligne à chaque fois (Step – 1).

If .Range("A" & i) = "" Then .Range("A" & i).EntireRow.Delete : à chaque passage sur une ligne de la boucle For Next, si la cellule A de la ligne contrôlée est vide, on efface toute la ligne (ça concerne tes lignes spéciales que tu ne veux pas garder).

Pour tes deux fichiers, sont-ils toujours dans le même dossier ou pas du tout ?

A te relire.

Merci beacoup pour tes explications.

Concernant les deux fichiers, ils ne sont pas dans le même dossier...

A plus

Youssef


RE,

Il y'a un petit problème je viens de le remarquer, dans le dernier fichier ce n’est pas exactement ce que je voulais, car les coefficients (a5, a4,...) de P1, N et I ne sont pas en dure...

Exemple : pour la première ligne avec ta macro on obtient :

P1=AN3*D3 ^ 5 + AO3*D3 ^ 4 + AP3*D3 ^ 3 + AQ3*D3 ^ 2 + AR3*D3 ^ 1 + AS3

Alors que moi je souhaite P1 =valeur(AN3)*D3^5+valeur(AO3)*D3...

Si tu regardes le fichier concaténer que j'avais posté les coefficients sont en dure dans la formule.

Merci

A plus

Bonjour,

messin57000 a écrit :

les coefficients (a5, a4,...) de P1, N et I ne sont pas en dure...

Je ne vois pas ce que tu veux dire par là. Mais comme j’avais arrondi les données des colonnes AL à BI, je présume qu’il s’agit de ça. J’ai donc supprimé cet arrondi. Si ce n’est pas ça, merci d’être un peu plus précis dans tes explications. Eventuellement que tu pourrais m'envoyer un fichier corrigé manuellement, en me précisant bien quelle cellule tu as modifié manuellement.

Dans le fichier ‘Dossier Source’ ci-joint, tu vas devoir modifier les passages de la macro en fonction de ta constellation (emplacement de ton 'Fichiers Cible' dans ton arborescence, noms de tes fichiers, noms de tes feuilles, etc.).En tous cas chez moi ça fonctionne

bien

Le ‘Fichier Cible’ peut-être ouvert ou fermé au lancement de la macro.

Pour l’instant le ‘Fichier Cible’ n’est pas enregistré à la fin de la macro. Devrait-il l’être ?

A te relire.

14dossier-source.xlsm (150.30 Ko)

Bonjour,

voici un fichier qui explique ce que je veux exactement.

Merci

A plus

9concatener2.xlsm (20.19 Ko)

Salut Youssef,

Je conçois plus ou moins que tu ne veuilles pas me «payer» – un merci est notre seul salaire - pour le travail dont tu n’es pas content (ces formules que tu désirais autrement), mais tu aurais pu me toucher un mot au sujet de l’autre partie du travail que j’ai effectué gratuitement pour toi, c'est-à-dire le transfert des données d’un fichier à l’autre

Maintenant que tu as expliqué un peu plus clairement ton désir, je pense avoir trouvé une solution à ton problème.

Si tu demande de l’aide, évite d’utiliser le présent (je veux, etc.) mais utilise plus volontiers le conditionnel : je voudrais, je souhaiterais, je désirerais, il faudrait que, etc.

Amicalement.

Bonjour Yvouille,

Ce n’est pas juste un merci que je te dirai mais un très grand merci, et je pensais l’avoir dit à chaque commentaire que je postais, cela dit je ne suis pas très à l’aise dans l’art de la parole mais je le pense vraiment, merci beaucoup pour ton aide et heureusement qu’il existe encore des gens qui partage leurs connaissances avec les autres.

Le fichier fait parfaitement ce que je souhaitais, et je t’en remercie encore une fois, mais j’ai quelques questions de compréhension de la macro :

• Quelle est la signification de (RC[-13]:RC[-8]) ? FormulaArray ?

Range("AM" & i & ":AS" & i).FormulaArray = _

"=INDEX(LINEST(TRANSPOSE(RC[-13]:RC[-8]),TRANSPOSE(RC[-25]:RC[-20])^{1,2,3,4,5,6}),1,{1,2,3,4,5,6,7})"

Range("AU" & i & ":BA" & i).FormulaArray = _

Question subsidiaire:

Si on voulait rapporter des données de plusieurs fichiers vers un seul fichier, c’est à dire j’ai plusieurs fichiers et je souhaite récupérer une ligne de chacun de ces fichiers et les regrouper dans un seul fichier, et grâce à un bouton rapporter toutes les données, et la mise à jour se fait à chaque fois on clique sur le bouton…le problème c’est que pour rapporter les données, est-ce qu’on est obligé d’ouvrir le dossier cible ? Car on ne peut pas ouvrir plusieurs fichiers si y’en a plusieurs…

Merci

A plus

Re-bonjour,

Sur le fil https://forum.excel-pratique.com/excel/remplacer-3-cellules-par-un-groupe-de-cellules-t42693-10.html?hilit=l1c1, dans ma réponse du 2 septembre, j'explique assez en détail l'utilisation du style L1C1 (ou R1C1 en anglais).

L’aide d’Excel est un excellent moyen d’apprendre. Dans l’explorateur VBA, si tu places ton curseur sur un mot-clef et que tu tapes F1, tu obtiens pleins d’informations très intéressantes, d’exemple, etc. Voici ce que tu peux lire à propos de FormulaArray.

capture 29 10

A noter que j’ai créé certaines des lignes de ton code grâce à l’enregistreur de macro : tu lances l’enregistrement, tu places ta formule matricielle sur Excel puis tu vas voir dans l’explorateur VBA ce qui a été enregistré. Par exemple si tu sélectionnes la cellule C1 et que tu enregistres une macro alors que tu y inscrits [=A1*B1»] (attention, formule matricielle), tu obtiens la ligne de code Selection.FormulaArray = "=RC[-2]*RC[-1]" alors que si tu enregistres une macro avec la formule [=$A$1*$B$1»], tu obtiendras la ligne Selection.FormulaArray = "=R1C1*R1C2". Si tu as diverses fonctions dans tes formules de base, elles sont enregistrées en anglais directement, tel que je l’ai fait moi avec tes formules à toi.

Ta question subsidiaire concerne ces mêmes fichiers ou d’autres fichiers ?

Tu dis que l’on "ne peut pas ouvrir plusieurs fichiers si y’en a plusieurs…", mais ce n’est pas très clair. Selon moi, on peut ouvrir autant de fichiers que l’on désire s’ils ne portent pas le même nom. Mais dans la plupart des cas, lorsqu’on veut reprendre une seule ligne de plusieurs fichiers, on les ouvre (d’une manière invisible à l’écran) les uns après les autres et on les referme immédiatement après y avoir pris ce que l’on désirait. Tout n’est que question de déterminer – selon leur emplacement dans l’arborescence et selon leur nom – quels fichiers doivent être «visités». Tu m’en dis un peu plus ?

Cordialement.

Rechercher des sujets similaires à "rapporter donnee ficher"