Reconnaitre un fichier EXCEL déjà ouvert

Signaler
Messages postés
7
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
11 novembre 2011
-
 Utilisateur anonyme -
Bonjour
Voila mon problème, au départ, j'ouvre un classeur Excel, je selectionne la feuille(1) contenant des données.

Plutôt que d'utiliser une macro VBA pour renseigner les cellules de cette feuille EXCEL, je souhaiterai utiliser VB6 pour remplir les cellules de cette même feuille EXCEL

Comment faire pour que l'application VB6 reconnaisse le fichier EXCEL déjà ouvert

Avec la formule suivante depuis VB6, çà fonctionne très bien quand le fichier EXCEL est fermé

Dim AppExcel As Excel.Application
Dim Classeur As Excel.Workbook
Dim Feuille As Excel.Worksheet

?Mon programme pour démarrer
Set AppExcel = CreateObject("Excel.Application")
Set Classeur = AppExcel.Workbooks.Open(App.Path & "\xxxxxxxxxxx")
Set Feuille = Classeur.Worksheets(1)

?Mon programme pour renseigner des cellulles type
Feuille.Cells(1,1)=" merci beaucoup ")

?Mon programme pour quitter
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
Classeur.Close
AppExcel.Quit
Set Feuille = Nothing
Set Classeur = Nothing
Set AppExcel = Nothing


Par contre, si le fichier EXCEL est déjà ouvert, il m'ouvre en double le fichier qu'il enregistre dans C:\documentSetting\Utilisateur\...
Le fichier initial se m'est en lecture seule, et aucune modification ne se fait.

Je voudrai simplement que VB6 reconnaisse le fichier EXCEL déjà ouvert et modifie les cellules de la feuille (genre Classeur.Feuille(1).Cells(1,1)= "merci beaucoup")

Quel serait le code qui pourrai m'aider.

Merci encore
PS: J'ai regarder beaucoup d'exemples, mais pour mon cas , je n'ai pas trouvé de solutions

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
>Bonjour,
Il te faut ici être très précis dans ta question :
- si déjà ouvert par ta propre applki ?
ou
- si déjà ouvert, y compris par d'autres applis ?
Car pas du tout la même chose


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
7
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
11 novembre 2011

Bonjour
J'ouvre le fichier excel par sa propre application (par son raccourci)
et ensuite
je voudrai ouvrir une application VB6 qui reconnaitrai le fichier Excel pour lire et écrire dans ce fichier

Merci beaucoup
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Ce que tu viens d'exprimer est étrange (à plusieurs titres) !
Regarde : je compare :
je voudrai ouvrir une application VB6 qui reconnaitrai le fichier Excel pour lire et écrire dans ce fichier

avec :
j'ouvre le fichier excel par sa propre application (par son raccourci)

Je suis patient, mais là ....
Alors :
ou tu te montres TRES précis (et montres que tu comprends la signification de chaque chose, à commencer par ce que tu exprimes) ou tu continues, mais sans moi, c'est sûr !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
7
Date d'inscription
samedi 16 septembre 2006
Statut
Membre
Dernière intervention
11 novembre 2011

Bonjour, excuse moi, je vais essayer de recommencer mon explication en essayant d'être clair cette fois ci.

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 Visual Basic actuel
J'ai également coché dans, Projet /Référence / "Microsoft Excel xx.x Object library"



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 «monclasseur.xls » est censé de 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 « monclasseur.xls »
j'utilise ce même code VB6
puis j'ouvre donc le fichier « 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 «monclasseur.xls » quand il est ouvert, modifie les cellules de la feuille(1), et enregistre les modifications.

Comment faire
J'espère que saurai me faire comprendre cette fois.

Merci encore

Salut,

Je t'ai trouvé ce bout de code qui récupère la liste des processus en cours.

Ça devrait t'aider...

Option Explicit
Dim Handle As Long
Dim HandleAutre As Long
Dim m As Integer
Dim Nom As String

Private Sub Command1_Click()
List1.Clear
Handle = GetWindow(Form1.hwnd, GW_HWNDFIRST)

Handle = Me.hwnd
While Handle <> 0
  Nom = Space(100)
  GetWindowText Handle, Nom, 100
  Nom = Trim(Nom)
  If Len(Nom) > 1 And HandleAutre <> Handle Then
     If InStr(1, Nom, "xcel", vbTextCompare) > 0 Then List1.AddItem Nom
  End If
  
  HandleAutre = Handle
  Handle = GetWindow(Handle, GW_HWNDNEXT)
Wend
Me.Caption = List1.ListCount & " applications Excel en cours !"
End Sub


CF2i - Guadeloupe
Ingénierie Informatique