VBA: Importer des données par Application.GetOpenFilename

Bert

XLDnaute Nouveau
Bonjour à tous,

Ca fait une aprés midi que je me prend la tête sur ces quelque ligne de code...
Le but de l'opération est d'ouvrir un document Excel via une boite de dialogue "parcourir", de copier les 4 premières colonne de ce document et de les coller dans le fichier qui contient la Macro...
Je commence vraiment à manquer d'idée!
Je compte sur vous!
La sub arrive à ouvrir le document, sélectionner les colonnes, les copier..
Mais impossible de fermer le document ni de coller les colonnes.

Merci d'avance!


Code:
Sub Importer()
 
Dim Nom1 As Variant
Dim Wb As Workbooks

Nom1 = Application.GetOpenFilename()

If Nom1 = False Then Exit Sub
Workbooks.Open Filename:=Nom1

Worksheets("Client").Columns("A:D").Select
Selection.Copy

Application.DisplayAlerts = False
ActiveWorkbook.Close

ThisWorkbook.Worksheets("Client").Activate
ThisWorkbook.Worksheets("Client").Range("A1").Select

Selection.Paste

End Sub
 

jim7963

XLDnaute Junior
Re : VBA: Importer des données par Application.GetOpenFilename

Bonjour Bert,

tu peux essayer le code suivant, c'est une adaptation d'un code que j'utilise régulièrement, ça devrait donc fonctionner.

Code:
Sub Import ()

Application.ScreenUpdating = False

Dim Fichier1 As String, Fichier2 As String
Fichier1 = ActiveWorkbook.Name

'ouvre la fenêtre de sélection du fichier à copier, on peut remplacer c:\ par le chemin approprié
Application.Dialogs(xlDialogOpen).Show ("C:\") 
Fichier2 = ActiveWorkbook.Name
'Copier les colonnes A à D de la Feuil1
Sheets("Feuil1").Range("A:D").Select
Selection.Copy

'Coller les données sur le classeur contenant la macro en Feuil1 position A1
Workbooks(Fichier1).Activate
Sheets("Feuil1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'Femeture du fichier copié
Workbooks(Fichier2).Close

Application.ScreenUpdating = True

End Sub
 

Bert

XLDnaute Nouveau
Re : VBA: Importer des données par Application.GetOpenFilename

Youpi! Ca marche! C'est génial!
Par contre est-il possible de rajouter une ligne de code pour éviter l'erreur si tu clique sur annuler dans la boite de dialogue?
Merci!!!
 

Temjeh

XLDnaute Accro
Supporter XLD
Re : VBA: Importer des données par Application.GetOpenFilename

Bonsoir

En attendant mieux
Mettre le nom du fichier ou est le code

En dessous de cette ligne : Fichier2 = ActiveWorkbook.Name

'Mettre le nom de ton classeur qui est déjà ouvet entre les guillemets " ... "
If ThisWorkbook.Name = "Classeur1.xlsm" Then Application.ScreenUpdating = True : Exit Sub

Temjeh
 
Dernière édition:

jim7963

XLDnaute Junior
Re : VBA: Importer des données par Application.GetOpenFilename

Bonjour,

effectivement je n'avais pas remarqué le blocage quand on clique sur annuler vu que je ne l'avais encore jamais testé.

La commande de Temjeh ça marche bien, j'ai juste remplacé:
If ThisWorkbook.Name = "Classeur1.xlsm" par If ThisWorkbook.Name = Fichier1
 

jim7963

XLDnaute Junior
Re : VBA: Importer des données par Application.GetOpenFilename

Autre possibilité que je viens de tester et qui marche bien, remplacer:
Code:
Application.Dialogs(xlDialogOpen).Show ("C:\")

par

Code:
OuvrirFich = Application.Dialogs(xlDialogOpen).Show("C:\")
If OuvrirFich <> False Then

et penser à rajouter le End If en fin de macro
 

Discussions similaires

Réponses
2
Affichages
110

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander