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

VB.NET Discussion :

Problème de la requete UPDATE dans un tableau excel via une application vb.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut Problème de la requete UPDATE dans un tableau excel via une application vb.net
    Salut tout le monde,

    Pour lire et éditer mon fichier Excel j'ai utilisé oledbconnection

    je rencontre un problème au niveau de la modification du fichier excel via une application en vb.net,
    Quand je travaille directement sur le tableau Excel j'entre une valeur V dans une colonne A et j'obtiens le resultat en fonction de V dans une autre colonne B

    pour établir la modification j'ai utilisé cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                cmd.CommandText = "UPDATE [Feuil$] SET F29 = 70"     ' F29: c'est la colonne où je dois mettre ma valeur V cad la colonne A
                cmd.ExecuteNonQuery()
    j'arrive à modifier la colonne A mais les résultats de la colonne B ne se calculent pas , elle garde tjrs la dernière modification que j'ai faite manuellement dans le fichier excel ,

    Par contre j'ai essayé avec ce morceau de code et c marche super bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
           'Créer une instance de Excel
            Dim ApExcel As New Excel.Application
            Dim wbExcel As New Excel.Worksheet
            'Créer un nouveau classeur
            ApExcel.Workbooks.Add() '
            'Ouvrir un  classeur
            ApExcel.Workbooks.Open("c:\Copie de Tableau .xlsx")
            'rendre le classeur visible
            ApExcel.Visible = True '
            ApExcel.Range("AC4").Formula = 23 'Ajouter du texte à une cellule
            ApExcel.Workbooks.Close() 'on ferme le classeur
            ApExcel.Visible = True
            ApExcel.Quit() 'on ferme Excel
    Mais je dois utiliser la technologie oledbconnection pour pouvoir manipuler mon fichier sans l'ouvrir et plus que ça tout mon projet et basé sur cette connexion(oledbconnection)


    auriez vous une idée pour résoudre ce problème svp??

    Merci d'avance

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    il n'y a pas de miracle

    passer par oledb permet de lire et écrire rapidement les données, mais c'est fait pour des fichiers simples de stockage de données
    pour tout ce qui est mise en forme (calculs par cellule aussi surement) oledb ne convient pas

    après il y a l'interop qui permet tout simplement (type vba) mais qui nécessite office d'installé

    et la 3ème solution c'est d'utiliser une dll tierce qui sait manipuler les fichiers excel comme il faut et ne nécessite pas office
    parmi ces dll il y a celle de microsoft (open xml sdk) qui fonctionne avec les fichiers .xlsx et qui est très compliquée à utiliser
    il y en a d'autres, mais je ne les connais pas ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par Pol63 Voir le message
    il n'y a pas de miracle

    et la 3ème solution c'est d'utiliser une dll tierce qui sait manipuler les fichiers excel comme il faut et ne nécessite pas office
    parmi ces dll il y a celle de microsoft (open xml sdk) qui fonctionne avec les fichiers .xlsx et qui est très compliquée à utiliser
    il y en a d'autres, mais je ne les connais pas ...
    Il y a bien (non essayées)

    ClosedXML

    EPPlus

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    et la 3ème solution c'est d'utiliser une dll tierce qui sait manipuler les fichiers excel comme il faut et ne nécessite pas office
    parmi ces dll il y a celle de microsoft (open xml sdk) qui fonctionne avec les fichiers .xlsx et qui est très compliquée à utiliser
    il y en a d'autres, mais je ne les connais pas ...
    dll tierce

    c'est juste pour pouvoir faire le update en gardant tjrs la connexion oledb ou c'est pour établir une nouvelle connexion avec mon tableau excel ??!!!

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par progami Voir le message
    Mais je dois utiliser la technologie oledbconnection pour pouvoir manipuler mon fichier sans l'ouvrir
    C'est pas étonnant que les champs calculés ne se mettent pas à jours... Faire un check des champs calculés ne serait pas possible?

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut
    Citation Envoyé par ZenZiTone Voir le message
    C'est pas étonnant que les champs calculés ne se mettent pas à jours... Faire un check des champs calculés ne serait pas possible?
    désolé, mais je n'ai pas compris ce que tu veux dire par un check !!!!

  7. #7
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut,
    Je ne crois pas me tromper en disant que dans ce post : http://www.developpez.net/forums/d15...t/#post8400720

    Le conseil était d'importer les données d'excel vers une BDD, pas de se servir d'excel comme une BDD. Non ?

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 78
    Par défaut
    Citation Envoyé par r.morel Voir le message
    Le conseil était d'importer les données d'excel vers une BDD, pas de se servir d'excel comme une BDD. Non ?
    Pour le moment je n'est trop le choix , ils m'ont imposé de travailler avec ce tableau excel
    Par contre, je conserve tjrs cette idée (bdd) pour convaincre mon chef ...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu dis j'arrive à modifier la colonne A, tu fais comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.CommandText = "UPDATE [Feuil$] SET F1 = 70"
    quel est la physionomie générale de la colonne F29 Texte?; numérique???

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par progami Voir le message
    désolé, mais je n'ai pas compris ce que tu veux dire par un check !!!!
    Parcourir les cellules de ton Excel et apporter les modifications aux champs calculés

  11. #11
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le problème à mon avis, c'est qu'il y a des constantes et des formules. Les formules utilisent des fonctions qui sont l'équivalent d'un langage informatique, c'est le langage d'Excel en quelque sorte.
    Puisque tu peux aussi utiliser des fonctions UDF (VBA), mais aussi XLL (C) qui sont des fonctions personnalisées en plus des fonctions d'Excel qui d'ailleurs dépendent de la versions d'Excel installé.

    Si dans une Cellule, c'est écrit SOMMEPROD(SOMME(INDEX(ADRESSE(INDIRECT(Tableau1[@[......))))) , je ne te raconte pas la galère si tu veux calculer ça en Visual Basic. En clair, les formules sont un langage spécifique à Excel et c'est l'instance Excel.exe qui exécute les formules.
    Il faut démarrer Excel pour que la mise à jour se fasse automatiquement (comme l'a dit sinople).

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Nouveau2 Voir le message
    Salut,

    Le problème à mon avis, c'est qu'il y a des constantes et des formules.
    Disons que le vrai problème, c'est qu'elle travaille pour des nouilles pourries qui veulent qu'Excel fasse des calculs. Mais, il ne faut surtout pas ouvrir le classeur qui est supposé faire les calculs.

    http://www.developpez.net/forums/d15...-excel-vb-net/

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

Discussions similaires

  1. [AC-2003] Problème d'importation d'un fichier Excel dans une application ACCES
    Par zahira87 dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/03/2013, 14h08
  2. Réponses: 0
    Dernier message: 30/05/2011, 10h42
  3. Création d'un XMl via une application Vb.net
    Par machin1234 dans le forum Windows
    Réponses: 1
    Dernier message: 01/12/2010, 09h27
  4. gerer un tableau excel via une userform
    Par aminiou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/11/2010, 20h51
  5. Réponses: 8
    Dernier message: 20/07/2010, 12h25

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