Throna
Messages postés11Date d'inscriptionmercredi 28 février 2007StatutMembreDernière intervention 6 avril 2007
-
9 mars 2007 à 11:49
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 2019
-
13 mars 2007 à 13:09
Lut all
Voila je cherche a prendre des valeurs qui se trouvent dans Excel par DDE et le problème est le suivant, lorsque je veux mettre LinkMode de ma Text box par exemple a Automatic il me jette : No foreign application responded to a DDE initiate.
Pourtant j'ai bien rempli LinkTopic:"Excel|Sheet2" et LinkItem:L2C2.
Donc je vois pas d'où ça vient
Merci d'avance
A voir également:
Runtimeerror: too early to create image: no default root window
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 13 mars 2007 à 09:41
Bonjour, étant étoné de ne pas avoir de réponce à mon poste précédant j'ai fais des testes (j'ai hue acces à un poste avec Ms office et VB6). Donc finalement il faut faire ça (chez moi ça marche).
-> Aucune référance en plus n'est obligatoire.
Code qui marche :
-----------------
dim MyXl as object
set MyXl = getobject(,"Excel.Application")
MyXl.Workbooks('A').Worksheets('B').Cells('C','D').Value = "Teste"
-----------------
Avec :
A -> Numéro d'index ou nom du fichier (l'index 1 est le denier doc ouvert)
B -> Numéro d'index de la feille ou nom de la feuille
C -> Numéro de la ligne (commance à 1 et non à 0)
D -> Numéro de la collone (Attention en chiffre et non en lettre)
Par exemple :
MyXl.Workbooks(1).Worksheets(1).Cells(1,1).Value = "Teste" 'Cette ligne écrirat "Teste" dans la cellule A1 de la 1ér feuille du dernier doc Excel ouvert
msgbox MyXl.Workbooks("Toto.xls").Worksheets("Feuil1").Cells(1,5).Value 'Cette ligne écrira dans un message box la valeur de la cellule "E1" de la feuille nomé "Feuil1" dans la fichier "Toto.xls" (Attention il faut que ce fichier soit ouvert)
MyXl.Workbooks.Open("C:\Toto.xls") 'Ouvre le fichier "C:\Toto.xls"
Un petit truc :
Construit tes macro dans excel et copie les simplement apprés "MyXl." comme ça tu évite les erreur de syntaxe.
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 9 mars 2007 à 16:17
Salut,
Alors déjà en quel version de VB est tu???
En VBA Word j'ai fais un 'truc' qui resemble un peut à une DDE mais qui n'en est pas vraiment une (tout du moin ca ne resemble pas du tout au DDE que je crée en ce momant). Ce que j'ai fais :
Dim MyXl As Object
Set MyXl = GetObject(, "Excel.Application") 'Attention cette ligne est en erreur si excel n'est pas executé donc prévoir de la gestion d'erreur (type "on error goto machin")
Ensuite tu prend le contrôle d'excel grace à cette objet soit par exemple :
MyXl.Sheet2.Case(1,1).Value 'Heee cette commande est faite de mémoire je n'est pas Excel sur mon poste (open office)
Donc cette commande te retourn la valeur de la cellule A1 et tu peut faire des get ou des set graçe à lui.
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 12 mars 2007 à 15:11
Je ne sais pas comand ce nome cette façon de faire mais je ne crois pas que ce soit du DDE (ou alors une façon de faire TRES differante de celle que j'emploie actuelement)
Il est possible qu'il faille ajouté une référance pour que le code que j'ai mit plus haut fonctione (il me semble que c'est 'Microsoft Office 9.0 Object Library' mais sans garantie). Si non je vais regarder par DDE mais ce n'est pas possible tout de suite, désol j'ai du taf
Déjà teste cas et dit moi si ca marche ou non, alors je regarderais pour les DDE (si ca ne marche pas bien sure)
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 13 mars 2007 à 11:23
???
Teste ta ligne directement de Excel il y à peut être une erreur dedans.
Quel paramétre à tu mit (ceux que j'ai noté A,B,C,D dans mon poste précédant)? place ta ligne qui plante dans un post j'ai un peut de temps ce matin (mais je vais être occupé toute l'appré midi donc fais vite si non ça risque d'être demain)