Bonjour à tous,
Sous Excel 2007, je souhaiterais créer une macro qui ouvre une boîte de dialogue “Parcourir” qui permet de choisir le fichier à importer (toujours un fichier .txt)
Une fois que le fichier est sélectionné, il subit toute une série de transformations dont le code est repris ci-dessous (macro enregistrée et non codée).
Comment dois-je faire pour faire apparaitre cette boite de dialogue?
j’ai trouvé ceci pour: Application.GetOpenFilename mais je ne sais pas comment l’imbriquer dans le code du dessous.
Pourriez-vous me donner un coup de main ?
Sub Macro1()
’
’ Macro1 Macro
’
’
Sheets.Add(after:=Sheets(Sheets.Count)).Name = “Registered TEMP”
With ActiveSheet.QueryTables.Add(Connection:= _
“TEXT;C:\Documents and Settings\jjanssens\My Documents\Login IPT - tracking 30-10-2008.txt” _
, Destination:=Range("$A$1"))
.Name = “Login IPT - tracking 30-10-2008”
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 4, 4, 1, 4)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Rows(“1:1”).RowHeight = 30.75
Rows(“1:1”).Select
Selection.Delete Shift:=xlUp
Selection.RowHeight = 36.75
Cells.Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Rows(“1:1”).Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range(“A2”).Select
ActiveWindow.Zoom = 85
Rows(“1:1”).RowHeight = 24.75
Range(“C2”).Select
ActiveWindow.LargeScroll ToRight:=-1
Columns(“B:B”).Select
Selection.Cut
Columns(“A:A”).Select
Selection.Insert Shift:=xlToRight
Range(“A3”).Select
ActiveWorkbook.Worksheets(“Registered TEMP”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Registered TEMP”).Sort.SortFields.Add Key:=Range( _
“A3”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(“Registered TEMP”).Sort
.SetRange Range(“A2:I307”)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range(“A1:I307”).Select
Range(“A3”).Activate
Selection.Copy
Sheets(“Registered”).Select
Range(“A1”).Select
ActiveSheet.Paste
Sheets(“Registered TEMP”).Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.Delete
Sheets(“DashBoard”).Select
End Sub
Merci infiniment!
gcc
Octobre 15, 2008, 8:38
2
Au début de ta macro :
rep = Application.GetOpenFilename(“Fichiers TXT (*.txt), *.txt”, , “Nom du fichier à traiter”)
If rep = False Then Exit Sub
et ensuite tu remplaces le nom du fichier actuellement présent dans ta macro par rep
Merci pour la réponse.
L’erreur a disparu mais il y a quelque chose d’autre…
J’ai une erreur 1004 “Excel cannot find the text file to refresh this external data range”
Elle se situe au niveau de
Voici ce que donne le code actuellement:
Sub Macro1()
’
’ Macro1 Macro
’
’
Sheets.Add(after:=Sheets(Sheets.Count)).Name = “Registered TEMP”
rep = Application.GetOpenFilename(“Fichiers TXT (*.txt), *.txt”, , “Nom du fichier à traiter”)
If rep = False Then Exit Sub
With ActiveSheet.QueryTables.Add(Connection:= _
“TEXT;rep” _
, Destination:=Range("$A$1"))
.Name = rep
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 4, 4, 1, 4)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Rows(“1:1”).RowHeight = 30.75
Rows(“1:1”).Select
Selection.Delete Shift:=xlUp
Selection.RowHeight = 36.75
Cells.Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Rows(“1:1”).Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range(“A2”).Select
ActiveWindow.Zoom = 85
Rows(“1:1”).RowHeight = 24.75
Range(“C2”).Select
ActiveWindow.LargeScroll ToRight:=-1
Columns(“B:B”).Select
Selection.Cut
Columns(“A:A”).Select
Selection.Insert Shift:=xlToRight
Range(“A3”).Select
ActiveWorkbook.Worksheets(“Registered TEMP”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Registered TEMP”).Sort.SortFields.Add Key:=Range( _
“A3”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(“Registered TEMP”).Sort
.SetRange Range(“A2:I307”)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range(“A1:I307”).Select
Range(“A3”).Activate
Selection.Copy
Sheets(“Registered”).Select
Range(“A1”).Select
Sheets(“Registered”).Paste
Sheets(“Registered TEMP”).Select
Application.CutCopyMode = False
Sheets(“Registered TEMP”).Delete
Sheets(“DashBoard”).Select
End Sub
gcc
Octobre 16, 2008, 2:33
4
Essaie de simplement supprimer la ligne.
Comme de toute manière c’est un paramètre auquel tu n’as pas dû toucher, il conservera sa valeur par défaut.
Si je supprime cette ligne, il n’importe aucune données dans la feuille et il continue la macro en transformant des cellules vides…
gcc
Octobre 17, 2008, 8:47
6
Ah oui, pardon, j’avais mal lu le message d’erreur
Le problème n’est pas sur la ligne que tu mets en gras (même si c’est là qu’il sen aperçoit)
il est dans
With ActiveSheet.QueryTables.Add(Connection:= _
“TEXT;rep” _
, Destination:=Range("$A$1"))
avec “TEXT;rep” , il cherche un fichier qui s’appelle “rep”
avec “TEXT;”+rep , il va chercher un fichier dont le nom est contenu dans rep