Importation basée sur un nom de fichier partiel (Microsoft Excel)
Ira reçoit chaque semaine un fichier délimité par du texte qu’il importe dans Excel à l’aide d’une macro. Le nom du fichier était toujours le même chaque semaine, donc Ira a pu l’intégrer dans la macro; cela a rendu l’importation très facile. Récemment, le nouveau système du fournisseur a commencé à changer le nom du fichier chaque semaine, mais les 12 premiers caractères restent toujours les mêmes. Ira se demande comment il peut coder la macro pour importer ce fichier texte sans avoir à modifier le nom du fichier chaque semaine.
Il existe plusieurs façons d’aborder ce problème, et toutes peuvent signifier un recodage approfondi de votre macro. La méthode que vous choisissez doit dépendre de la façon dont vous voulez faire votre travail chaque semaine. Par exemple, disons que vous connaissez le répertoire dans lequel le fichier entrant est stocké, quels sont les caractères de base 12 pour le nom de fichier et l’extension du nom de fichier. Avec ces informations, vous pouvez simplement inviter l’utilisateur à fournir le suffixe du nom de fichier, de cette manière:
Sub OpenImportFile() Dim sFileName As String Dim sBase As String Dim sSuffix As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sSuffix = InputBox("Enter suffix for filename") sFileName = sBase & sSuffix & sExt Workbooks.Open Filename:=sFileName End Sub
Vous pouvez évidemment changer la base et l’extension à votre guise. Cet exemple suppose que vous importez un fichier CSV, qui devrait s’ouvrir correctement dans Excel.
Si vous placez simplement un groupe de fichiers dans un dossier et que vous souhaitez tous les ouvrir, le code devient un peu plus rapide à exécuter car vous n’avez pas besoin de saisir l’utilisateur.
Sub OpenImportFiles() Dim sFileName As String Dim sBase As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sFileName = Dir(sBase & "*" & sExt) If sFileName = "" Then MsgBox "No Files Found" Else Do While sFileName > "" Workbooks.Open Filename:=sFileName sFileName = Dir Loop End If End Sub
Cette approche ouvre tous les fichiers CSV du dossier; pour ouvrir un autre type de fichier, changez simplement ce qui est stocké dans la variable sExt. Une chose à retenir est que puisque tous les fichiers CSV du dossier sont ouverts, cela signifie qu’il peut ouvrir les fichiers d’importation des semaines précédentes. (Cela peut ou non être ce que vous voulez.)
Tout ce qui est présenté dans cette astuce suppose jusqu’à présent que lorsque vous « importez » un fichier, tout ce que vous voulez faire est d’ouvrir le fichier pour pouvoir l’utiliser. Ce n’est peut-être pas le cas; vous souhaiterez peut-être que votre macro traite le fichier d’importation d’une manière ou d’une autre et en fasse quelque chose. Cette fonctionnalité peut déjà être dans votre ancienne macro, il vous suffit donc de modifier la façon dont le fichier d’importation est identifié. Si tel est le cas, le code que vous utilisez peut être adapté à partir du code déjà présenté dans cette astuce.
Une autre façon d’extraire les données d’un fichier texte et de les insérer dans un classeur consiste à utiliser la méthode OpenText, comme indiqué dans cet exemple de code:
Sub OpenImportFile() Dim sFileName As String Dim sBase As String Dim sExt As String sBase = "c:\MyDirectory\First12Chars" sExt = ".csv" sFileName = sBase & "*" & ".txt" Workbooks.OpenText Filename:=sFileName, Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:= False, Space:=False, _ Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True End Sub
Une exploration complète de ce que fait la méthode OpenText dépasse le cadre de cette astuce, mais le résultat est que tous les fichiers texte délimités qui commencent par les caractères de base 12 doivent être ouverts dans vos classeurs.
Vous pouvez modifier le fonctionnement de la méthode en modifiant les paramètres. Vous voudrez porter une attention particulière aux paramètres utilisés pour spécifier le caractère de délimitation à utiliser.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13472) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.