albla
Messages postés7Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention11 novembre 2011
-
9 nov. 2011 à 20:44
Utilisateur anonyme -
11 nov. 2011 à 16:33
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 9 nov. 2011 à 21:11
>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
albla
Messages postés7Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention11 novembre 2011 10 nov. 2011 à 19:46
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 10 nov. 2011 à 20:11
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
albla
Messages postés7Date d'inscriptionsamedi 16 septembre 2006StatutMembreDernière intervention11 novembre 2011 11 nov. 2011 à 12:12
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
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