Modifier le nom d'un classeur
Bonjour à tous !
J'aimerai votre aide svp.
J'ai créé grâce à l'aide du forum un code qui me permet d'importer sur excel des données se trouvant dans un fichier TXT.
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Sub ChoixDuFichier()
FichierChoisi = Application.GetOpenFilename("Fichiers TXT,*.TXT")
If Not FichierChoisi = False Then
FichierActuel = ThisWorkbook.Name
Workbooks.OpenText Filename:=FichierChoisi, Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1) _
, Array(22, 1), Array(24, 1), Array(32, 1), Array(43, 1), Array(53, 1), Array(59, 1), Array( _
72, 1), Array(81, 1), Array(90, 1), Array(97, 1), Array(105, 1), Array(115, 1), Array(121, 1 _
)), TrailingMinusNumbers:=True
Range("A1:N521").Copy
Windows(FichierActuel).Activate
Range("b5").Select
ActiveSheet.Paste
Range("D6:O700").HorizontalAlignment = xlRight
Range("D6:O700").IndentLevel = 1
Dim I As Integer
For I = [O65000].End(xlUp).Row To 1 Step -1
If Not Cells(I, 15).Find("PAGE") Is Nothing Then Rows(I).Resize(12).Delete
Next I
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
Workbooks("LISTE.TXT").Close savechanges:=False
End If
End Sub
Le code fonctionne très bien mais il est nécessaire que le fichier TXT porte le même nom a chaque fois.
Next I
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
Workbooks("LISTE.TXT").Close savechanges:=False
End If
End Sub
hors il y a eu du changement et le fichier TXT que j'importais a désormais un nom aléatoire et je sais pas comment faire.
Merci d'avance pour votre aide
Et comment tu sais quel TXT importer si son nom est aléatoire ? Son emplacement est fixe ? Est il le seul txt à cet emplacement ?
Si oui, simple suffit de prendre le nom du seul fichier txt à cet emplacement. Dans le cas contraire, boucler sur les txt les ouvrir et trouver le bon en testant certains points...
Une fois que tu as ton nom... Tu lances ton sub
Merci pour ton aide.
J'utilise une base qui présente les résultats sur un pdf, mais il y a un bouton qui me permet de le télécharger en format TXT.
Le problème est que j'utilise cette base pour d'autre contrôle et le même procéder VBA.
Avant peu importait la base, lorsque je cliquais sur le bouton le nom du fichier étais LISTE.TXT Maintenant c'est un nom qui est basé sur d'autre paramètre avec des codes qui change tous les jours.
Avant, que je contrôle le nombre de banane ou de pomme, le fichier TXT etais toujours : LISTE.TXT
Maintenant les fichiers portes des noms différents qui change tous les jours du genre :
REFf9f51f_5_8217245_8163965.TXT
REFvavb331q_5_1565_3115665.TXT
Trois questions, zéro réponses.. Tu te contentes de réexpliquer ce que tu as déjà expliqué plus haut. Donc je vais me contenter de répéter moi aussi.
Et comment tu sais quel TXT importer si son nom est aléatoire ? Son emplacement est fixe ? Est il le seul txt à cet emplacement ?
Si oui, simple suffit de prendre le nom du seul fichier txt à cet emplacement. Dans le cas contraire, boucler sur les txt les ouvrir et trouver le bon en testant certains points...
Une fois que tu as ton nom... Tu lances ton sub
j'extrait, sur mon bureau, les données au fur et a mesure que je les analyses. Une fois le premier fichier analysé je le supprime et je recommence avec d'autre données que j’extrais sur mon bureau.
Je pourrai a chaque fois renommer le fichier TXT mais j'en ai au moins 200 a faire par jour et chaque analyse sur excel ne prend que quelque secondes suite a des mise en formes conditionnels.
Donc je prendrai plus de temps a renommer mon fichier qu'analyser mes données sur excel.
J’espère avoir répondu a ta question
S'il n'y a qu'un txt sur le bureau...
Public nomdufichier as string
Sub nomfile()
Dim objFSO, objDossier, objFichier
Dim Repertoire
On Error Resume Next
Repertoire = "C:\Users\User\Desktop"
NomFichierTxt = "Resultat.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDossier = objFSO.GetFolder(Repertoire)
If (objDossier.Files.Count > 0) Then
For Each objFichier In objDossier.Files
If (InStr(1, objFichier.Name, ".txt", 1) > 0) Then
nomdufichier = objFichier.Name
End If
Next
End If
Set objDossier = Nothing
Set objFSO = Nothing
End Sub
Il te suffira de prendre comme nom du fichier la variable nomdufichier
dela a écrit :Bonjour à tous !
J'aimerai votre aide svp.
J'ai créé grâce à l'aide du forum un code qui me permet d'importer sur excel des données se trouvant dans un fichier TXT.
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function EmptyClipboard Lib "user32" () As Long Public Declare Function CloseClipboard Lib "user32" () As Long Sub ChoixDuFichier() FichierChoisi = Application.GetOpenFilename("Fichiers TXT,*.TXT") If Not FichierChoisi = False Then FichierActuel = ThisWorkbook.Name Workbooks.OpenText Filename:=FichierChoisi, Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1) _ , Array(22, 1), Array(24, 1), Array(32, 1), Array(43, 1), Array(53, 1), Array(59, 1), Array( _ 72, 1), Array(81, 1), Array(90, 1), Array(97, 1), Array(105, 1), Array(115, 1), Array(121, 1 _ )), TrailingMinusNumbers:=True Range("A1:N521").Copy Windows(FichierActuel).Activate Range("b5").Select ActiveSheet.Paste Range("D6:O700").HorizontalAlignment = xlRight Range("D6:O700").IndentLevel = 1 Dim I As Integer For I = [O65000].End(xlUp).Row To 1 Step -1 If Not Cells(I, 15).Find("PAGE") Is Nothing Then Rows(I).Resize(12).Delete Next I OpenClipboard (0&) EmptyClipboard CloseClipboard Workbooks("LISTE.TXT").Close savechanges:=False End If End Sub
Le code fonctionne très bien mais il est nécessaire que le fichier TXT porte le même nom a chaque fois.
Next I OpenClipboard (0&) EmptyClipboard CloseClipboard Workbooks("LISTE.TXT").Close savechanges:=False End If End Sub
hors il y a eu du changement et le fichier TXT que j'importais a désormais un nom aléatoire et je sais pas comment faire.
Merci d'avance pour votre aide
il me semble que le nom du ficher est celui qui se trouve dans la variable FichierChoisi
si c'est le cas il te suffit de remplacer l'instruction
Workbooks("LISTE.TXT").Close savechanges:=False
par
sl = InStrRev(fichierchoisi, "\")
If sl <> 0 Then fichierchoisi = Mid(fichierchoisi, sl + 1)
Workbooks(fichierchoisi).Close savechanges:=False
à tester ...
Un grand merci EngueEngue pour ton aide (et ta patience) j'avais du mal à réutilisé ton code donc j'ai essayé celui de h2so4 et ça marche nickel.
Merci 1000 fois h2so4 ton code marche a merveille et me fais gagner un temps fou.
A bientôt et encore merci à vous deux