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

  1. #1
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    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 sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    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 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    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
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    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
    Points : 3 404
    Points
    3 404
    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
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    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 éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    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 ?
    Merci de ainsi que d'utiliser les boutons et

  8. #8
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    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
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    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???
    F29 c'est numerique ,
    et quand je modifier cette colonne , une autre colonne doit se modifier en fonction de la valeur que j'ai mais dans F29

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par progami Voir le message
    F29 c'est numerique ,
    et quand je modifier cette colonne , une autre colonne doit se modifier en fonction de la valeur que j'ai mais dans F29
    la c'est un autre problème, sql ne peut pas affecter les formule qui sont vue un peut comme des procédure stockées!

    tu peut updater des cellules pas des formule ou des fonctions avec sql!
    et vue que tue est connecté à ton fichier XLS pas de mise à jour des formules!

  12. #12
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    la c'est un autre problème, sql ne peut pas affecter les formule qui sont vue un peut comme des procédure stockées!

    tu peut updater des cellules pas des formule ou des fonctions avec sql!
    et vue que tue est connecté à ton fichier XLS pas de mise à jour des formules!
    ouiiii c'est exactement ça le problème que je viens de découvrir

    je peux pas update et refrech le tableau ???

  13. #13
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ouiiii c'est exactement ça le problème que je viens de découvrir 
     
     je peux pas update et refrech le tableau ???
    La modification d'un fichier OleDB permet de changer les valeurs de cellules, mais pas d'effectuer des calculs de cellules. A priori les cellules avec les calculs devraient être mise à jour lors de l'ouverture du fichier.

    Tu as donc deux solutions à ma connaissance:
    - Manipuler le fichier Excel à l'aide de l'automation au lieu de OleDB.
    - Effectuer ces calculs en dehors d'Excel.

  14. #14
    Nouveau membre du Club
    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
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par sinople Voir le message
    [CODE]


    Tu as donc deux solutions à ma connaissance:
    - Manipuler le fichier Excel à l'aide de l'automation au lieu de OleDB.
    - Effectuer ces calculs en dehors d'Excel.
    mon code est devenu une usine à gaz , j'ai mélangé les deux oledb et interop
    tu peux pas imaginer la complexité de mon code

    franchement je suis pas contente

  15. #15
    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
    Points : 3 404
    Points
    3 404
    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

  16. #16
    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).

  17. #17
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    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/
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  18. #18
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Après fondamentalement, c'est possible de mettre à jour les cellules contenant des formules Excel sans ouvrir Excel à l'aide de SharePoint et plus précisément Excel Services.

    https://support.office.com/fr-ch/art...rs=fr-CH&ad=CH

    C'est la meilleur solution lorsqu'on doit effectuer de l'automation Excel mais dans une application serveur.

    Mais bon ce genre de truc dépasse mes compétences et connaissance actuelles.

+ 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