Erreur sur VBA besoin d'aide je tourne en rond

Fermé
Sheridana Messages postés 10 Date d'inscription jeudi 18 mai 2017 Statut Membre Dernière intervention 19 mai 2017 - Modifié le 19 mai 2017 à 14:10
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 19 mai 2017 à 15:20
Bonjour à vous !

Grâce à l'aide de ce forum j'ai pu faire une petite macro de transformation de fichier txt sur excel.
Or j'ai encore un petit soucis je n'arrive pas a nommer mon fichier et ma feuille.
Et j'ai un soucis quand le nom du fichier change selon la date la macro plante. POuvez vous m'aidez ?

J'aimerais que une fois le fichier enregistrer en txt sous le nom de Etatfi.txt la macro marche mais je ne sais pas ou changer le code.

Merci de votre aide ci dessous ma macro


Sub MacroFinancial()
'
' MacroFin
'

'Ouverture du Fichier

fichierETATFI = Application.GetOpenFilename("Fichier Etats Financier (*.*), *.*", , "Sélectionner le fichier Etat financier à transformer")
If fichierETATFI = False Then Exit Sub

Workbooks.OpenText Filename:=fichierETATFI, Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(14, 1), Array(53, 1)), TrailingMinusNumbers:=True
nom_fichierETATFI = ActiveWorkbook.Name
nom_feuille_ETATFI = ActiveSheet.Name


Cells.Select
ActiveWorkbook.Worksheets("Financial_Statement_Generator_1").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Financial_Statement_Generator_1").Sort.SortFields. _
Add Key:=Range("A1:A651"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Financial_Statement_Generator_1").Sort
.SetRange Range("A1:C651")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("E15").Select
Columns("C:C").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Range("C10").Select


Const lideb As Long = 1 ' premiere ligne à traiter
Const co As String = "C" ' colonne à traiter
Dim li As Long, lifin As Long, v As String, vv As Double
lifin = Range(co & Rows.Count).End(xlUp).Row
For li = lideb To lifin
v = Range(co & li).Value
v = Replace(v, ".", "")
v = Replace(v, ",", ".")
vv = Val(v)
vv = Round(vv, 2)
Range(co & li).Value = vv
Range(co & li).NumberFormat = "#,##0.00"
Next li

MsgBox Format(Application.Sum([C:C]), "0.00")

End Sub

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
19 mai 2017 à 15:20
Bonjour,

« je n'arrive pas a nommer mon fichier ... »
Il n'est pas possible de renommer un fichier lorsqu'il est ouvert.
La solution avec un fichier fermé, est d'utiliser l'instruction
Name OldName As NewName
Avec un fichier ouvert tu peux utiliser la méthode SaveAs (Enregistrer sous) avec les arguments adéquats puis de détruire de fichier initial avec l'instruction Kill.

« ... et ma feuille », il suffit d'utiliser la propriété Name, par exemple :
Worksheets("Financial").Name = "NouveauNom"

« j'ai un soucis quand le nom du fichier change selon la date la macro plante » Mais encore ???,
Comment le nom change-t-il ?
Quel message d'erreur ?
Sur quelle ligne de code ?
0