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 :

Comment utiliser dans une fonction un tableau situé sur la feuille Excel


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Comment utiliser dans une fonction un tableau situé sur la feuille Excel
    Bonjour,
    Je voudrais utiliser dans une fonction les valeurs situées par exemple dans la colonne BE de la ligne 9 à la ligne 20.
    J’ai déclaré dans la fonction « Dim BE (9,20) as Single » Est-ce cela qu’il faut faire ? Est-ce suffisant ?

    Comment se réfère-t-on à ces valeurs ?

    Dans le cours le premier terme du tableau doit avoir l’indice zéro dans VB. Les exemples de tableaux donnés commencent toujours à la ligne 1 ce qui n'est pas mon cas.
    Est-ce que la valeur de BE9 doit être indiquée dans la fonction par BE(0)?

    Est-ce que les modifications de ces valeurs dans la fonction sont répercutées sur la feuille Excel ?


    Même question pour un tableau de 3 colonnes, par exemple : D9 à F20. Comment déclare-t-on ce tableau dans la fonction ? Comment se réfère-t-on à la valeur de D10 par exemple ?

    Merci pour votre aide

  2. #2
    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,

    Sans voir ton code, c'est pratiquement impossible de répondre. Avant d'utiliser ton tableau, il faut que tu nous dises (incluant que tu décides) de quelle façon tu veux utiliser Excel. Également, ce qui ne ferait pas de mal, ce serait de connaître le but final de ton projet

    Si tu es familier avec VBA, tu peux piloter Excel par automation, sensiblement de la même façon que tu piloterais Excel à partir de Word. Cela demande certains ajustements au niveau de la façon de désigner et d'utiliser les objets, mais c'est essentiellement utiliser VB.net pour faire du VBA dans Excel.

    Si, tu n'as pas, Excel, mais juste un fichier Excel, tu peux utiliser ton fichier Excel comme source de données, sur le même principe que tu le ferais avec Access ou SQL Server.

    Il y a aussi moyen de le faire avec Open XML, ou avec EPPlus ou ClosedXML.
    À 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.

  3. #3
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Quelques compléments
    Bonjour,
    Je travaille avec Mac Yosemite 10.10.5
    Aussi bizarre que ça puisse paraître j'essaye de calculer la température du sol à plusieurs profondeurs connaissant la puissance reçue du soleil.
    J'ai donc calculé cette puissance avec Excel et les résultats en fonction du temps se trouvent dans une colonne de la feuille Excel par exemple pour 10 valeurs..
    La fonction calcule l'évolution de cette température pour une profondeur donnée en fonction des puissances. La fonction retourne la température
    et fait intervenir la puissance à T et T-1 comme dans le bout de code ci dessous dans lequel PH sont les puissances situées dans la colonne BE et GGG un paramètre correspondant à une profondeur donnée. Comme il y a 3 profondeurs le tableau GGG est sur 3 colonnes de hauteur K (par exemple de D9 à F20)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function TS(différents paramètres....)
    BB(1) = PH1 * GGG(LM1, K) + CDIK
    For I = 2 To K
    IM1 = I - 1
    NA = K1 - I
    BB(I) = BB(I - 1) + (PH(I) - PH(IM1)) * GGG(L - 1, NA)
    TS(L - 1, K) = BB(K)
    Next I
    Je cherche à remplacer les PH par des BE(?) et les GGG par des D(?,?) préalablement calculés dans ma feuille Excel.

    J'espère que c'est plus clair.
    Merci

  4. #4
    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,

    Justement, VB.net ne peut pas utiliser directement une feuille Excel, comme tu le ferais par exemple avec un TextBox ou un ListView; parce que Excel n'est pas un objet .net Cela doit être fait d'une manière, disons, un peu détournée, comme je mentionne plus haut.

    Avant d'utiliser ta fonction, tu dois utiliser des "objets intermédiaires". Ces "objets intermédiaires" vont dépendre de tes besoins et des résultats attendus

    Si tu veux que ton programme soit disponible pour des gens qui n'ont pas Excel sur leur machine, tu dois oublier le pilotage par Automation et te rabattre sur Open XML (avec ou sans ClosedXML ou EPPlus) ou utiliser les objets d'accès aux données.

    Si tu es familier avec VBA, ce sera probablement plus simple avec Automation.

    Si tu veux une petite idée des voies possibles, tu peux regarder ces exemples :

    OLEDB et Automation

    Si tu veux juste faire un "add-in" compilé pour Excel et lancer ton application uniquement d'Excel.


    Si tu veux utiliser Open XML, tu peux regarder cet exemple.

    Pour utiliser ClosedXML, tu peux regarder cet exemple-là.



    Pour les faire fonctionner, tu as besoin de télécharger le SDK Open XML
    À 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.

  5. #5
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Débutant
    Bonjour,
    Merci pour cette réponse.
    Je suis un débutant en tout.
    Je vais réfléchir à ce que vous m'indiquez. Cela va prendre du temps.
    Cordialement

  6. #6
    Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Solution provisoire
    Bonjour,
    Commme je l'ai indiqué je ne suis pas assez compétent pour utiliser ces solutions.

    J'ai abandonné l'utilisation d'une fonction au profit d'une procédure sub qui me satisfait.
    Je ne sais pas et n'ai pas essayé si une fonction avec un paramètre bidon permet d'obtenir le même résultat.

    Ci dessous l'exemple de la procédure :

    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
    Sub TRANS()
    Dim i As Integer, mnb As Integer, RT As Integer, som As Integer
    Dim Y(100) As Integer
    Dim FeuilDonnees As Worksheet
    Set FeuilDonnees = Sheets("Feuil1")
    'mnb est le nombre de données dans Excel que l’on souhaite traiter
    mnb = 14
    ' transfert des données Excel vers la variable Y(i) de la procédure
    For i = 1 To mnb
    num = i + 6
    Y(i) = FeuilDonnees.Cells(i, 1)
    Next i
    'calcul des Res(i) à partir des Y(i) par exemple
    'ici Res(i)=Y(i)
    'on ecrit le résultat dans les cellules D de la feuille Excel
    For i = 1 To mnb
    FeuilDonnees.Cells(i, 4) = Y(i)
    Next i
    End Sub
    Merci pour l'attention portée à mon problème.
    Cordialement

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/06/2009, 16h08
  2. Réponses: 3
    Dernier message: 01/06/2009, 16h57
  3. Réponses: 2
    Dernier message: 01/08/2008, 16h57
  4. [SQL] Comment utiliser dans une requête une variable passée par URL
    Par foffa dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/08/2006, 12h27
  5. Réponses: 3
    Dernier message: 14/04/2006, 19h36

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