Récupération de données excel depuis VB.NET

Résolu
Bonjour,

Voila je cherche une solution pour concevoir un petit "panneau" en VB.Net qui récupérerait des informations présent sur une ligne d'un classeur excel. A chaque fois que l'utilisateur clique sur une nouvelle ligne les infos sur le panneau se mettent à jour.

La fenêtre du panneau aurait la propriété "Top Most" = True

(le fichier excel à beaucoup de colonnes, le but étant de condenser les infos sur ce panneau sans toucher à l'architecture du fichier excel.)

Avez-vous des pistes ?

Cordialement.

3 réponses

  1. Bonjour

    https://codes-sources.commentcamarche.net/source/101574-import-excel-dans-datagridview-en-vb-net

    Ou encore
    https://codes-sources.commentcamarche.net/source/50624-piloter-excel-via-microsoft-office-interop-excel (En c# mais il suffit de passer le code dans un traducteur ligne)

    Sinon il existe des solutions avec Linq qui fonctionnent sur les xlxs
    1
    1. Bonjour Whismeril,

      Tout d'abord, mes excuses pour le retard de ma réponse. J'ai déjà quelques notions de communications entre VB.net et Excel, mais je voudrais que mon "panneau" soit en support du fichier excel, que l'utilisateur garde la main sur le fichier ouvert dans excel. le but étant reporter des infos uniquement.

      je vais faire des tests mais cela va prendre du temps ... (vie perso oblige.)
      en tout cas merci de ton assistance.

      Cdt.
      0
  2. Les deux codes que je t'ai proposé utilisent l'automantion, donc ça ouvre le fichier.
    Du coup, l'utilisateur peut agir dans le fichier.

    Par contre, il faut faire en sorte que ton appli vb.net vérifie régulièrement si les données ont changées.
    1
    1. Bonsoir Whismeril,

      J'ai pu aboutir mon petit programme, il m'a été un peu compliqué de comprendre comment récupérer l'adresse de la cellule active dans excel (petite subtilité ce n'est pas le worksheet mais l'app qui détient cette "fonction") :

      Dim appExcel As Excel.Application
      Dim wbExcel As Excel.Workbook
      Dim wsExcel As Excel.Worksheet

      AdresseActiveCell = appExcel.ActiveCell.Row

      en tout cas impeccable.

      Merci encore.

      EDIT : pour le contrôle régulier si l'utilisateur change de cellule active j'ai utilisé un timer avec intervalle à 2000
      0
  3. Pour savoir si la cellule sélectionnée change il y a
    https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.tools.excel.namedrange.selectionchange?redirectedfrom=MSDN&view=vsto-2017

    Et si le contenu d'une cellule change
    https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.tools.excel.namedrange.change?redirectedfrom=MSDN&view=vsto-2017

    Ça me parait plus judicieux que le timer.

    Je n'ai pas eu l'occasion de tester ces fonctionnalités, car je ne fais qu'exporter des données.

    0
    1. je te remercie pour ce complément et m'excuse pour le retard. Je vais me pencher dessus rapidement.

      Cdt.
      0