Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - Importation de données d'un autre classeur

  • Initiateur de la discussion Initiateur de la discussion 35niavlys
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

3

35niavlys

Guest
Bonjour,

Je n'y connais pas grand chose en VBA, je vais donc essayer d’exposer clairement mon problème :

J'ai deux fichiers excel, le premier est un fichier dont je veux extraire certaines colonnes pour les insérer dans mon second fichier. Ce premier fichier est composé de plusieurs onglets, dans chacun de ces onglets je souhaite récupérer deux colonnes.

Je souhaite donc pouvoir récupérer ces valeurs automatiquement de façon à avoir uniquement 2 colonnes (les deux colonnes d'un onglet sont à la suite des deux colonnes d'un autre onglet)

J'ai déjà essayé quelques trucs mais rien de concluant. Je ne sais pas vraiment comment m'y prendre :/

Si quelqu'un à le courage de m'aider, je le remercie d'avance 🙂
 
Re : VBA - Importation de données d'un autre classeur

Bonsoir 35niavlys,

Le mieux serait de mettre deux fichiers avec des données non confidentielles, mais représentatif de tes fichiers réels.

A+

Martial
 
Re : VBA - Importation de données d'un autre classeur

Merci pour cette réponse aussi rapide.
Voici le fichier à importer ci-joint avec deux feuilles mais j'en ai normalement 4.
Je souhaite donc importer les colonnes C et D de chaque feuille depuis un autre classeur et mettre ces résultats dans les colonnes A et B d'une seule feuille de ce classeur
 

Pièces jointes

Re : VBA - Importation de données d'un autre classeur

Bonsoir à tous

Un exemple simple
(code à mettre et lancer dans inventaire.xls)
Code VBA:
Sub a()
Dim B As Workbook
Set B = Workbooks("toto.xls")'ICI adapter le nom du classeur (il faut qu'il soit ouvert)
Dim ws As Worksheet
Dim dl&
For Each ws In Worksheets
dl = ws.Cells(5, "C").End(xlDown).Row - 5
ws.Cells(6, "C").Resize(dl, 2).Copy B.Sheets(1).Range("A65536").End(xlUp)(2)
Next ws
End Sub
 
Dernière édition:
Re : VBA - Importation de données d'un autre classeur

Pardon mais j'ai mal préciser cela. Je ne souhaite pas modifier quoi que ce soit dans le fichier inventaire.xls (fichier qu'on me fournit). Je veux pouvoir faire les importations depuis un fichier personnel et non exporter les données vers un fichier perso

EDIT : Ci-joint le résultat que je souhaiterais dans le fichier Import. Je veux que à l'ouverture de Import.xls, je retrouve deux colonnes (triées)...

Merci
 

Pièces jointes

Dernière modification par un modérateur:
Re : VBA - Importation de données d'un autre classeur

Re

Le code VBA précédemment soumis ne modifie pas les données du fichier inventaire.
Il suffisait juste d'insérer temporairement un module puis d'y coller la macro de l'éxécuter
Ensuite à la fermeture, ne pas enregistrer les modifications.

Je suppose que tu n'as pas essayé la macro sur une copie de tes fichiers (donc sans risque pour tes originaux) ?
 
Re : VBA - Importation de données d'un autre classeur

Oups j'ai fait une modification de mon message précédent le temps que vous postiez ce message.
J'ai testé votre code, il fonctionne très bien mais c'est important pour moi de ne pas avoir à modifier le fichier inventaire car c'est un fichier que je reçois très régulièrement et je ne souhaite pas y coller la macro a chaque fois que je reçois un nouveau fichier.

EDIT : j'ai réussi à faire les modifications que je souhaitais, il me reste plus qu'à trouver comment trier les colonne par ordre alphabétique
 
Dernière modification par un modérateur:
Re : VBA - Importation de données d'un autre classeur

Re

Mon code précédent modifié (à ne pas mettre dans inventaire.xls donc 😉 )
Code:
Sub b()
Dim wA As Workbook
Dim wB As Workbook
Set wA = ThisWorkbook
Set wB = Workbooks("toto.xls") 'ICI adapter le nom du classeur (il faut qu'il soit ouvert)
Dim ws As Worksheet
Dim dl&
With wB
    For Each ws In .Worksheets
    dl = ws.Cells(5, "C").End(xlDown).Row - 5
    ws.Cells(6, "C").Resize(dl, 2).Copy wA.Sheets(1).Range("A65536").End(xlUp)(2)
    Next ws
End With
End Sub
Pour le tri, l’enregistreur de macros devrait pouvoir t'aider 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
698
Réponses
43
Affichages
804
  • Question Question
Réponses
28
Affichages
515
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…