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

Rechercher des sujets similaires à "modifier nom classeur"