Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : lier des fichiers excel [ Divers / Débutants ] (boubou_7711)

samedi 16 juin 2007 à 22:09:22 | lier des fichiers excel

boubou_7711

bonjour à tous,

je suis débutant.
J'ai 2 fichiers sous excel et je voudrais récupérer les données du premier fichier vers le 2e fichier
Mon fichier 1 : classeur1.xls
Mon fichier 2 : classeur 2.xls

Dans le classeur 2 :
je voudrais récupérer les données du classeur 1 des cellules A1,B1,C1, etc.
MAIS je veux créer pour chaque ligne du classeur 1 une nouvelle feuille dans mon classeur 2 en gardant la même mise en page que celle du classeur 2 feuille1.


Par avance, merci pour votre aide


dimanche 17 juin 2007 à 16:07:08 | Re : lier des fichiers excel

MPi

Pour conserver la mise en page, le plus simple est de faire une copie de la feuille originale. Utilise l'enregistreur de macro, clique droit sur l'onglet dont tu veux copier la mise en page, sélectionne "Déplacer ou copier", coche "Créer une copie", choisis le fichier dans lequel tu veux effectuer la copie et la position par rapport aux feuilles existantes et clique OK. Une nouvelle feuille (Copie conforme) aura donc été ajoutée.

Bien sûr la copie inclura les données. Comme tu ne veux que conserver les entêtes, il reste à éliminer les lignes superflues.


Autre méthode,
Tu crées une procédure de mise en page qui inclut la police, les bordures, marges, ...
Et tu appelles cette procédure à chaque fois que tu crées une feuille et y copie les données d'entêtes.


Avant d'aller plus avant, tu devrais déterminer la méthode que tu veux utiliser et nous revenir, avec éventuellement un bout de code...

MPi

dimanche 17 juin 2007 à 18:29:10 | Re : lier des fichiers excel

boubou_7711

Merci MPi pour ton aide.
Ce n'est pas tout à fait ce que je veux mais néanmoins j'ai appris qqch de plus.

voilà le code que j'ai :

Sub Macro1()
'
    Windows("Classeur1").Activate
    Windows("Classeur2").Activate
    Sheets("Feuil1").Select
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=[Classeur1]Feuil1!R2C1"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=[Classeur1]Feuil1!R2C2"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=[Classeur1]Feuil1!R2C3"
    Sheets("Feuil2").Select
    ActiveCell.FormulaR1C1 = "=[Classeur1]Feuil1!R3C1"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=[Classeur1]Feuil1!R3C2"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=[Classeur1]Feuil1!R3C3"
    Range("D2").Select
End Sub

Je voudrais automatiser pour toutes les lignes de mon classeur 1 cette opération car je retrouve toujours les même données
Par exemple :
je retrouve les données du classeur 1 A2,B2,C2 dans mon classeur2 fichier 1
ainsi que les données du classeur 2 A3,B3,C3 dans mon classeur2 fichier 2. Ce deuxième fichier doit avoir la même mise en page que mon fichier 1 classeur 2 et ainsi de suite.
Je pense que je dois faire une boucle, d'après ce que j'ai pu lire.... Je fais mes premiers pas. C'est pas si simple que ça.


dimanche 17 juin 2007 à 20:16:14 | Re : lier des fichiers excel

MPi

Avant d'aller plus loin, es-tu certain des cellules que tu sélectionnes ?
Tu sélectionnes B1, B2 et D1 de Feuil1
Puis ensuite, B2, D1 et D2 de Feuil2

Ce ne serait pas plutôt B1, B2 et B3 de chaque feuille du classeur 2 ?
ou encore A2, B2 et C2 ???

1- Si les cellules dans lesquelles tu veux copier ne suivent aucun ordre précis (ou identique), tu ne pourras pas utiliser de boucles.
2- Est-ce important de mettre des formules plutôt que des valeurs ?
3- Est-ce important de faire ça en VBA ? si oui, c'est seulement pour apprendre ?

MPi

dimanche 17 juin 2007 à 20:56:32 | Re : lier des fichiers excel

boubou_7711

Merci, effectivement il y a une erreur!
Dans la feuil2 j'aurais du selectionner B1 B2 ET D1 comme dans la feuil1

J'ai 3 colonnes A B C, je veux pour chaque ligne des 3 colonnes A,B,C les recopier dans mon 2e classeur avec une ligne correspondant à une feuille de mon 2e classeur.

Ex :
Classeur 1 :
A            B            C
1            2            bonjour
3            4               au revoir

Classeur 2 feuil1 je voudrais avoir
B1 :      1            D1 bonjour
B2:        2

Classeur 2 feuil 2 je voudrais avoir en gardant la même mise en page que dans ma feuil 1
B1:      3            D1: au revoir 
B2:      4

Je ne sais pas vraiment comment je dois m'y prendre car :
mon classeur 1 comporte plus de 100 lignes
il bouge régulièrement et je voudrais donc qu'il se mette à jour par la suite dans le classeur 2 en fonction des changements du classeur 1

Merci encore MPi pour tes réponses, et oui je veux bien apprendre, car je n'y connais pas gd chose :s


dimanche 17 juin 2007 à 22:38:55 | Re : lier des fichiers excel

MPi

Pour faire au plus simple, disons que tu as un classeur qui se nomme Classeur2 et qui contient les feuilles "Feuil1" à "Feuil3"  (par défaut...)
On peut donc se fier aux numéros de feuilles pour copier les données et créer de nouvelles feuilles en conservant le même genre de nom... "Feuil" + un index

Pour que tout fonctionne bien, il est préférable d'ouvrir ce Classeur2 au préalable. On pourrait procéder autrement, mais pour un début, tu en auras assez de ceci, je pense...

Copie ce code dans la partie de code de ta feuille où les données se trouvent

Option Explicit

Sub Copie()  ' Procédure de départ
    Dim I As Long, nbLignes As Long
    Dim CurSheet As Worksheet, DestBook As Workbook, Fenetre As Window
    Dim Trouvé As Boolean
   
    Set CurSheet = ActiveSheet  'feuille de départ (current sheet)
   
    'Vérifier si le Classeur2 est déjà ouvert
    For Each Fenetre In Windows
        If Fenetre.Caption = "Classeur2" Then
            Trouvé = True
            Fenetre.Activate
            Set DestBook = ActiveWorkbook  'classeur de destination
            Exit For
        End If
    Next
   
    ' Si le classeur n'est pas ouvert, quitter la procédure
    If Not Trouvé Then
        MsgBox "Ouvrir le Classeur2"
        Exit Sub
    End If
   
    'retourner dans le classeur de départ et compter le nombre de lignes
    CurSheet.Activate
    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
   
    'Boucler chaque ligne
    For I = 1 To nbLignes  ' 1 ou 2 selon qu'il y a des entêtes...
        'si la feuille n'existe pas, la créer
        If Not FeuilleExist(DestBook, I) Then CreerFeuille DestBook, I
       
        'Copier les données
        DestBook.Sheets("Feuil" & I).Range("B1") = Range("A" & I)
        DestBook.Sheets("Feuil" & I).Range("B2") = Range("B" & I)
        DestBook.Sheets("Feuil" & I).Range("D1") = Range("C" & I)
    Next
   
    MsgBox "Terminé"
End Sub

Function FeuilleExist(Classeur As Workbook, Numéro As Long) As Boolean
    Dim WkSh As Worksheet
   
    'Boucler toutes les feuilles pour voir si la feuille à inscrire existe
    For Each WkSh In Classeur.Worksheets
        If WkSh.Name = "Feuil" & Numéro Then
            FeuilleExist = True
            Exit For
        End If
    Next
End Function

Sub CreerFeuille(Classeur As Workbook, Numéro As Long)
    'Ajouter une feuille et la renommer si elle n'existait pas
    Classeur.Worksheets.Add
    Classeur.ActiveSheet.Name = "Feuil" & Numéro
End Sub


MPi

lundi 18 juin 2007 à 22:17:18 | Re : lier des fichiers excel

boubou_7711

Merci MPi pour ton code.
J'ai testé et hélàs je n'y suis arrivé.
A chaque fois, j'ai une pop-up qui me dit ouvrir le classeur 2 mais celui-ci est déjà ouvert.
Qu'est-ce que j'ai mal fait, ou aurais-je du faire à la place?

Par avance, merci

lundi 18 juin 2007 à 23:58:07 | Re : lier des fichiers excel

MPi

Peut-être est-ce à cause de la version sous laquelle tu travauilles (?)

Change le bout de code au début de la procédure pour
    'Vérifier si le Classeur2 est déjà ouvert
    For Each Fenetre In Windows
       Msgbox Fenetre.Caption  ' pour vérifier comment ta version affiche les Caption
        If Fenetre.Caption = "Classeur2" Then

Si le message affiche "Classeur2.xls"
il faudrait alors ajouter cette extension, ce qui donnerait
    For Each Fenetre In Windows
        If Fenetre.Caption = "Classeur2.xls" Then

Si tu n'y arrives pas, dis-moi exactement ce qu'affiche le MsgBox que je t'ai demandé d'ajouter.

MPi

mardi 19 juin 2007 à 18:54:23 | Re : lier des fichiers excel

boubou_7711

Encore merci pour les indications.

J'ai modifié le code et j'ai toujours dans les MsgBox le message suivant
classeur2.xls
puis
classeur1.xls
puis
ouvrir le classeur2 alors qu'il est ouvert:-(


mardi 19 juin 2007 à 21:52:07 | Re : lier des fichiers excel

boubou_7711

ah non mea culpa! ca fonctionne MPi :-)

Est-ce que tu sais comment faire pour faire en sorte que lorsque les onglets se copie on garde la même mise en page de l'ensemble de l'onglet (par exemple :une bordure, image, ou peu importe vu que je voudrais garder la même mise en page)

Est ce que tu penses que dans cette partie :

Sub CreerFeuille(Classeur As Workbook, Numéro As Long)
    'Ajouter une feuille et la renommer si elle n'existait pas
    Classeur.Worksheets.Add
    Classeur.ActiveSheet.Name = "Feuil" & Numéro
End Sub

on puisse renommer les onglets autre que "Feuil"& Numéro et de prendre en considération pour chaque onglet une case précise du classeur 1.
Par exemple :
pour l'onglet 1 : la valeur de la case A2
pour l'onglet 2 : la valeur de la case A3

j'ai composé ça :
 On Error Resume Next
For I = 1 To n
Sheets(sht.Name).Name = Sheets(sht.Name).[A1]
Next
 
Il ne me renomme pas les feuilles du classeur 2 mais la feuille du classeur 1 et ne me prend en considération que la case A1( normal c'est ce que je lui demande... mais je sais pas faire pour lui dire de renommer l'ensemble de Ai to An).
J'ai encore du faire une bêtise, pour changer..

Par avance, merci

 


1 2

Cette discussion est classé dans : fichier, excel, fichiers, lier, classeur


Répondre à ce message

Sujets en rapport avec ce message

Lier des fichiers excel et des feuilles excel [ par Mesacraft ] Bonjour, tjs dans la construction de mes macros je viens de rencontre un prob pas vraiment sympa.Dans ma première feuille j'historise des données sur Ouvrir un classeur excel sous vb, pour ensuite être affiché dans une texte box [ par JONJON91 ] J'aimerai ouvrir un classeur excel à partir d'une boite de dialogue "ouvir", car pour l'instant je dois rentrer le chemin d'acces dans mon code. J'ai drag&drop d'un fichier sur un classeur excel [ par cesdejong ] bonjour,j'ai un classeur excel et une macro qui demandent un fichier d'entrée. Je souhaiterais pouvoir faire un drag&drop du fichier d'entrée directem compteur sur plusieurs fichier et plusieurs onglets [ par funkay91 ] Et oui encore moiJe cherche des commandes qui pourront me permettre de lancé une recherche. Sur plusieurs fichiers et sous plusieurs onglet de excel. macro sur un dossier de fichier excel [ par funkay91 ] je souhaite appliquer ma macro sur l'ensemble des fichiers .xls de mon dossier C'est dire j'ai un fichier exel dans lequel j'aurai ma macro qui une fo Urgent !!! Mon classeur ne s'ouvre plus après avoir éxécuté mon projet ! [ par IUP1 ] Voila j'ai un projet et un fichier excel déja créé dans mon dossier Au cours de mon projet je récupère et envoie des données sur ce fichier excel. Je VBA Excel - Recherche de fichiers [ par econs ] Bonjour à toutes et tous. Je possède un dossier contenant un certain nombre de fichiers : -   Un fichier Visio    (*.vsd) -   Un fichier Excel    !! URGENT !! Copie de fichier texte à la suite dans excel [ par xpmich ] Bonjour,Je programme sous Microsof visual Basic.Je voudrais grâce à un macro ouvrir dans l'ordre des fichiers textes (de même forme) et les copier à l Vieux fichiers Excel [ par ptigars67 ] Bonjour,Je suis ennuyé avec un fichier qui avait été réalisé avec excel95 et qui ne fonctionne plus avec les versions de excel actuel.Je ne connais ab deverouiller protection classeur excel [ par mhborot ] bonjour à tous,tout d'abord, merci à tous ceux qui répondent à nos questions, c'est super de votre part.en ce qui me concerne, j'ai un souci avec un f


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.