Fermeture du fichier dont j'ai importé les données

Résolu/Fermé
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015 - 11 sept. 2014 à 17:35
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015 - 12 sept. 2014 à 16:47
Bonjour à tous,

Je suis débutant en VBA et j'ai besoin de votre aide et conseils. Je dois importer des données de fichiers Excel pour les insérer sur la feuille2 de le formulaire que je suis entrain de créer.

Par l'intermédiaire d'un bouton se trouvant sur la feuille1 du formulaire j'invite l'utilisateur à choisir le/s fichier/s. Ensuite, mon code fait un copier de ces données les colle le tout sur la feuille2 de mon formulaire.

Jusqu'ici, pas de problème... Le hic est que je ne trouve pas comment fermer le document dont j'ai extrait les données.

Voici le code que j'ai trouvé et adapté à ma tambouille :

Sub Importation()

' Boîte de dialogue permettant l'importation de plusieurs fichiers source
Dim a As Variant, Nom As String

Nom = ActiveWorkbook.Name
ChDrive "C:" ' Choix du lecteur
ChDir "C:\" 'Choix du répertoire
a = Application.GetOpenFileName("fichier excel (*.*), *.xls", _
, "Sélection des fichiers excel", , True)

Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)

Next
End Select

Cells.Select
Selection.Copy
Windows(Nom).Activate
Sheets("Feuil2").Select
Range("A1").Select
ActiveSheet.Paste
'Workbooks(?).Close False 'Fermeture du document importé sans sauvegarde


End Sub

J'ai mis en gras ce que je pense être une "idée" pour le fermer, mais après... Je plante... des choux.

J'espère avoir été assez clair...

Pouvez-vous m'aider, s'il vous plaît ?



A voir également:

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
12 sept. 2014 à 16:33
Bonjour,

Essaies :
Option Explicit
Sub Importation()
Dim l As Variant     'liste des fichiers
Dim o As Workbook    'origine (classeur)
Dim f As Worksheet   'feuille
Dim d As Workbook    'destination (classeur)
Dim i As Long        'index

Set d = ActiveWorkbook
ChDrive "C:" ' Choix du lecteur
ChDir "C:" 'Choix du répertoire
l = Application.GetOpenFilename("fichier excel (*.*), *.xls", _
, "Sélection des fichiers excel", , True)

Select Case TypeName(f)
  Case Is = "Boolean"
    Exit Sub
  Case Else
  For i = LBound(l) To UBound(l)
    Set o = Workbooks.Open(l(i))
    Set f = o.Worksheets(1)
    f.Copy before:=d.Worksheets(1)
    o.Close False
    Set o = Nothing
  Next
End Select

End Sub



1
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015
12 sept. 2014 à 16:47
Bonjour Patrice33740,

C'est ce qu'il me fallait !

Je vais bosser dur ce week-end sur VBA et en apprendre d'avantage.

La connaissance est source de plaisir :)

Merci encore, votre aide m'a été très précieuse !
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
11 sept. 2014 à 18:55
Bonjour,

... Jusqu'ici, pas de problème ...

J'en doute !!! Si l'utilisateur sélectionne plusieurs fichiers, seules les données du dernier fichier ouvert sont copiées ...
0
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015
Modifié par thealchemyst le 12/09/2014 à 15:23
Bonjour Polux31,

Merci de ta réponse.

Alors comment dois-je l'adapter pour qu'à la sélection de mes fichiers, le premier se colle sur la feuille2, le suivant sur la 3 et ainsi de suite. J'ai 12 fichiers dont je dois importer les données (pour chaque mois de l'année en cours). Sur mon formulaire j'ai déjà créé les 12 feuilles.

Je pense à une boucle mais je ne sais pas trop comment l'intégrer (j'ai commencé le VBA lundi...).

Après, pour la fermeture des docs importés, cela sera aussi intégrer dans la boucle...

Je vais cherché dans le forum et autres sites. Il faut que je me débrouille, c'est comme ça qu'on apprend, mais un d'aide est toujours la bienvenue :).


Merci d'avance de ta réponse.
0
thealchemyst Messages postés 18 Date d'inscription jeudi 11 septembre 2014 Statut Membre Dernière intervention 30 mars 2015
12 sept. 2014 à 16:20
Effectivement, je ne peux pas sélectionner plusieurs fichiers et les coller les uns après les autres...

J'ai un peu modifié mon code pour que les données exportées se colle sur une nouvelle feuille (Sheets.Add After:=Sheets(Sheets.Count)

et revenir sur la première feuille de mon formulaire (Sheets("Formulaire").Select) une fois les données collées.

Mais mon problème reste le même. Comment coller les données du premier fichier sur la feuille1 nouvellement créée, les données du 2ème fichier sur la feuille2 et ainsi de suite sans que l'utilisateur ne doivent le faire "manuellement", en pressant le bouton de commande..?

J'en demande beaucoup, mais je vais plancher ce week-end à fond sur le sujet !

Votre connaissance m'aiderait beaucoup.

Si vous pouvez me donner une piste, c'est très très volontiers :).

Merci d'avance !
0