J'ai un script qui génère un certain nombre de mesures de performances pour un ordinateur dans un fichier .csv. Excel effectue une vérification statistique de base pour l'écart type, etc.
Je sais que vous pouvez importer des fichiers .csv dans Excel, mais ce que j'essaie de faire, c'est de lire ces données de manière dynamique dans mon modèle Excel sans avoir à réimporter et à remodeler à chaque fois.
Est-il possible d’avoir une cellule/table référençant un .csv externe sans réimporter à chaque fois?
Le moyen le plus simple consiste à importer les données dans Access ou SQL Express, puis à utiliser les fonctionnalités de connexion de données dans Excel. Après la configuration initiale, il vous suffit de cliquer sur Actualiser tout pour extraire les données et recalculer les valeurs.
Vous pouvez importer directement le fichier CSV avec la fonctionnalité de connexion de données, mais vous souhaitez extraire les données et les ajouter à une feuille de calcul. Cela fonctionnera tant que vous l'importerez dans une feuille de calcul secondaire et que vous laisserez vos formules et calculs sur une autre feuille. Lorsque vous cliquez sur Actualiser à l'aide de cette méthode, le système vous demande le nom du fichier, puis réimportez-le en utilisant les mêmes paramètres que ceux utilisés à l'origine. Cette méthode est également généralement plus lente ou inutilisable avec des jeux de données volumineux.
Vous pouvez également utiliser Power Query , qui est un moyen un peu plus souple d’atteindre les mêmes résultats que dans réponse de @ andy-lynch .
Voir ci-dessous gif pour aperçu:
Power Query n'est pas disponible pour MacOS. La boîte de dialogue de fichier ouvert "Du texte" d'Excel sous MacOS n'accepte pas d'URL (au moins à la version 15.33).
Pour créer une telle connexion, il faut d’abord construire un fichier de requête Web (.iqy), comme expliqué dans ce guide , puis l’importer avec "Données -> Obtenir des données externes -> Exécuter sauvegardé requête "commande de menu.
Un moyen plus simple (grâce à this post ) est d’importer les données comme vous le feriez pour un fichier texte que vous avez déjà téléchargé (c.-à-d. Data > Import Text File
), mais au lieu de saisir un nom de fichier, collez l’URL de le fichier CSV à la place.
La question est "Comment référencer des données dans un fichier .csv?
Mon moyen serait de couper le fichier .csv et d’utiliser une macro contenant VBA et ADO qui reçoit les données et les place directement dans une feuille de calcul Excel. Toute base de données compatible ODBC peut être votre source.
Excel 2010 contient Données >> Obtenir des données externes - à partir de diverses sources de données. Cependant, je préfère écrire mon propre code car je dispose d'un contrôle absolu et je peux formater les résultats dans la macro. Le rafraîchissement se fait en un clic et vous pouvez tout faire avec.
Je pourrais vous informer de certains détails si vous me disiez de quelle base de données proviennent les statistiques.
PS Consultez la liste des pilotes dans Données >> Obtenir des données externes >> Connexions existantes >> Recherchez Plus >> Nouvelle source >> Autres avancées >> Suivant qui vous mène à la liste Propriétés de liaison de données. Vous devez ensuite savoir quelle base de données source et quel pilote utiliser. Vous pouvez m'envoyer un email à cliffbeacham at hotmail avec plus de détails.
Avec une macro ou un script VBS, cela ressemblerait à (Excel2010 et versions ultérieures):
Sub Macro1()
'
' Macro1 Macro
'
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;\\Path\To\CSV\Folder\CSV_Data.csv" _
, Destination:=Range("$A$1"))
.CommandType = 0
.Name = "Book1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Cette macro a en fait été enregistrée par l’enregistreur de macros Excel 2013.
Vous pouvez créer un bouton qui déclenche cette macro.
importer le fichier csv directement via File->From Text
vérifier les propriétés de connexion dans Data->Connections