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 :

travailler avec VB6 sur un classeur Excel déjà ouvert


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut travailler avec VB6 sur un classeur Excel déjà ouvert
    Bonjour
    Voici mon environnement dans lequel j’évolue (WindowsXP, Excel 2003, VB6)

    Au départ, j’ai créé un fichier excel «monclasseur.xls » contenant des données dans la feuille(1) et je l’ai enregistré dans un répertoire. J’ai lui ai mis un raccourci sur le bureau pour que je puisse l’ouvrir et le renseigner régulièrement

    j'ouvre donc ce classeur Excel tout à fais normalement (par le biais de son raccourci), la feuille(1) contenant les données s’affiche à l’écran par défaut.

    A partir de là

    je voudrai créer une application VB6 qui reconnaîtrai donc le fichier Excel « monclasseur.xls » que j’ai ouvert précédemment pour lire et écrire dans les cellules de la feuille(1).

    Dans VB6, je me suis servi de ce code que j’ai trouvé en consultant le site

    J’ai également coché dans, Projet /Référence / "Microsoft Excel xx.x Object library"

    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
    Dim AppExcel As Excel.Application 
    Dim Classeur As Excel.Workbook 
    Dim Feuille As Excel.Worksheet 
     
    ’le programme pour démarrer 
    Set AppExcel = CreateObject("Excel.Application") 
    Set Classeur = AppExcel.Workbooks.Open(App.Path & "\monclasseur.xls") 
    Set Feuille = Classeur.Worksheets(1) 
     
    ’Mon programme pour renseigner des cellules type 
    Feuille.Cells(1,1)=" merci beaucoup ") 
     
    ’le programme pour quitter 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Save 
    Application.DisplayAlerts = True 
    Classeur.Close 
    AppExcel.Quit 
    Set Feuille = Nothing 
    Set Classeur = Nothing 
    Set AppExcel = Nothing
    Ce programme VB6 fonctionne très bien mais :
    A la fin de ce programme, le fichier excel «monclasseur.xls » est censé s’être enregistré avec les modification effectué dans la cellule(1,1), hors, rien ne s’est inscrit dans la cellule(1,1)..

    Par contre :
    Si je n’ouvre pas le fichier excel « monclasseur.xls »
    j’utilise ce même code VB6
    j'ouvre après le fichier excel « monclasseur.xls »
    je constate que les modifications dans la cellule(1,1) ont bien été effectuées..

    En fait, quand le fichier «monclasseur.xls » est ouvert, l’enregistrement ne ce fait pas sur le classeur ouvert, et j’ai remarqué que un double du fichier s’est enregistré sous C:\documentSetting\Utilisateur\... avec la cellule(1,1) modifiée.


    Je voudrai simplement que VB6 reconnaisse le fichier Excel «monclasseur.xls » quand il est ouvert, modifie les cellules de la feuille(1), et enregistre les modifications.
    Comment faire pour travailler avec VB6 sur un classeur Excel déjà ouvert

    Merci encore

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Par défaut
    Bonjour,
    J'ai un peu regardé en diagonale mais je pense que ton programme ouvre une nouvelle instance d'Excel, qui n'est pas visible. Ouvre ton fichier fait la modif, mais ne peut pas l'enregistrer car le fichier est déjà ouvert par ailleur.


    un AppExcel.Visible = true devrait te permettre de voir le second Excel s'ouvrir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.DisplayAlerts = False 
    ActiveWorkbook.Save 
    Application.DisplayAlerts = True

    DisplayAlerts = false masque l'affichage des messages du type ce fichier ne peut pas être modifié ...
    si tu met cette ligne en commentaire tu devrais avoir le message.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut
    Bonjour Pascal
    Je te remercie pour ta réponse.
    Le fichier Excel avec lequel je travail est sur le Bureau
    Il est situé dans sous C:\ Documents and Settings\Alain\Bureau

    Effectivement, Le programme VB6 ouvre une nouvelle instance d’Excel, avec « AppExcel.Visible=True », un 2eme fichier Excel s’est ouvert.

    J’ai apporté une modification dans une cellule avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuille.Cells(1,1)="merci beaucoup"
    Puis j’ai enregistré avant de quitter en prenant soin de mettre « DisplayAlerts = false ».

    Le 2eme fichier Excel s’est enregistré sous C:\ Documents and Settings\Alain\Mes documents

    Le fichier initial reste inchangé sous C:\ Documents and Settings\Alain\Bureau

    Je pense que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set AppExcel = CreateObject("Excel.Application")
    n’est pas approprié pour travailler sur un document Excel déjà ouvert.
    J’ai essayé aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set appExcel = GetObject(, "Excel.Application")
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set appExcel = New Excel.Application
    mais c’est exactement pareil, je n’y arrive pas.
    Qu’elle solution peux tu m’apporter.

    Merci pour ton suivi

Discussions similaires

  1. Travailler avec oracle sur une poste non lié au réseau local
    Par sofien dans le forum Connexions aux bases de données
    Réponses: 4
    Dernier message: 11/02/2008, 15h46
  2. Tri sur plusieurs classeur excel
    Par Cyril28 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/02/2008, 17h10
  3. [vb6]ouvrir un classeur excel
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/09/2006, 10h33
  4. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 10h59
  5. travail a plusieurs sur un fichier excel
    Par pierre56680 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2006, 19h37

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