Bonjour,

j'ai fait une macro qui me permettrait de copier un fichier sélectionné sur le disque directement à une feuille de calcul en l'appliquant à un bouton de commande, je rencontre trois difficultés :

1 - une boîte de dialogue apparaît pour demander à l'utilisateur de sélectionner le fichier, je ne sais pas comment utiliser le fichier directement sans passer par

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Application.Dialogs(xlDialogOpen).Show(Chemin & "Export tempo\réseau en cours.xl*")
J'aimerais que les données soient importées directement sans demander d'ouvrir le fichier. Est ce que c'est possible ?

2-Après avoir sélectionné le fichier, une boîte de dialogue apparaît pour gérer l'import (choisir le format, le séparateur des colonnes), j'aimerais éviter cela.

3-La macro n'importe pas correctement le format de date, les dates ne sont plus toutes regroupées par année, du coup cela me fausse le filtre sur la date, c'est le plus embêtant !

Pourriez vous m'aider svp ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
'DestBook = classeur de dstination et SourceBook=classeur source
 
Dim DestBook As Workbook, SourceBook As Workbook
Dim DestCell As Range
Dim RetVal As Boolean
Dim Chemin As String
 
' désactiver le rafraichissement de l'écran avant la macro
Application.ScreenUpdating = False
 
'chemin en relatif du dossier ou se trouve tes données
Chemin = "C:\"
 
' Set object variables for the active book and active cell.
Set DestBook = ActiveWorkbook
Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).ClearContents
Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).ClearFormats
Set DestCell = Range("A1") 'active la cellule où j'aimerais copier les données
 
'Ouvre la boîte de dialogue
RetVal = Application.Dialogs(xlDialogOpen).Show(Chemin & "Export tempo\réseau en cours.xl*")
 
 
' If Retval is false (Open dialog canceled), exit the procedure.
If RetVal = False Then Exit Sub
 
' active le classeur à partir duquel copier les données
Set SourceBook = ActiveWorkbook
 
' copie entièrement la feuille de calcul
Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy
 
' Active la feuille de destination et une cellule de cette feuille
DestBook.Activate
DestCell.Activate
ActiveSheet.Paste
'colle les formats et les valeurs des cellules
Selection.PasteSpecial Paste:=xlPasteValues, Operation:= _
      xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:= _
      xlNone, SkipBlanks:=False, Transpose:=False
      Application.CutCopyMode = False
SourceBook.Close False
 
Application.ScreenUpdating = True
Application.DisplayAlerts = False
ActiveSheet.Name = "en cours liste complète réseau"
' Ferme le classeur contenant les données à copiée
Merci d'avance pour votre aide