1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| REM ***** BASIC *****
Option Explicit
Sub Main
Dim vChemin as String
Dim vTableau as Object
Dim Dummy()
Dim vFeuille As Object
Dim vCol as Integer
Dim vNbrCol as Integer
Dim vLig as Integer
Dim vBaseContext As Object
Dim vBase As Object
Dim vConnexion As Object
Dim vTable As Object
Dim vResultat as Object
Dim vRequete as String
Dim vRequeteD as String
'Définit un service pour pouvoir ouvrir la base
vBaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
'Détermine la base à ouvrir
vBase = vBaseContext.getByName("nom de la base")
'Définit la connexion
vConnexion = vBase.GetConnection("","")
'Définit le recordset
vTable = vConnexion.createStatement()
'Définition du chemin du fichier excel à ouvrir
vChemin = ConvertToUrl("chemin de ma feuille Excel")
'Ouverture du fichier dans calc
vTableau = StarDesktop.loadComponentFromURL(vChemin, "_blank", 0, Dummy())
'Récupération de la feuille n°0 (la première) dans la variable
vFeuille = vTableau.Sheets(0)
'Initialisation des variables
vNbrCol = 0
vRequeteD = ""
'Tant que la première ligne contient des valeurs
While vfeuille.getCellByPosition(vNbrCol, 0).String <> ""
'Construit le début de la requête (avec le nom des colonnes
vRequeteD = vRequeteD & """" & vfeuille.getCellByPosition(vNbrCol, 0).String & """, "
'Incrémentation de la variable pour obtenir le nombre de colonnes utilisées dans le tableau
vNbrCol = vNbrCol + 1
wend
vRequeteD = left(vRequeteD, len(vRequeteD) - 2) & ") VALUES ("
vLig = 1
'Tant que la ligne n'est pas vide
While vfeuille.getCellByPosition(0, vLig).String <> ""
'Récupére le début de la requête
vRequete = vRequeteD
'Pour chaque colonne utilisée dans le tableau
For vCol = 0 To vNbrCol - 1
'Si la valeur de la cellule est numérique
if isNumeric(vfeuille.getCellByPosition(vCol, vLig).String) then
vRequete = vRequete & vfeuille.getCellByPosition(vCol, vLig).String & ", "
else
vRequete = vRequete & "'" & vfeuille.getCellByPosition(vCol, vLig).String & "', "
end if
Next vCol
vRequete = left(vRequete, len(vRequete) - 2)
'Exécution de la requête d'ajout
vResultat = vTable.executeQuery("INSERT INTO ""jeune"" (" & vRequete & ")")
vLig = vLig + 1
wend
vConnexion.close
vConnexion.dispose
'Fermeture de calc
vTableau.Close(True)
MsgBox "Fini"
End Sub |
Partager