Intégrer cellules fichier1 dans fichier2

Bonjour,

1-) Claude, je voudrais adapter ta macro de suppression d'espace sur la feuille 'Pas à pas' pour qu'elle traite les colonnes "C" ET "E" de la feuille 'données-substances dangereuses'.

2-) Je voudrais pouvoir importer une nomenclature provenant d'un fichier (pouvoir le sélectionner en faisant "parcourir...", ou au pire en lui attribuant un nom fixe, mais vraiment au pire.

Les lignes de cette nomenclature peuvent bien entendu etre supérieure à 4 (ici c'est une petite nomenclature).

Il faudrait importer les valeurs comme suit :

B2 de K182356.xls dans G2 de 'données-substances dangereuses' du fichier REACH.xls

A2 de K182356.xls dans H2 de 'données-substances dangereuses' du fichier REACH.xls

C2 de K182356.xls dans I2 de 'données-substances dangereuses' du fichier REACH.xls

idem pour les lignes suivantes.

Vous en remerciant par avance.

Zyglur

le fichier REACH :

27k182356.zip (4.20 Ko)

Salut Christian,

Je n'arrive pas à ouvrir ton fichier placé sous Cjoint.com. Peux-tu le placer sur le Forum d'une autre manière (compressé ?). Sinon - après que tu aies vraiment essayé d'une autre façon - envoi moi ton adresse électronique par message privé et je t'indiquerai une adresse à laquelle tu pourras m'envoyer ton fichier.

A te relire.

Bonjour,

1-) Claude, je voudrais adapter ta macro de suppression d'espace sur la feuille 'Pas à pas' pour qu'elle traite les colonnes "C" ET "E" de la feuille 'données-substances dangereuses'.

Sans être Claude...., dans le code que j'ai retrouvé sur un autre de tes fils (il n'est pas dans ton fichier ), je suppose qu'il s'agit de celui-là, remplace le par celui ci-dessous

Sub SupprEspaces() 'début et fin
Dim Cel As Range
        Application.ScreenUpdating = False
    For Each Cel In Range("C1:E" & Range("C65000").End(xlUp).Row)
        Cel = Trim(Cel)
    Next Cel
End Sub

A te relire

Dan,

J'ai réussi a adapter la macro pour la zone voulue.

Il y a 2 fichiers pour mon probleme, la macro est dans le fichier REACH.xlsm sur cjoint.com.

Il me reste aussi a touver aussi comment faire des tris avec des macros en selectionnant en automatique les ligne11 --> 65536 sans les lignes vides (1 bouton pour chaque)

1- tri par designation par ordre alphabetique

2- tri par article

3- tri par composant retrouve dans la nomenclature (pour que ceux ci se trouve en haut de la liste)

Merci a tous

Salut Zyglur,

Tu as posé beaucoup de questions sans vraiment attendre toutes les réponses. J'essaie donc de répondre à ta question suivante :

zyglur a écrit :

2-) Je voudrais pouvoir importer une nomenclature provenant d'un fichier (pouvoir le sélectionner en faisant "parcourir...", ou au pire en lui attribuant un nom fixe, mais vraiment au pire.

Les lignes de cette nomenclature peuvent bien entendu etre supérieure à 4 (ici c'est une petite nomenclature).

Il faudrait importer les valeurs comme suit :

B2 de K182356.xls dans G2 de 'données-substances dangereuses' du fichier REACH.xls

A2 de K182356.xls dans H2 de 'données-substances dangereuses' du fichier REACH.xls

C2 de K182356.xls dans I2 de 'données-substances dangereuses' du fichier REACH.xls

Tu places le code ci-dessous dans un module et le lance par un bouton placé sur une des feuilles du fichier "Reach" ; l'explorateur s'ouvre alors et tu dois choisir le fichier "A traiter" en parcourant - tel que tu le demandes, si je t'ai bien compris - ton arborescence. Lorsque tu as choisi le fichier à traiter, le code mis en place reporte plusieurs données du fichier choisi (j'ai fait des essais avec le fichier que tu as fourni "K182356", celui-ci est fermé au départ de la macro) à la suite des données déjà en place dans le fichier "Reach".

Sub Transfert()
Dim Fichier_traité As String, DerLig_Base As Long, DerLig_Fichier_traité As Long
Dim i As Integer, V1 As String, V2 As String

Application.ScreenUpdating = False
Application.Dialogs(xlDialogOpen).Show

Fichier_traité = ActiveWorkbook.Name
DerLig_Fichier_traité = ActiveSheet.UsedRange.Rows.Count

For i = 2 To DerLig_Fichier_traité
    V1 = Cells(i, 1)
    V2 = Cells(i, 2)
    Windows("REACH.xlsm").Activate
    Sheets("données-substances dangereuses").Activate
    DerLig_Base = ActiveSheet.UsedRange.Rows.Count
    Cells(DerLig_Base + 1, 3) = V1
    Cells(DerLig_Base + 1, 5) = V2
    Windows(Fichier_traité).Activate
Next

Windows(Fichier_traité).Close
Windows("REACH.xlsm").Activate

End Sub

Je trouve que tes demandes manquent de précision. Afin de te montrer ce qu'il est possible de faire, j'ai donc pris les libertés suivantes : les données se trouvant dans la colonne A du fichier "K182356" sont reportées A LA SUITE DES DONNES DEJA EN PLACE dans la colonne C de la feuille "données-substances dangereuses" du fichier "Reach" (ligne 833 et suivantes) et les données se trouvant dans la colonne B du fichier "K182356" sont reportées dans la colonne E.

A la fin de la macro, la feuille "données-substances dangereuses" est sélectionnée et le fichier "K182356" est refermé.

Est-ce que ça t'aide à aller de l'avant ? Si oui, que faut-il mettre en place d'autres, outre les tris que tu as déjà demandés entre temps ?

A te relire.

Bonsoir,

Merci pour tout ca.

En fait je me suis trompé d'endroit ou inserer les donnees du fichiers k182356, les donnees vont dans la feuille "composition du produit".

Mais ca ne me sera pas inutile car si les donnees integrer a la composition du produit n'existe pas dans les substances dangereuses, il faudra que je les rajoute.

Je vais recuperer la macro et etudier tout ca.

C'est vrai que j'ai posé plusieurs questions, car j'ai en vu un classeur bien équipé en fonctions, et cela peut permettre de mieux structurer les macros quand on sait ou on veut aller, plutot que de rajouter des petits bouts et d'etre bloqué par les premieres fonctions créées.

Je regarde tout ca mais je m'y mettrais mieux demain.

Merci encore.

Christian

Effectivement que de réfléchir avant de poser les questions aide à recevoir la bonne réponse et à éviter du travail inutile

Désolé d'être un peu sévère, mais il y a quand même un peu de vrai dans mes paroles, non ?

Eventuellement à une prochaine

Ce que je voulais dire, c'est que j'ai exposé les grandes lignes de mon projet, et ca peut aider les personnes comme toi a mieux voir comment réaliser toutes ces améliorations. Car tu l'auras deviné, je débute totalement en vba, mais j'apprends vite, me forme des que je peux, et n'hesite pas a apporter mon aide dans mes domaines.

Je ne remets nullement en cause ton travail qui me permet d'apprendre beaucoup, je cherche a comprendre la moindre virgule, le pourquoi et le comment.

J'ai commis une erreur de destination de cellule, j'essai d'adapter ta macro, mais je ne connais pas encore toutes les variables.

Ma 1ere demande d'aide date du 11/04, je vais pouvoir bosser le vba ce week end.

Si j'arrive a faire fonctionner ta macro sur la bonne feuille, je te renverrai le fichier.

Amicalement.

Christian

Dès demain après-midi, je serai absent quelques jours. J'espère que tu reçoives des réponses d'autres membres. Autrement je verrai si je peux répondre à ton attente à mon retour.

Bonne soirée.

J'ai étudié ta macro et j'ai compris certaines variables, tu verras que je l'ai modifiée.

Elle insère bien les données dans les bonnes colonnes, mais en derniere ligne et pas a partir de la ligne 2.

J'ai bien compris qu'il faut déclarer une cellule de départ, je vais chercher ca demain.

Voila comment j'ai modifié ton code :

Sub Transfert()
Dim Fichier_traité As String, DerLig_Base As Long, DerLig_Fichier_traité As Long
Dim i As Integer, V1 As String, V2 As String, V3 As String

Application.ScreenUpdating = False
Application.Dialogs(xlDialogOpen).Show

Fichier_traité = ActiveWorkbook.Name
DerLig_Fichier_traité = ActiveSheet.UsedRange.Rows.Count

For i = 2 To DerLig_Fichier_traité
    V1 = Cells(i, 1)
    V2 = Cells(i, 2)
    V3 = Cells(i, 3)
    Windows("REACH.xlsm").Activate
    Sheets("Composition du produit").Activate
    DerLig_Base = ActiveSheet.UsedRange.Rows.Count
    Cells(DerLig_Base + 1, 8) = V1
    Cells(DerLig_Base + 1, 7) = V2
    Cells(DerLig_Base + 1, 9) = V3
    Windows(Fichier_traité).Activate
Next

Windows(Fichier_traité).Close
Windows("REACH.xlsm").Activate

End Sub

Merci et bonne nuit

Christian

Re,

Je n'arrive pas à ouvrir ton fichier posté sur cjoint. A l'ouverture je reçois un message de refus.

Et attention, tu as beaucoup de formats de cellule enregistré ! Cela peut te provoquer un bug dans ton fichier et le rendre inutilisable !

Vas dans format / cellule et sous l'onglet personnalisé, supprime les formats inutilisés.

Ton dernier code posté pourrait être simplifié en évitant les "activate". essaie comme ceci:

Sub Transfert()
'Macro modifiée par Dan - le 16/04/11
Dim Fichier_traité As String, DerLig_Base As Long, DerLig_Fichier_traité As Long
Dim i As Integer
Application.ScreenUpdating = False
Application.Dialogs(xlDialogOpen).Show
Fichier_traité = ActiveWorkbook.Name
DerLig_Fichier_traité = ActiveSheet.UsedRange.Rows.Count
For i = 2 To DerLig_Fichier_traité
With Workbooks("REACH.xlsm").Sheets("Composition du produit")
    DerLig_Base = .UsedRange.Rows.Count
    .Cells(DerLig_Base + 1, 8) = Cells(i, 1)
    .Cells(DerLig_Base + 1, 7) = Cells(i, 2)
    .Cells(DerLig_Base + 1, 9) = Cells(i, 3)
End With
Next
Workbooks(Fichier_traité).Close
End Sub

A te relire

Re,

J'ai bien intégré ton code, cela fonctionne aussi.

Je ne peux pas enregistrer mon fichier en .xls car il ne prendra pas en compte les macros.

Je travaille sur la version 2007 et 2010.

Si tu peux jeter un oeil directement sur mon pc, je te donne en MP

Christian

Bonjour,

Merci Dan pour tes corrections. J'oublie souvent quil est possible d'éviter ces matchs de ping-pong entre deux fichiers

Bonnes salutations.

Bonjour,

Bonjour Yvouille,

J'ai beau chercher et changer des choses dans ta macro, je n'arrive toujours pas à intégrer le fichier .xls dans les cellules voulues.

Ca me les intègre a partir de la ligne 2, mais en remontant et pas en descendant... je n'ai pas sauvegardé mes modifs j'ai juste dirigé ta macro sur la bonne feuille.

Si tu pouvais me donner la direction a suivre... car cette partie d'intégrer un fichier est vraiment tres utile.

Il me restera a creer une macro pour enregistrer la feuille suivant le nom en B2 de 'pas a pas', mais je vais chercher tout seul pour celle la et j'espere y arriver en me basant sur ta formule de transfert.

Merci encore

Christian

-- 17 Avr 2011, 14:26 --

Coucour,

Personne pour mon intégration de fichier ?

Je sèche....

Merci

Zyglur

Salut Christian,

J'ai été absent quelques jours. J'ai bien vu ta demande lorsque j'étais à Rome, mais n'ayant qu'une version bizarre et italienne d'Excel à disposition, je n'ai même pas essayé de te répondre depuis là-bas.

zyglur a écrit :

Je ne peux pas enregistrer mon fichier en .xls car il ne prendra pas en compte les macros.

Les fichiers au format .xls prennent en charge les macros sans problème.

Je ne peux pas lire tes fichiers non plus ; merci de suivre les instructions de Dan afin que l'on puisse éventuellement t'aider.

Bonnes salutations.

Bonjour,

Mon sauveur est de retour.

J'ai fait un autre post avec un fichier xls.

J'y ai laissé ta macro de transfert modifiée par Dan.

J'espère (j'en suis sur) que tu pourras me venir en aide.

Merci

Christian

-- 21 Avr 2011, 12:40 --

Ci joint le lien du post :

https://forum.excel-pratique.com/excel/importer-cellules-dans-autre-classeur-t22842.html

Merci

Christian

Ca commence à se compliquer, je ne vais bientôt plus reconnaitre mon travail

Répond déjà à Ketamacanna sur ton autre fil et je verrai quand j'ai le temps si je peux encore te venir en aide ; je suis passablement occupé ces temps-ci et ne peux rien te promettre.

A plus.

Merci a tous pour votre aide.

Vos solutions me permettent de clorturer ce post.

Zyglur

Rechercher des sujets similaires à "integrer fichier1 fichier2"