Excel csv vers xlsm
Résolu
__Juulien__
Messages postés
23
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour,
J'ai des fichiers CSV que je souhaite insérer dans mon document actif à l'aide d'un bouton ( il permet d'actualiser les données de mon fichier ouvert )
Le problème et qu'après l'exécution de mon script powershell, les données ne s'ajoutent pas. Il y a seulement les anciennes données qui disparaissent.
Mon vba qui permet lancé mon script Powershell :
Mon fichier Powershell :
EDIT : AJout des balises de code
J'ai des fichiers CSV que je souhaite insérer dans mon document actif à l'aide d'un bouton ( il permet d'actualiser les données de mon fichier ouvert )
Le problème et qu'après l'exécution de mon script powershell, les données ne s'ajoutent pas. Il y a seulement les anciennes données qui disparaissent.
Mon vba qui permet lancé mon script Powershell :
Sub Bouton1() strCommand = "Powershell -File ""\C:\Temp\Excel\Update_data""" Set WshShell = CreateObject("WScript.Shell") Set WshShellExec = WshShell.Exec(strCommand) strOutput = WshShellExec.StdOut.ReadAll MsgBox strOutput End Sub
Mon fichier Powershell :
# Définir les emplacements et le séparateur $csv = "\C:\Temp\Excel\Update_data\Customer_hotline.csv" # Emplacement du fichier source 1 $csv2 = "\C:\Temp\Excel\Update_datal\Customer_consulting.csv" # Emplacement du fichier source 2 $xlsm = "\C:\Temp\Excel\Update_data\Customer_hotline_consulting.xlsm" # Emplacement du fichier final $delimiter = "," # Séparateur # Ouvrir le fichier et la feuille excel (fichier 1) $excel = New-Object -ComObject excel.application $Workbook = $Excel.Workbooks.Open($$xlsm) $worksheet = $workbook.Worksheets.Item(1) $worksheet.Cells.Clear() # Ajout des données + formatage des données (fichier 1) $TxtConnector = ("TEXT;" + $csv) $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1")) $query = $worksheet.QueryTables.item($Connector.name) $query.TextFileOtherDelimiter = $delimiter $query.TextFileParseType = 1 $query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count $query.AdjustColumnWidth = 1 $query.TextFilePlatform = 65001 # Exécuter et supprimer la requête d'importation (fichier 1) $query.Refresh() $query.Delete() # Ouvrir ouvrir feuille de calcul (fichier 2) $worksheet2 = $workbook.Worksheets.Item(2) $worksheet2.Cells.Clear() # Ajout des données + formatage des données (fichier 2) $TxtConnector = ("TEXT;" + $csv2) $Connector = $worksheet2.QueryTables.add($TxtConnector,$worksheet2.Range("A1")) $query = $worksheet2.QueryTables.item($Connector.name) $query.TextFileOtherDelimiter = $delimiter $query.TextFileParseType = 1 $query.TextFileColumnDataTypes = ,2 * $worksheet2.Cells.Columns.Count $query.AdjustColumnWidth = 1 $query.TextFilePlatform = 65001 # Exécuter et supprimer la requête d'importation (fichier 2) $query.Refresh() $query.Delete() # Sauvegarder et fermer le fichier .xlsx $Workbook.Save() $excel.Quit()
EDIT : AJout des balises de code
A voir également:
- Excel csv vers xlsm
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
2 réponses
Bonjour,
Tu essaies d'écrire dans le fichier qui est déjà ouvert depuis un script externe en powershell ? Je ne pense pas que ça fonctionne.
Il semble également qu'il manque une quote à la ligne 3 de ton powershell.
Et puis, vu que tu fais du VBA... pourquoi ne pas traiter l'import directement en VBA au lieu de passer par un script externe ?
Tu essaies d'écrire dans le fichier qui est déjà ouvert depuis un script externe en powershell ? Je ne pense pas que ça fonctionne.
Il semble également qu'il manque une quote à la ligne 3 de ton powershell.
Et puis, vu que tu fais du VBA... pourquoi ne pas traiter l'import directement en VBA au lieu de passer par un script externe ?
Oui justement vu que le fichier est déjà ouvert, en utilisant le script Powershell cela fait comme si deux utilisateurs travaillent dessus simultanément.
J'ai décidé d'utiliser le script externe car j'en avais un à disposition, mais je pense que la solution d’utiliser entièrement du vba serait probablement mieux. Je n'ai juste aucune notion de VBA et n'ai pas trouvé ce qui me convenais sur le net pour modifier un fichier déjà ouvert.
Merci pour vos conseils
J'ai décidé d'utiliser le script externe car j'en avais un à disposition, mais je pense que la solution d’utiliser entièrement du vba serait probablement mieux. Je n'ai juste aucune notion de VBA et n'ai pas trouvé ce qui me convenais sur le net pour modifier un fichier déjà ouvert.
Merci pour vos conseils
Oui justement vu que le fichier est déjà ouvert, en utilisant le script Powershell cela fait comme si deux utilisateurs travaillent dessus simultanément
Ben justement... on ne peut pas travailler à plusieurs sur un même fichier... sauf si il est "partagé"
Mais le fait de le faire depuis autre chose qu'excel lui même... je ne suis pas certain que ça marche.
A savoir que lorsque le fichier est partagé, pour voir les modifications faites par le second utilisateur, il faut faire un SAVE également de son côté pour que ça actualise de son côté.
- Le user2 fait une modif et sauvegarde
- Le user1 fait une sauvegarde et peut alors voir les modifs du user1
Je n'ai juste aucune notion de VBA
Mais, si tu as trouvé comment faire en powershell .. tu n'auras pas de mal à le faire en VBA. Le code est quasi le même ... les $ en moins.