bakik
Messages postés15Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention21 janvier 2005
-
15 déc. 2004 à 16:12
cs_valval
Messages postés13Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention 1 janvier 2005
-
17 déc. 2004 à 14:20
Bonjour à tous,
La gpetite débutante que je suis s'ets lancée dans un projet et je suis en rade complète.
Voila le topo :
J'ai d'un côté un fichier excel avec différentes colones A B et C et un paquet de lignes.
Dans ma Form j'ai 4 ComboBox et ce que je souhaite faire c'est que mon prog garde en mémoire les choix des ComboBox (enfin çà je sais le faire), ouvre excel et lance une recherche avec les critères choisis dans les combobox pour me retourner le contenu d'une cellule (et çà je sais pas faire).
Chais pas si c'est très clair, mais ce que je ne parviens pas à faire c'est : lui demander d'ouvrir excel, de lancer la recherche des choix des combobox et de me retourner le contenu de la cellule correspondante...
J'ai trouvé + ou - des explications mais je ne m'en sors pas du tout donc un peu d'aide serait la bienvenue :)
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 16 déc. 2004 à 09:46
Si biensure c'est possible. Perso je connais pas les commandes Ole pour faire un filtre dans excel.
Alors pour avoir les commandes ole tu dois avoir le code visual basic excel de ce que tu veux faire puis l'adapter en ole sous Delphi.
jmp77
Messages postés1119Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention 4 octobre 20067 16 déc. 2004 à 09:33
Dans ce cas la le plus simple c'est de faire une macro en visual basic dans ton fichier excel puis ensuite quand tu fais ta connection ole avec le fichier excel tu lances ta macro et hop le tour est joué.
Pour info pour lancer une macro la commande est la suivante :
OleApplication.Run('Start'); {Avec "Start" le nom de ta macro}
cs_valval
Messages postés13Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention 1 janvier 20051 17 déc. 2004 à 14:00
Salut à toi!
Pour récupérer le contenu d'une cellule, tu peux utiliser les méthodes getvalue et getcellbyposition.
getvalue: récupère la valeur d'une cellule
getbyposition: permet d'accéder à une cellule
var feuilleclass, classeur, valeur:variant;
colonne,ligne:word;
begin
// on lance Excel tout en ouvrant le classeur "c:\fichier.xls"
classeur:=excelapplication1.workbooks.open('c:\fichier.xls',
false, false, emptyparam, emptyparam, emptyparam,
emptyparam, emptyparam, emptyparam,
emptyparam, emptyparam, emptyparam,
emptyparam, 0);
// ensuite on accède à une cellule depuis ce classeur
classeur:=document.getsheets;
feuilleclass:=classeur.getbyname('nom_de_la_feuille');
valeur:=feuilleclass:=getcellbyposition(colonne,ligne).getvalue;
end;
Tu peux utiliser la procédure SetValue si tu désire plutôt modifier le contenu d'une cellule.
Je ne te promets pas que ça marchera(car je l'ai écrit à la volée) mais sache tout de même que c'est la démarche à suivre. Tu peux aussi utiliser l'éditeur Visual Basic livré avec la suite Office.
Previens moi si ça t'a aidé.
S'il y a des erreurs éventuelles dans du code, je suis ouvert aux critiques du forum.
cs_valval
Messages postés13Date d'inscriptionmercredi 20 octobre 2004StatutMembreDernière intervention 1 janvier 20051 17 déc. 2004 à 14:20
Au fait j'ai oublié une chose très importante.
lorsque tu accède à une cellule directement depuis un classeur comme c'est le cas dans le code ci-dessus, tu peux faire cette déclaration:
var classeur: _workbook; //plutôt que var classeur: variant;