MACRO Récupérer des données d'une autre fichier et les importer après mise en forme

chris6999

XLDnaute Impliqué
Bonjour

J'essaye de trouver une solution à la question suivante:

Je souhaite lancer, depuis mon fichier d'origine (on l'appellera "fichier Origine"), une macro me permettant
1 - d'ouvrir une répertoire donné (le chemin serait précisé dans la macro)
2 - l'utilisateur choisirait à l'intérieur de ce répertoire un fichier Excel (on l'appellera "Fichier Export" mais en réalité le nom n'est jamais le même et c'est là le problème).
3 - A l'ouverture de ce nouveau fichier Export, la macro continuerait son travail en mettant en forme les données, sélectionnant et copiant les cellules du Fichier Export.
3 - Fermeture (ou suppression si c'est possible du fichier d'export
4 - L'étape précédente est de revenir au "Fichier Origine" pour coller les donnée les valeurs des données récupérées.

J'ai trouvé pleins de pistes quand le fichier recherché dispose d'un nom fixe mais pas avec ma problématique de répertoire.

Pensez-vous que ce soit possible avec Excel 2002?
Ou dois-e trouver un autre moyen de procéder?

Merci d'avance cordialement
 

Yaloo

XLDnaute Barbatruc
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re,

Pour faire suite à ton fil, voici un exemple concret de ce que tu peux faire avec la macro que je t'avais indiqué.

Voir le fichier, mettre le répertoire dans C:\

A te relire

Martial
 

Pièces jointes

  • Chris6999.zip
    19.1 KB · Affichages: 61

chris6999

XLDnaute Impliqué
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re Merci d'avoir créé des exemples pour illustrer ton code.

Mon problème n'est malheureusement pas résolu car ce que je souhaite faire c'est copier les données du fichier Export pour les mettre en forme et revenir à mon fichier d'origine pour les coller.
C'est cette bascule entre les deux fichiers qui me pose problème.

Dans ton exemple tu fermes le fichiers d'origine alors que c'est lui que je souhaite conserver.C'est le fichier Export qui doit être fermé sans enregistrement.


Pour que je puisse avancer pourrais-tu me dire à quoi sert le code suivant (Puis-je insérer mon code de mise en forme des données juste après)? :

Workbooks.Open pfile.items.Item.Path
ActiveWorkbook.Sheets(1).[A1].CurrentRegion.Copy ThisWorkbook.Sheets(1).[A10]
'Mon code de mise en forme
'Sélectionner et copier les cellules de la feuill
'fermer le fichier ExportDonnées
'Aller dans fichier Origine
'Coller les données

Cordialement
 

Yaloo

XLDnaute Barbatruc
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re,

Dans mon code, je ne ferme pas le Fichier Origine mais le Fichier Export, que je supprime juste après, selon ta demande.

Avec le code, cela copie les données du Fichier Export dans le Fichier Origine. Je ne vois pas l'intérêt de mettre en forme les données dans le Fichier Export pour le copier ensuite dans le Fichier Origine, et fermer le Fichier Export sans enregistrer.

Il me semble qu'il vaut mieux copier les données dans le Fichier Origine puis mettre en forme dans le Fichier Origine.

Si tu pouvais mettre 2 fichiers (Origine et Export), avec des données bidons mais représentatives, je pense que nous pourrions avancer plus vite. Dans le fichier Origine, il faudrait mettre ce que tu as et ce que tu souhaites.

A te relire

Martial
 

chris6999

XLDnaute Impliqué
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re

Bon je crois avoir enfin compris comment fonctionnait ta macro (mieux vaut tard que jamais!).

Mon souhait de mettre en forme les données sur la nouvelle feuille ouverte avant des les importer dans mon fichier d'origine, vient du fait que ma mise en forme comprend des suppression de lignes.
Or dans mon fichier d'origine , il y a pas mal de formule que je supprimerais par la même occasion si la mise en forme se fait à ce moment là.

L'idéal serait mettre en forme le fichier IMPORT. Si cen'est pas possible je vais créer une nouvelle feuille dans mon fichier d'origine où se fera cette mise en forme afin de les coller dans ma feuille définitive
C'est un peu du bricolage mais ça devrait fonctionner.

Je vais tester tout ça
Merci encore car si ce n'est pas une solution idéale cela s'en rapproche fortement.

Très bonne fin de journée
 

Yaloo

XLDnaute Barbatruc
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re,

Je n'ai pas dit que l'on ne pouvait pas mettre en forme dans le Fichier Export, mais je ne trouve pas ça très logique.

Le fait de copier des données dans le Fichier Origine ne va pas te supprimer les formules sauf si tu copies les données dans ces cellules là.

Encore une fois, si nous avions des fichiers "bidons", nous pourrions t'aider plus facilement à trouver LA solution adaptée à ta demande.


A+

Martial
 

chris6999

XLDnaute Impliqué
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re Martial

Je viens d'essayer d'adapter mon fichier à ta proposition.

J'ai un souci pour récupérér les données sur le fichier import car il y a des sauts de lignes et la sélection de type "CurrentRegion.Copy " ne sélectionne que la cellule A1

Je mets en pièce jointe des fichiers bidon afin que tu comprennes bien où se situe le problème.
 

Pièces jointes

  • MES FICHIERS BIDON.zip
    88.6 KB · Affichages: 35

Yaloo

XLDnaute Barbatruc
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re,

J'ai repris ta macro, cela parait normal qu'il n'y ai pas de copie, car dans ta macro tu copies B1 dans A1. Mais comme B1 est vide ta cellule A1 se retrouve vide, et donc il n'y a pas de zone à copier.

Tu peux, je pense, modifier de macro comme ça :

VB:
Sub MEF()
Dim i&
Application.ScreenUpdating = False
'Défusionne les cellules de la feuille
Cells.MergeCells = False
    
'récupère l'intitulé de la requête (en A1) et date de fin en K1 et L1
[A1] = [B1]
[B1] = ""
[k1] = [C9]
[L1] = [C9]

'Supprime les lignes inutile
Rows("2:14").Delete

For i = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1
  If Range("L" & i).Value = "" Or Range("A" & i) Like "3*" _
      Or Range("A" & i) Like "4*" Or Range("A" & i) Like "10*" _
      Or Range("A" & i) Like "5*" Or Range("A" & i) Like "6*" _
      Then Rows(i).Delete
Next i

Columns("B:B").Delete
Columns("E:I").Delete
Columns("F:F").Delete
Application.ScreenUpdating = True
End Sub

Et dans le fichier Origine celle là :

VB:
Private Sub CommandButton1_Click()
  Dim oSh As Object, pfile As Object
  Dim pIni As Variant
  Dim FichierExport As String, Chemin As String
  pIni = "C:\" 'Ton répertoire à ouvrir
Set oSh = CreateObject("Shell.Application")
  On Error Resume Next
  Set pfile = oSh.BrowseForFolder(0&, "Sélectionnez un dossier", &H1 + &H40 + &H200 + &H4000, pIni)
  If Not pfile Is Nothing Then
      Workbooks.Open pfile.items.Item.Path
      Call MEF
      ActiveWorkbook.Sheets(1).[A1].CurrentRegion.Copy ThisWorkbook.Sheets(1).[A6]
      ActiveWorkbook.Close
      Kill pfile.items.Item.Path
  End If
  On Error GoTo 0
  Set pIni = Nothing
  Set pfile = Nothing
  Set oSh = Nothing
End Sub

Je n'ai pas tout testé à cause de la cellule A1

A+

Martial
 

chris6999

XLDnaute Impliqué
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Re

Bon je n'ai qu'une chose à te dire merci merci merci.
J'ai retouché la macro de mise en forme et les données s'exportent nickel

Reçois toute ma gratitude car j'étais vraiment dans une impasse.

Cordialement
Christelle
 

Yaloo

XLDnaute Barbatruc
Re : MACRO Récupérer des données d'une autre fichier et les importer après mise en fo

Bonjour Christelle, bonjour à tous,

Je suis content que ça fonctionne comme tu le souhaites.

Par contre, en reprenant ton fichier je me suis aperçu que tu avais des formules sur 2000 lignes, cela me parait énorme et doit peser sur le poids de ton fichier. Tu pourrais donc adapter un peu la macro que je te mets en exemple, dans le fichier Origine. Cela permet de ne copier les formules que dans les lignes remplies par la première macro.

A+

Martial

PS : Pour avoir tes formules, en macro. Tu enregistres une macro et tu fais F2 puis Entrée sur toutes les formules de la ligne 6, tu fermes l'enregistreur de macro. Il suffit de récupérer les formules dans la macro créée.
 

Pièces jointes

  • fichier origine.xls
    217.5 KB · Affichages: 65

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 231
Membres
103 497
dernier inscrit
JP9231