Comment copier une autre feuille Excel dans mon fichier ?

Luke94 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
Luke94 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

étant novice en la matière et cherchant depuis des jours..., auriez vous la réponse à cette question :

Je dispose d'un fichier Excel avec deux feuilles de calcul A et B. Pour ce fichier, j'ai codé une petite macro me permettant de mettre en forme les données situées sur la feuille B pour afficher les infos dont j'ai besoin sur la feuille A.

Les données situées sur la feuille B sont issues d'un export d'un autre logiciel. Actuellement, je fais cet export dans un fichier Excel, je copie l'ensemble des données que je colle ensuite dans ma feuille B.

Ce que j'aimerai bien faire, c'est disposer d'un bouton de commande dans ma feuille A, me demandant d'importer le fichier en question. J'irai alors le chercher par cette invit de commande et la macro associée copierait les données de la feuille source (export) dans ma feuille B. Je n'aurais ensuite plus qu'à appliquer ma macro existante pour transformer mes données.

Vous l'aurez compris, je trouve très lourd d'avoir à ouvrir les deux fichiers et de faire du copier/coller...

Merci d'avance pour vos réponses !

6 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    j'ai modifié le code en ce sens :

    Sub ouvrirfichierpourcopiercellules()

    a = ActiveWorkbook.Name 'la variable a = nom du fichier actuel
    MsgBox "Merci de choisir dans le fenêtre ci-après le fichier à exporter"

    Application.Dialogs(xlDialogOpen).Show 'ouvre la boîte de dialogue ouvrir
    b = ActiveWorkbook.Name ' la variable égale au nom du fichier que tu viens d'ouvrir
    Cells.Copy 'copie toute la feuille

    Workbooks(a).Activate 'active le classeur ou tu veux copier
    Sheets("Feuille1").Select 'sélectionne la feuille 1
    ActiveSheet.Paste
    Workbooks(b).Close 'ferme le fichier d'ou tu as pris les cellules

    End Sub
    1
  2. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    voici la macro

    Sub ouvrirfichierpourcopiercellules()

    a = ActiveWorkbook.Name 'la variable a = nom du fichier actuel

    Application.Dialogs(xlDialogOpen).Show 'ouvre la boîte de dialogue ouvrir
    b = ActiveWorkbook.Name ' la variable égale au nom du fichier que tu viens d'ouvrir
    Sheets("export").Select 'sélectionnes la feuille export
    Cells.Copy 'copie toute la feuille

    Workbooks(a).Activate 'active le classeur ou tu veux copier
    Sheets("Feuille1").Select 'sélectionne la feuille 1
    ActiveSheet.Paste
    Workbooks(b).Close 'ferme le fichier d'ou tu as pris les cellules

    End Sub
    0
  3. Luke94 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    merci pour votre réponse qui me permet d'avancer. Mais, je vais préciser mon besoin.

    En fait, j'ai un peu simplifié car j'ai plusieurs feuilles de calcul A, B, C, D,... et chaque fois les données de B sont récupérées pour les placer dans la feuille A, les données de la feuille D pour récupérer pour être placées dans la feuille C,...etc

    C'est pourquoi, le fichier que je récupère ne s'appelle pas toujours "export".

    J'aurais besoin que la macro m'ouvre une fenêtre de dialogue avec un texte du style "quel fichier voulez vous importer ?" et me permettant d'aller chercher dans mon arborescence le fichier qui va bien.

    Une fois sélectionnée, la macro fera ensuite la recopie de l'ensemble des données de la feuille "export" dans la feuille contenant le bouton de commande.

    Ainsi, je placerai un bouton de commande dans ma feuille A mais aussi dans ma feuille C.

    En espérant que mes explications soient compréhensibles.

    Merci d'avance !
    0
  4. Luke94 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    merci beaucoup pour ton dernier message. J'ai adapté de la manière suivante car j'avais un souci au niveau de la sélection :

    Private Sub CommandButton1_Click()

    a = ActiveWorkbook.Name 'la variable a = nom du fichier actuel
    MsgBox "Merci de choisir dans le fenêtre ci-après le fichier à exporter"

    Application.Dialogs(xlDialogOpen).Show 'ouvre la boîte de dialogue ouvrir
    b = ActiveWorkbook.Name ' la variable égale au nom du fichier que tu viens d'ouvrir

    Sheets(1).Select 'car le nom du 1er onglet n'est pas forcément Feuil1

    Selection.Copy

    Workbooks(a).Activate 'active le classeur ou tu veux copier

    Sheets("Données brutes").Select 'sélectionne la feuille en question

    ActiveSheet.Paste

    Workbooks(b).Close 'ferme le fichier d'ou tu as pris les cellules

    Sheets("DEPARTS").Select 'sélectionne la feuille en question

    Call Transfo 'appel ma macro de transformation des données brutes

    End Sub

    Il me reste un dernier souci : ma macro de transformation se charge de transformer les données brutes qui sont notamment séparées par des virgules et autres tabulations avant d'en extraire les données essentielles.

    Or, lorsque j'effectue avant la recopie, Excel détecte justement cela et me propose déjà une mise en forme... : "L'assistant Texte a déterminé que mes données sont de type délimitées"

    Je voudrais éviter l'ouverture de cette fenêtre et laisser la macro "Transfo" faire son travail et me faire aussi gagner du temps...

    Merci d'avance !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. SelhY AkA Messages postés 4 Statut Membre
     
    Bonjour !

    Application.DisplayAlerts = False 'désactive les messages d'erreurs
    ouverture du fichier
    ...
    (ton code)
    ...
    fermeture du fichier
    Application.DisplayAlerts = True 'réactive les messages d'erreurs.

    En espérant t'avoir aidé

    @+
    0
  7. Luke94 Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    merci beaucoup pour ton aide mais malheureusement, j'ai toujours le même message me demandant quelle mise en forme je souhaite...

    Il s'agit de l'assistant texte qui me demande de choisir entre les virgules, points virgules,... etc pour d"limiter mes colonnes, chose que ma macro prend ensuite en compte...

    Merci d'avance !
    0