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 6 et antérieur Discussion :

Lire des données excel après modification de celles-ci


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut Lire des données excel après modification de celles-ci
    Bonjour,

    Je vais solliciter votre aide car j'ai un souci avec les objets ole sous vb.

    J'ai besoin de manipuler une feuille excel puis d'importer ensuite ses données dans mon programme vb.

    J'ai trouvé pour cela plusieurs solutions :
    - soit créer un tableau excel comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set appExcel = CreateObject("Excel.Application")
    J'ai ensuite accès à ma fenêtre, je peux faire des saisies, des calculs, mais lorsque ces calculs sont terminés je ne sais pas comment faire pour dire à mon programme vb de reprendre la main pour effectuer à son tour ses traitements sur mes données excel.

    - soit utiliser un objet ole de type excel. Comme ça j'ai une fenêtre excel au milieu de mon interface graphique vb dans laquelle je peux faire mes saisies. Mais là encore comment je fais ensuite pour récupérer les valeurs de ma feuille ? Je n'ai pas trouvé de méthode sur l'objet ole qui aille dans ce sens.

    Si vous aviez une idée ou une autre solution car là je vous avoue que je bloque un peu.

    Merci par avance.

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Le sujet est un peu vaste pour répondre ici. Je te conseille de lire cette FAQ.

    Tu y trouveras toutes les infos dont tu as besoin.

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut
    Merci de ton retour.

    Justement j'ai déjà fouiné sur plusieurs forums avant de venir sur ce forum et j'étais tombé sur ta FAQ mais celle-ci ne répond pas tout à fait à ma question.

    Ce que je veux juste savoir c'est s'il est possible de récupérer des données d'une feuille excel qui se trouve dans un objet OLE directement via mon programme VB ? En gros est ce que je peux faire
    OLE1.FeuilleExcel.Cells... pour récupérer ses données.

    A moins que ce soit impossible ?

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Voici ce que j'avais ecrit dans un ancien post
    Citation Envoyé par Delbeke Voir le message
    Encore merci a tous ceux qui m'ont aidé a trouver une solution honorable

    Et aux autres aussi

    voila le code qui semble fonctionner dans tous les cas

    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
    78
    79
    80
    Option Explicit
     
    Dim WithEvents AppExcel As Excel.Application  'atention, déclaré avec withevent
    Dim WbExcel As Excel.Workbook
    Dim WsExcel As Excel.Worksheet
    Dim ExcelOnLine As Boolean        'flag à true si excel etait déjà ouvert
                                      'quand on a ouvert le fichier
    Dim ExcelClosable As Boolean      'flag mis à false tant que l'on a pas décidé
                                      'qu'excel pouvait être fermé
     
    Private Sub AppExcel_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)
      'evenement declenché par l'objet Excel.Application
      'à chaque fermeture de workbook
      'note : si plusieurs feuilles sont fermées par la fermeture d'excel
      '       un seul refus empeche sa fermeture
      If Wb Is WbExcel Then
        'il s'agit de la fermeture de notre feuille
        If ExcelClosable Then
          'on a autorisé la fermeture d'excel, donc on ne fait rien
        Else
          'on refuse la fermeture du workbook
          Cancel = True
        End If
      End If
    End Sub
     
     
    Private Sub cmdOpenFile_Click()
      On Error Resume Next
      'on va essayer de retrouver une occurence de appExcel
      'si excell n'est pas lancé, on aura une erreur que
      'l'on va trapper
      Set AppExcel = GetObject(, "Excel.Application")
      If Err Then
        'excel n'est pas démarrer
        'on le démarre
        Set AppExcel = CreateObject("Excel.Application")
        ExcelOnLine = False
      Else
        'excel est démarré
        ExcelOnLine = True
      End If
     
      AppExcel.Application.Visible = True
      AppExcel.Application.Interactive = True
      'ouverture du workbook
      Set WbExcel = AppExcel.Workbooks.Open(txtFileName.Text)
      'et on refuse la fermeture d'excel
      ExcelClosable = False
      Set WsExcel = WbExcel.Worksheets(1)
      WsExcel.Unprotect
    End Sub
     
    Private Sub cmdWriteCell_Click()
      'un exemple d'ecriture dans la feuille
      WsExcel.Cells(1, 1) = "AAA"
     
    End Sub
     
    Private Sub cmdCloseFile_Click()
      'on  ferme notre fichier
      'donc excel doit pouvoir être fermé
      ExcelClosable = True
      WbExcel.Close False 'sans enreister pour ce simple test
      If ExcelOnLine Then
        'si excell etait lancé au démarrage
        'on n'a rien à faire
      Else
        'si on a lancé excel
        'on vérifie s'il reste de workbooks ouverte
        If AppExcel.Workbooks.Count = 0 Then
          'plus de workbooks, on ferme excel
          AppExcel.Quit
        End If
      End If
      'un peu de ménage
      Set WsExcel = Nothing
      Set WbExcel = Nothing
      Set AppExcel = Nothing
    End Sub

    Ajouter sur une feuille,
    un textbox : txtFileName
    trois boutons de commandes : cmdOpenFile,cmdWriteCell,cmdCloseFile
    et coler le code ci-dessus dans la feuille.

    La lecture de cellule n'etant pas invoquée ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cmdReadCell_Click()
      'un message box pour afficher le contenu de la callulle 1-1
      Msgbox WsExcel.Cells(1, 1) 
     
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut
    Merci beaucoup !

    Je ne connais pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim WithEvents AppExcel As Excel.Application
    ainsi que la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub AppExcel_WorkbookBeforeClose
    et je t'avoue que c'est exactement ce que je cherchais.

    je vais tester ça, merci pour ton aide

  6. #6
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut
    Vraiment nikel, ça marche impec !

    Merci pour tout

Discussions similaires

  1. lire des donnée excel
    Par tsunamichups dans le forum ASP.NET
    Réponses: 3
    Dernier message: 26/01/2011, 09h37
  2. [xlsread] Lire et tracé des données Excel
    Par le_fou dans le forum MATLAB
    Réponses: 13
    Dernier message: 13/03/2009, 14h32
  3. Lire des données outlook à partir d'excel
    Par GENI36 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/10/2008, 16h18
  4. Lire des données outlook à partir d'excel
    Par GENI36 dans le forum Outlook
    Réponses: 3
    Dernier message: 16/09/2008, 11h10
  5. [Excel] Lire des données de excel avec php
    Par Eisy dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/03/2006, 17h00

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