Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fermer fichier texte définit en variable

3 réponses
Avatar
dracbi
Bonjour,

Je ne parviens pas =E0 fermer un fichier ".txt" ouvert =E0 partir de vba.
J'aimerais ouvrir n'importe quel fichier texte =E0 partir de vba
r=E9cup=E9rer son nom une fois ouvert afin de le fermer apr=E8s avoir
appliquer le traitement voulu.

Quelqu'un a t'il un bout de macro dans ce genre ? Ou peut on m'aider =E0
r=E9aliser cela.

Voici mon bout de macro.

Sub XXX()
variableclasseur =3D ActiveWorkbook.Name
variablefeuille =3D ActiveSheet.Name


ChDir "C:\Documents and Settings\"
Fichier =3D Application.GetOpenFilename("Text Files(*.txt), *.txt")
Freenum =3D FreeFile

Open Fichier For Binary As Freenum
MsgBox (" Voici le nom du fichier s=E9lectionn=E9 : ") & Fichier
Range("E2").Value =3D Fichier


If Freenum <> False Then
Workbooks.OpenText Filename:=3D _
Fichier, Origin:=3DxlWindows, StartRow:=3D1,
DataType:=3DxlDelimited, TextQualifier _
:=3DxlDoubleQuote, ConsecutiveDelimiter:=3DFalse, Tab:=3DTrue,
Semicolon:=3D _
False, Comma:=3DFalse, Space:=3DFalse, Other:=3DFalse,
FieldInfo:=3DArray(Array _
(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),
Array(6, 1), Array(7, 1), Array(8 _
, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1),
Array(13, 1), Array(14, 1)), _
TrailingMinusNumbers:=3DTrue
Else: Exit Sub
End If

Close Freenum
Columns("B:B").Select
Range("B1").Activate
Selection.TextToColumns Destination:=3DRange("B1"),
DataType:=3DxlDelimited, _
TextQualifier:=3DxlDoubleQuote, ConsecutiveDelimiter:=3DFalse,
Tab:=3DTrue, _
Semicolon:=3DFalse, Comma:=3DFalse, Space:=3DFalse, Other:=3DFalse,
FieldInfo _
:=3DArray(1, 4), TrailingMinusNumbers:=3DTrue

Range("o1").Select
ActiveCell.FormulaR1C1 =3D "=3DIF(RC[-13]=3D"""","""",MONTH(RC[-13]))"
Range("o1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select

Range("p1").Select
ActiveCell.FormulaR1C1 =3D "=3DIF(RC[-14]=3D"""","""",year(RC[-14]))"
Range("p1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select

Range("Q1").Select
ActiveCell.FormulaR1C1 =3D "=3DRC[-8]-RC[-7]"
Range("Q1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select


Windows(variableclasseur).Activate

Sheets("COMPTA").Select
Cells.Select
Application.CutCopyMode =3D False
Selection.ClearContents

Windows("ST.txt").Activate

Cells.Select
Range("A65517").Activate
Selection.Copy
Windows(variableclasseur).Activate
ActiveWindow.WindowState =3D xlNormal
Sheets("COMPTA").Select
Range("A1").Select
Selection.PasteSpecial Paste:=3DxlPasteValues, Operation:=3DxlNone,
SkipBlanks _
:=3DFalse, Transpose:=3DFalse

Selection.Columns.AutoFit

End Sub



Merci.

3 réponses

Avatar
Misange
bonjour il te suffit de nommer ton fichier au moment ou tu l'ouvres

FichierAOuvrir = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If FichierAOuvrir <> False Then
MsgBox "Open " & FichierAOuvrir

ensuite tu le fermes en l'appelant par son petit nom FichierAOuvrir

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,

Je ne parviens pas à fermer un fichier ".txt" ouvert à partir de vba.
J'aimerais ouvrir n'importe quel fichier texte à partir de vba
récupérer son nom une fois ouvert afin de le fermer après avoir
appliquer le traitement voulu.

Quelqu'un a t'il un bout de macro dans ce genre ? Ou peut on m'aider à
réaliser cela.

Voici mon bout de macro.

Sub XXX()
variableclasseur = ActiveWorkbook.Name
variablefeuille = ActiveSheet.Name


ChDir "C:Documents and Settings"
Fichier = Application.GetOpenFilename("Text Files(*.txt), *.txt")
Freenum = FreeFile

Open Fichier For Binary As Freenum
MsgBox (" Voici le nom du fichier sélectionné : ") & Fichier
Range("E2").Value = Fichier


If Freenum <> False Then
Workbooks.OpenText Filename:= _
Fichier, Origin:=xlWindows, StartRow:=1,
DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:= _
False, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo:=Array(Array _
(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),
Array(6, 1), Array(7, 1), Array(8 _
, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1),
Array(13, 1), Array(14, 1)), _
TrailingMinusNumbers:=True
Else: Exit Sub
End If

Close Freenum
Columns("B:B").Select
Range("B1").Activate
Selection.TextToColumns Destination:=Range("B1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

Range("o1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-13]="""","""",MONTH(RC[-13]))"
Range("o1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select

Range("p1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-14]="""","""",year(RC[-14]))"
Range("p1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select

Range("Q1").Select
ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-7]"
Range("Q1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select


Windows(variableclasseur).Activate

Sheets("COMPTA").Select
Cells.Select
Application.CutCopyMode = False
Selection.ClearContents

Windows("ST.txt").Activate

Cells.Select
Range("A65517").Activate
Selection.Copy
Windows(variableclasseur).Activate
ActiveWindow.WindowState = xlNormal
Sheets("COMPTA").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse

Selection.Columns.AutoFit

End Sub



Merci.


Avatar
Misange
en plus je suis tellement à la masse que j'avais pas vu que tu as déjà
Fichier = Application.GetOpenFilename("Text Files(*.txt), *.txt")
... bon je rentre il est temps de lâcher l'écran !!!

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,

Je ne parviens pas à fermer un fichier ".txt" ouvert à partir de vba.
J'aimerais ouvrir n'importe quel fichier texte à partir de vba
récupérer son nom une fois ouvert afin de le fermer après avoir
appliquer le traitement voulu.

Quelqu'un a t'il un bout de macro dans ce genre ? Ou peut on m'aider à
réaliser cela.

Voici mon bout de macro.

Sub XXX()
variableclasseur = ActiveWorkbook.Name
variablefeuille = ActiveSheet.Name


ChDir "C:Documents and Settings"
Fichier = Application.GetOpenFilename("Text Files(*.txt), *.txt")
Freenum = FreeFile

Open Fichier For Binary As Freenum
MsgBox (" Voici le nom du fichier sélectionné : ") & Fichier
Range("E2").Value = Fichier


If Freenum <> False Then
Workbooks.OpenText Filename:= _
Fichier, Origin:=xlWindows, StartRow:=1,
DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab:=True,
Semicolon:= _
False, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo:=Array(Array _
(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),
Array(6, 1), Array(7, 1), Array(8 _
, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1),
Array(13, 1), Array(14, 1)), _
TrailingMinusNumbers:=True
Else: Exit Sub
End If

Close Freenum
Columns("B:B").Select
Range("B1").Activate
Selection.TextToColumns Destination:=Range("B1"),
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:úlse,
Tab:=True, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

Range("o1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-13]="""","""",MONTH(RC[-13]))"
Range("o1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select

Range("p1").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-14]="""","""",year(RC[-14]))"
Range("p1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select

Range("Q1").Select
ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-7]"
Range("Q1").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Selection.End(xlDown).Select


Windows(variableclasseur).Activate

Sheets("COMPTA").Select
Cells.Select
Application.CutCopyMode = False
Selection.ClearContents

Windows("ST.txt").Activate

Cells.Select
Range("A65517").Activate
Selection.Copy
Windows(variableclasseur).Activate
ActiveWindow.WindowState = xlNormal
Sheets("COMPTA").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse

Selection.Columns.AutoFit

End Sub



Merci.


Avatar
dracbi
On 12 juin, 19:57, Misange wrote:
en plus je suis tellement à la masse que j'avais pas vu que tu as déj à
Fichier = Application.GetOpenFilename("Text Files(*.txt), *.txt")
... bon je rentre il est temps de lâcher l'écran !!!

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki.f ree.fr/wikihttp://www.excelabo.net




Bonjour,

Je ne parviens pas à fermer un fichier ".txt" ouvert à partir de vba .
J'aimerais ouvrir n'importe quel fichier texte à partir de vba
récupérer son nom une fois ouvert afin de le fermer après avoir
appliquer le traitement voulu.

Quelqu'un a t'il un bout de macro dans ce genre ? Ou peut on m'aider à
réaliser cela.

Voici mon bout de macro.

Sub XXX()
variableclasseur = ActiveWorkbook.Name
variablefeuille = ActiveSheet.Name

ChDir "C:Documents and Settings"
Fichier = Application.GetOpenFilename("Text Files(*.txt), *.txt")
Freenum = FreeFile

Open Fichier For Binary As Freenum
MsgBox (" Voici le nom du fichier sélectionné : ") & Fichier
Range("E2").Value = Fichier

If Freenum <> False Then
Workbooks.OpenText Filename:= _
        Fichier, Origin:=xlWindows, StartRow:=1,
DataType:=xlDelimited, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:úlse, Tab: =True,
Semicolon:= _
        False, Comma:úlse, Space:úlse, Other:úlse,
FieldInfo:=Array(Array _
        (1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),
Array(6, 1), Array(7, 1), Array(8 _
        , 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1),
Array(13, 1), Array(14, 1)), _
        TrailingMinusNumbers:=True
Else: Exit Sub
End If

Close Freenum
Columns("B:B").Select
Range("B1").Activate
    Selection.TextToColumns Destination:=Range("B1"),
DataType:=xlDelimited, _
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=F alse,
Tab:=True, _
        Semicolon:úlse, Comma:úlse, Space:úlse, Othe r:úlse,
FieldInfo _
        :=Array(1, 4), TrailingMinusNumbers:=True

Range("o1").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-13]="""","""",MONTH(RC[- 13]))"
    Range("o1").Select
    Selection.Copy
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    Selection.End(xlDown).Select

Range("p1").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-14]="""","""",year(RC[-1 4]))"
    Range("p1").Select
    Selection.Copy
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    Selection.End(xlDown).Select

Range("Q1").Select
    ActiveCell.FormulaR1C1 = "=RC[-8]-RC[-7]"
    Range("Q1").Select
    Selection.Copy
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
    Selection.End(xlDown).Select

Windows(variableclasseur).Activate

Sheets("COMPTA").Select
Cells.Select
Application.CutCopyMode = False
Selection.ClearContents

Windows("ST.txt").Activate

Cells.Select
Range("A65517").Activate
Selection.Copy
Windows(variableclasseur).Activate
ActiveWindow.WindowState = xlNormal
Sheets("COMPTA").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
        :úlse, Transpose:úlse

Selection.Columns.AutoFit

End Sub

Merci.- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -


Malheuresement cela ne marche pas à prioris
Fichier = Application.GetOpenFilename("Text Files(*.txt), *.txt")....
Lorsque je remplace ceci :

Windows("ST.txt").Activate

Par cela :

Windows(Fichier).Activate

On me renvoie le message suivant :
"Erreur d'exécution 09 - L'indice n'appartient pas à la sélection"

Pourquoi ce message d'erreur ??? Parce que le nom du fichier est
complet ?
Habituellement on a TARTAMPION.txt alors que la variable Fichier
renvoie le chemin complet, soit C:xxxTARTAMPION.txt
Comment faire pour n'avoir que TARTAMPION.txt ?

Merci