| auteur : jbaudin |
Depuis Excel 2002, l'export en CSV via VBA prend par défaut une virgule. (Sauf si on le fait à la main: Fichier/Enregistrer sous/ CSV (séparateur point-virgule))
Pour forcer Excel ou Access à utiliser un point-virgule lors de l'export d'un fichier Excel vers CSV, il faut :
- Vérifier dans les Options Régionales (Panneau de configuration de Windows), onglets Nombres, si le séparateur de liste est bien un point-virgule.
- Ajouter ceci dans le code : Local:=True pour forcer Excel à utiliser le séparateur configuré sur l'ordinateur utilisé.
Soit :
appXl. ActiveWorkbook . SaveAs Filename:= _
" D:\MonFichier.csv " , FileFormat:= xlCSV, _
CreateBackup:= False , Local:= True
|
Et là on a bien des points-virgules comme séparateurs dans le fichier CSV.
|
| auteur : Tofalu |
Tout d'abord vous devez ajouter la référence Microsoft Excel X.0 Object Library à votre projet.
Puis dans un module :
Public Function TestExistenceFeuille (strNomFeuille As String , strNomFichier As String ) As Boolean
On Error GoTo err
Dim oAppExcel As Excel. Application
Dim oWbk As Excel. Workbook
Dim oSht As Excel. Worksheet
Set oAppExcel = New Excel. Application
Set oWbk = oAppExcel. Workbooks . Open (strNomFichier)
Set oSht = oWbk. Sheets (strNomFeuille)
TestExistenceFeuille = True
Set oSht = Nothing
oWbk. Close
oAppExcel. Quit
Set oWbk = Nothing
Set oAppExcel = Nothing
err :
End Function
|
Exemple d'utilisation :
Sub test ()
MsgBox TestExistenceFeuille (" Feuil1 " , " D:\test.xls " )
End Sub
|
Notez que si vous utilisez déjà un objet Excel.Application dans votre code principal, vous pouvez le passer en argument à la fonction afin d'accélérer le traitement. Cela donne :
Public Function TestExistenceFeuille (strNomFeuille As String , strNomFichier As String , oAppExcel As Excel. Application ) As Boolean
On Error GoTo err
Dim oWbk As Excel. Workbook
Dim oSht As Excel. Worksheet
Set oWbk = oAppExcel. Workbooks . Open (strNomFichier)
Set oSht = oWbk. Sheets (strNomFeuille)
TestExistenceFeuille = True
Set oSht = Nothing
oWbk. Close
Set oWbk = Nothing
err :
End Function
|
Que vous utiliserez dans votre code ainsi :
Dim MonAppli as Excel. Application
If TestExistenceFeuille (" Feuil1 " , " D:\test.xls " ,MonAppli) Then
Msgbox " La feuille existe déjà "
else
Msgbox " La feuille n'existe pas "
End if
|
|
| auteur : cladlemeilleur | Pour utiliser ce code il faut référencer la bibliothèque Excel (VBE : menu Outils/Références) Private Sub DémoPilotageExcel ()
Dim xlApp As Excel. Application
Dim xlSheet As Excel. Worksheet
Dim xlBook As Excel. Workbook
Dim i as long
Dim vtemp As Variant
Set xlApp = CreateObject (" Excel.Application " )
Set xlBook = xlApp. Workbooks . Open (" C:\Chemin\Feuille.xls " )
Set xlSheet = xlBook. Worksheets . Add
xlSheet. Name = " Toto "
xlSheet. Cells (1 , 1 ) = " je suis dans la ligne1 et colonne1 "
xlSheet. Range (" A2:D6 " ). Value = " Zones A2:D6 "
For i = 2 To 6
xlSheet. Cells (i, 5 ). Value = i
Next
xlSheet. Range (" A2:E6 " ). Sort xlSheet. Columns (" E " ), xlDescending
vtemp = xlSheet. Range (" A2:E6 " ). Find (" 2 " ). Row
vtemp = xlSheet. Columns (" E " ). Find (" 2 " ). Row
xlSheet. Range (" A " & vtemp & " :E " & vtemp). Copy
xlSheet. Paste Destination:= xlSheet. Range (" A8:E8 " )
xlSheet. Rows (vtemp). Delete
xlSheet. Range (" A " & i & " :H " & i). EntireRow . Insert Shift:= xlShiftDown
xlBook. Save
xlApp. Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
MsgBox " Fin de la procédure. :) "
End Sub
|
|
| auteur : Maxence HUBICHE | Comment n'importer que quelques colonnes d'un fichier Excel ?
Il est possible de faire une table qui a les mêmes noms de champs que dans Excel. Lors de l'import dans la table ainsi créée, Access n'importera que les champs de la table.
Si les noms de champs ne sont pas spécifiés dans excel,
il ne sera pas possible de n'importer que quelques colonnes d'une plage, mais on peut délimiter la plage à importer comme ceci :
DoCmd. TransferSpreadsheet acImport, 8 , " Employés " ," C:\Fichier.xls " , True , " A1:G12 "
|
Par contre, l'import d'un fichier texte permet de spécifier de nombreux attributs pour chaque colonne à importer (nom, type, sauter ou pas, ...). Il est même possible d'enregistrer les spécifications d'import en suivant la technique suivante : exécuter l'importation à l'aide de l'assistant et avant de cliquer sur "TERMINER", cliquer sur le petit bouton en bas à gauche "AVANCE ..." afin de définir et sauvegarder les spécifications d'import...
Pour importer des colonnes non contiguës d'une plage d'un fichier Excel, vous pouvez donc passer par l'enregistrement du fichier Excel dans un des formats texte (csv, txt, ...)
|
| auteur : Maxence HUBICHE | Dans Excel, préfixez les valeurs numériques d'un '
Cela convertira les données numériques en données texte.
|
| auteur : Gaël Donat | On passe ici par une requête temporaire, mais on peut également exporter une requête existante bien évidemment.
Dim qd As QueryDef
Set qd = CurrentDb. CreateQueryDef (" Requete_Temporaire " , " Select * From MATABLE " )
DoCmd. TransferSpreadsheet acExport, acSpreadsheetTypeExcel97," Requete_Temporaire " , " c:\fichier.xls "
DoCmd. DeleteObject acQuery," Requete_Temporaire "
|
Il faut que la librairie Microsoft DAO soit cochée (dans un module faites Outils / Références).
|
lien : Définition et manipulation de données avec DAO par Tofalu
lien : Comment déclarer une référence dans MS-Access ?
|
| auteur : Coin | Déclaration:
Dim appexcel as Excel. Application
Dim wbexcel as Excel. Workbook
|
Ne pas oublier de cocher dans le menu Outil/Références, la bibliothèque Microsoft Excel X Object Library (avec x = 8 pour Excel 97, x = 9 pour
Excel 2000, x = 10 pour Excel XP, x = 11 pour excès 2003).
Appel du fichier Excel :
Set appexcel = CreateObject (" Excel.Application " )
appexcel. Visible = True
Set wbexcel = appexcel. Workbooks . Open (" Chemin du fichier Excel " )
|
Appel de la feuille correspondante :
appexcel. Sheets (" Feuil1 " ). Select
|
Remplissage dans Excel (Exemple à partir d'une requête), sur des cellules bien précises.
appexcel. cells (5 , 2 ) = rst![Nomduchamps]
appexcel. cells (5 , 4 ) = rst![Nomduchamps]
appexcel. cells (5 , 7 ) = rst![Nomduchamps]
|
Attention la cellule (5,2) correspond à la cellule B5 d'excès.
la fonction rst correspond à un enregistrement RecordSet.
|
lien : Créer un jeu de données (recordset)
|
| auteur : Frank | Dim XLApp As Object
Set XLApp = GetObject (," Excel.Application " )
MsgBox " " & XLApp. ActiveWorkbook . Name & " "
|
|
| auteur : GAGNON | On Error Resume Next
Set xlApp = GetObject (, " Excel.application " )
If Err = ERR_NOT_RUNNING Then
Err . Clear
Set xlApp = CreateObject (" Excel.application " )
End If
Set xlWkb = xlApp. Workbooks . Add (" \\monDossier\MonFichier.xlt " )
xlWkb. RunAutoMacros xlAutoOpen
xlApp. Visible = True
Set xlWkb = Nothing
Set xlApp = Nothing
|
|
lien : Erreur 429 : Un composant Activex ne peut créer d'objet
|
| auteur : Tofalu |
Voici deux fonctions permettant d'arriver à vos fins :
En utilisant un appel automation :
Public Function TestExcel () as boolean
On error goto err
Dim oTmp as Object
Set oTmp= CreateObject (" Excel.Application " )
Set oTmp= Nothing
TestExcel= True
err :
End Function
|
En vérifiant le registre :
Public Function TestExcel2 () As Boolean
Dim lngR As Long
TestExcel2 = RegOpenKey (HKEY_LOCAL_MACHINE, " Software\Microsoft\Office\Excel " , lngR) = 0
End Function
|
Ces deux fonctions renverront bien sûr True si MS Excel est installé sur le poste.
|
| auteur : Celia1303 |
Soit xlBook un classeur :
xlBook. Close (True )
xlBook. Close (False )
|
|
| auteur : Cafeine |
Ce code permet de lister les onglets d'un fichier Excel sans l'ouvrir.
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Sub GetDAOExcelTabs (ByVal strPath As String )
Dim db As DAO. Database
Dim td As DAO. TableDef
Set db = DAO. OpenDatabase (strPath, False , True , " Excel 8.0; " )
DoEvents
For Each td In db. TableDefs
Debug. Print " onglet : " & td. Name
Next td
db. Close
Set td = Nothing
Set db = Nothing
End Sub
|
|
lien : Comment modifier la valeur d'une cellule d'un classeur excel fermé en DAO ?
|
| auteur : Cafeine |
Il faut ajouter la référence : Microsoft DAO 3.x Object Library
Sub DAOUpdateExcelFile (ByVal strFullPath As String , _
ByVal strTab As String , _
ByVal RowIndex As Long, _
ByVal ColumnIndex As Long, _
ByVal setValue As Variant)
Dim db As DAO. Database
Dim rec As DAO. Recordset
Set db = OpenDatabase (strFullPath, False , False , " Excel 8.0; " )
DoEvents
Set rec = db. OpenRecordset (strTab & " $ " , DAO. dbOpenDynaset )
rec. Move RowIndex - 1
rec. Edit
rec. Fields (ColumnIndex - 1 ). Value = setValue
rec. Update
rec. Close
db. Close
Set db = Nothing
Set rec = Nothing
End Sub
|
Un exemple qui permet de passer la valeur de la cellule E12 de l'onglet "Feuil1" à 999 :
DAOUpdateExcelFile " c:\temp\db.xls " ," Feuil1 " ,12 ,5 ,999
|
|
lien : Comment lister les onglets d'un fichier excel sans l'ouvrir
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2004
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|