IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Compatibilité Excel 2003 et openOffice 3.0 [OpenOffice][Base de données]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut Compatibilité Excel 2003 et openOffice 3.0
    Bonjour à tous et meilleurs voeux pour 2009.

    Tout d'abord je vais vous préciser que c'est la premiére fois que j'utilise OpenOffice.org. Donc je suis totalement novice. En effet en cours les profs ne jurent que par son célébre concurrent !!!

    Donc je vais vous exposer un peu mon probléme :
    j'ai d'un coté une base de données openOffice 3.0 et de l'autre un fichier Excel 2003

    dans ma base de données j'ai une table (actuellement vide) et j'ai fai un formulaire avec un bouton. En cliquant sur le bouton je voudrais que les données du fichier Excel aillent remplir ma table.

    Donc deja est-ce possible ???
    Si oui, donnez-moi un coup de pouce pour le code car je ne sais pas du tout comment coder sous openOffice. J'ai beau chercher des tuto (ca fait 3 jours que je cherche) je ne trouve rien pouvant m'aider sur les bases de données. J'ai surtout trouvé par rapport au tableur !!

    aidez moi s'il vous plait
    merci et bonne journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un début de piste dans la FAQ OpenOffice :
    Comment ajouter un enregistrement dans une table ?

    Et un peu de lecture : Piloter Open Office depuis Excel tout cela devrait te donner des informations

    Philippe

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    je vais regarder à ca en espérant que ca m'avance car la je bloque depuis lundi.
    Mais je me demandais aussi, est ce que le codage ressemble à celui de VBA access ??
    merci de votre aide

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Mon probléme c'est que la liste des personnes se trouvant dans ma feuille Excel change tout les jours, donc par requête ca ne me parait pas possible (à moins que je me trompe).
    mon stage s'annonce difficile

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Le codage sous OOo est différent, les instructions VB classiques (déclaration, boucles, etc...) sont quasiment identiques, le modèle objet par contre est différent.

    Je ne me suis pas encore penché à fond dans base, donc c'est tout ce que je peux te dire sur ce sujet.

    Si tes données changent tu as différentes manières selon les cas :

    • Les données de ton fichier Excel d'un jour à l'autre sont les mêmes avec des ajouts de nouvelles personnes, alors tu peux indexer les champs de ta table pour ne pas avoir de doublons (le système est quasiment similaire à Access).
    • Ce sont de nouvelles données à chaque fois, alors une requête d'ajout.


    Philippe

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Ce sont tous les jours des nouvelles données
    Je vais deja essayer avec tout ca
    Merci de votre aide

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par frack Voir le message
    Ce sont tous les jours des nouvelles données
    Alors le premier lien que je t'ai donné devrait t'aider.

    Philippe

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Voila le code que j'ai mis pour ajouter mes enregistrements dans ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Do
                       rSQL = "INSERT  INTO "jeune"("idJeune", "nomJeune", "prenomJeune", "ddnJeune", "sexeJeune", "btrJeune", "idTable") Values(???)"
        	Set oRequete = oStatement.ExecuteQuery(rSQL)
    	Loop Until ???
    mais dans VALUES je ne sais pas quoi mettre, vu que j'ai environ 50 lignes dans ma feuille Excel
    et puis pour ma boucle, dans le Loop Until ma condition c'est jusqu'a ce que je n'ai plus d'enregistrement mais je ne sais pas non plus comment le dire
    si quelqu'un peut m'aider
    merci d'avance

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    Là ce n'est plus un problème OpenOffice, mais Excel.

    Sur le forum, la FAQ Excel, etc ...tu trouveras de nombreux bout de code pour déterminer le dernier enregistrement et lire les informations lignes et par cellules pour ensuite les intégrer dans ta requête.

    Je t'invite à faire des recherches de ce coté.

    Par contre une question, là tu veux bien faire cela d'Excel ? Ou à partir de Base ? car je te parle d'une fonctionnement à partir d'Excel.

    Philippe

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Je dois faire cela à partir de Base
    Quand je clique sur le bouton dans le formulaire que j'ai créé avec Base, la liste des personnes se trouvant dans ma feuille Excel doit remplir ma table dans Base

    Je sais c'est tordu mais bon !! C'est mon tuteur de stage qui veut ca !! Enfin moi ca me parait tordu

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un petit complément d'information (toujours dans la FAQ OpenOffice), c'est exemple permet de piloter OutLook à partir d'OpenOffice : Comment envoyer un mail en pilotant Outlook ?

    Tu peux faire la même chose en utilisant : Excel.Application et les éléments Excel que tu trouveras dans le forum du même nom et la FAQ Excel.

    A partir de là, tu pourras récupérer les informations de la feuille pour les injecter dans ta base.

    Philippe

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Bonjour à tous
    voila j'ai fait un code que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Mais lorsque j'exécute ma macro il me met une erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vResultat = vTable.executeQuery("INSERT INTO ""jeune"" (" & vRequete & ")")
    voici le message d'erreur (que je ne comprend pas) :
    "Erreur d'exécution Basic
    Une exception s'est produite :
    type : com.sun.star.sdbc.SQLException
    message : column not found : Identifiant in statment ["INSERT INTO "jeune" ("Identifiant", "Nom", "Prénom", 'Date Naissance", "Sexe", "Présence", "Table")]."

    Donc si quelqu'un pouvait m'expliquer ce message et m'aider à trouver une solution.
    Je me demande si ce n'est pas à cause de la différence de noms entre les champs de ma table et le nom des colonnes dans Excel ??

    Merci d'avance
    bonne journée à tous.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Re

    Je n'ai pas le temps de tout regarder (je travaille), mais dans date de naissance tu ouvres par une simple et quote et tu fermes par une double.

    Je croyais que tu devais lancer cela de Base, mais à priori (je me trompe peut-être) tu lances cela d'Excel

    Philippe

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    Oups j'ai fait une faute de frappe
    dans le message d'erreur il me met une double quote
    (c'est moi en retapant qui ai mis une simple quote)

    Quand le clique sur le bouton de mon formulaire dans base, il va chercher mes données dans Excel, il me les mets dans Calc et doit remplir ma table dans Base

    c'est un peu tordu je sais

    donc si vous pouviez m'aider ... la je bloque

    merci

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 81
    Points : 49
    Points
    49
    Par défaut
    reBonjour
    donc j'ai trouvé la solution à mon probléme
    le code que j'ai mis fonctionne parfaitement bien
    il fallait juste que dans ma table je mette les meme noms de champs que les entétes de colonne dans Excel.

    vraiment bizard de coder sous Open Office
    ca change vraiment de VBA access !! mon stage s'annonce difficile !!

    merci d'avoir tenter de m'aider !!
    sans doute à bientot pour de nouveaux problémes

    bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème compatibilité excel 2003-2010
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2012, 17h32
  2. Compatibilité Excel 2003 - outlook 2010
    Par fleur57 dans le forum Outlook
    Réponses: 1
    Dernier message: 30/08/2012, 00h05
  3. [XL-2007] Pb compatibilité excel 2003 et 2007 avec la fonction Vlookup
    Par Heflav dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/05/2011, 18h08
  4. probleme compatibilité excel 2003/2007
    Par huître dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2011, 21h15
  5. Compatibilité excel 2003 / 2007
    Par pasdomidf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/07/2009, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo