Précédent   Forum des professionnels en informatique > Environnements de développement > Delphi > API, COM et SDKs
API, COM et SDKs Développement système ou spécifique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 10h13   #1
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
Par défaut formule RechercheV ne marche pas

bonjour,
j'essaye de mettre cette formule dans une cellule mais cela ne fonctionne pas

excel.cells[1,4].formula := '=RECHERCHEV(A7;''[PPM_customer groups-liste.xls]Feuil1''!$A:$C;3;FAUX)';

j'ai été obligé de doubler les apostrophes pour que cela soit pris comme une chaine caractères ! C'est peut être la cause ?

la formule dans excel :

=RECHERCHEV(A7;'[PPM_customer groups-liste.xls]Feuil1'!$A:$C;3;FAUX)

elle marche très bien.
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 10h33   #2
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
j'ai essayé de décomposer la chaine

a:= '=RECHERCHEV(A7;';
b:= '''[PPM_customer groups-liste.xls]Feuil1''';
c:= '!$A:$C;3;FAUX)';
showmessage(a+b+c);
excel.cells[1,4].formula := a+b+c;


mais toujours probleme OLE 800A03EC pourtant le showmessage m'indique exactement ce que je veux mettre dans la cellule (la même chose que dans excel)
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 11h44   #3
Membre émérite
 
Avatar de BuzzLeclaire
 
Homme
Dev/For/Vte/Ass
Inscription : août 2008
Messages : 1 312
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Dev/For/Vte/Ass

Informations forums :
Inscription : août 2008
Messages : 1 312
Points : 856
Points : 856
Citation:
Envoyé par franckMenant Voir le message
j'ai essayé de décomposer la chaine

a:= '=RECHERCHEV(A7;';
b:= '''[PPM_customer groups-liste.xls]Feuil1''';
c:= '!$A:$C;3;FAUX)';
showmessage(a+b+c);
excel.cells[1,4].formula := a+b+c;


mais toujours probleme OLE 800A03EC pourtant le showmessage m'indique exactement ce que je veux mettre dans la cellule (la même chose que dans excel)
Salut,

et avec
b := Quotedstr('[PPM_customer groups-liste.xls]Feuil1');

Ou votre problème viens du $A et $C

A voir aussi :

http://www.developpez.net/forums/d55...bleme-formule/

http://www.pcreview.co.uk/forums/ole...-t3683209.html

http://forum.pcsoft.fr/thread.awp?gr...5&start=71&v=2

http://www.developpez.net/forums/d11...ession-lignes/


http://www.fast-report.com/en/forum/index.php?showtopic=1964


Bye
BuzzLeclaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 12h15   #4
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549
Juste par curiosité, que donne
Code :
excel.cells[1,4].formula := '=A1';
Qui est "PPM_customer groups-liste.xls" ? c'est le même fichier ? un autre fichier ?
l'Exe Delphi et le XLS sont-ils dans le même répertoire ?
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 14h04   #5
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
Salut les gars,
pour répondre a buzz, c'est pareil avec

b := Quotedstr('[PPM_customer groups-liste.xls]Feuil1');

pour shailetroll, j'ai la même erreur en faisant

excel.cells[1,4].formula := '=A1';


PPM_customer groups-liste.xls est un autre fichier
l'exe n'est pas dans le même repertoire
je viens d'essayer en mettant PPM dans le même repertoire et c'est pareil.
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 14h14   #6
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549
Ton problème n'est donc pas la Formule si "=A1" ne fonctionne pas, qui est pourtant une formule de base, c'est que tu as un problème en amont

tu ne précise pas la feuille, cela utilise-t-il ActiveSheet par défaut ?
Cells, tu es sûr de cette propriété ? n'est-ce pas Range ?
D'ailleurs, tu donnes des coordonnées numériques, mais Excel utilise son propre système de coordonné Lettre+Nombre

ton code devrait plutôt être


Code :
1
2
3
4
Excel := GetActiveOleObject('Excel.Application');
Feuille := Excel.WorkSheets['Feuil1'];
Feuille.Range['A4'].Formula := '=A1';
// Feuille.Cells[1,4].Formula := '=A1'; // A tester, cela doit aussi fonctionner !
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 14h27   #7
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
je viens de trouver pourquoi excel.cells[1,3].formula := '=A1' ne marchait pas. J'avais un processus EXCEL de trop d'ouvert. en le fermant cela s'est arrangé !

par contre

a := '=RECHERCHEV(A2;';
b := Quotedstr('[mon PPM.xlsx]Feuil1'); // j'ai créer un autre PPM au cas ou que j'ai mis dans le même repertoire
c:= '!$A:$C;3;FAUX)';
excel.cells[1,3].formula := a+b+c;

ne marche toujours pas
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 14h48   #8
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549


utilise l'icone # pour ajouter [CODE ] et [/CODE ]

Essaye avec le nom complet du fichier 'c:\dossier\fichier.xls'
xlsx ? Excel 2007 et plus donc !

Est-ce que ceci fonctionne ?

Code :
excel.cells[1,4].formula := '=RECHERCHEV(A7;A1:C5;3;FAUX)';
puis
Code :
excel.cells[1,4].formula := '=RECHERCHEV(A7;''[c:\dossier\mon PPM.xlsx]Feuil1''!A1:C5;3;FAUX)';
...


Commence par une formule simple, puis complexifie jusqu'à obtenir ta formule, tu trouveras ainsi l'élément gênant !
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 16h27   #9
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
Les deux lignes de codes me donnent le même rejet OLE
j'ai essayé avec les chemins des fichiers = pareil

Code :
excel.cells[1,4].formula := '=RECHERCHEV(A7;A1:C5;3;FAUX)';
ce code ne fonctionne pas. Même erreur OLE.

j'ai créé en B1 dans la feuille excel une cellule avec rechercheV qui recherche sur la meme feuille. La fonction réussie.
=RECHERCHEV(A1;$C:$E;3;FAUX)

Code :
excel.cells[1,6].formula := '=B1';
La copie de la cellule garde bien la formule mais ce n'est pas ce que je veux!
j'essaye de bricoler mais rien ne vient...
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 16h42   #10
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549
Citation:
Envoyé par franckMenant Voir le message
Code :
excel.cells[1,4].formula := '=RECHERCHEV(A7;A1:C5;3;FAUX)';
ce code ne fonctionne pas. Même erreur OLE.
Peut-être que FAUX pose problème, as-tu essayé avec 0 ou FALSE ?

As-tu essayé l'inverse juste pour voir !
tu mets la formule voulu dans Excel en A4 [1,4]
et tu fais
Code :
ShowMessage(excel.cells[1,4].formula);
Est-ce que le contenu est le même ?
ou est-ce que Excel enregistre une version modifiée de la formule ?
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 16h56   #11
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
J'ai essayé avec False et 0 = pareil erreur OLE

le fonction showmessage de la formule me provoque la même erreur OLE.
je ne peux pas récupérer la formule.
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h15   #12
Invité de passage
 
Homme Franck Menant
Inscription : janvier 2010
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Franck Menant
Localisation : France

Informations forums :
Inscription : janvier 2010
Messages : 20
Points : 3
Points : 3
j'avais encore des problèmes de processus EXCEL d'ouverts car pour les essais je ne ferme pas tout bien comme il faudrait.

je viens de refaire le showmessage de la formule de la cellule et la !!!!!!!

=VLOOKUP(A1,$C:$E,3,FALSE)

Mon office est installé en français. VB également ???

pas étonnant que cela ne marche pas du tout

Thanks A lot Mr ShaiLeTroll. You're the best !
franckMenant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h42   #13
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549
Il me semblait bien qu'Excel conservait les formules dans la langue native, l'anglais !
En plus c'est écrit dans la FAQ : Comment manipuler des formules ?, je savais bien que je l'avais lu, j'avais déjà manipuler les formules aussi mais cela restait du basique genre =A1+A2-A3
Utilise FormulaLocal au lieu de Formula, si tu préfères le Français !

Pour fermer tes Excels quoi qu'il arrive

Code :
1
2
3
4
5
6
7
Excel := GetActiveOleObject('Excel.Application');
try
  Feuille := Excel.WorkSheets['Feuil1'];
  Feuille.Range['A4'].Formula := '=A1';
finally
  Excel := Unassigned;
end;
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 20h40   #14
Membre émérite
 
Avatar de BuzzLeclaire
 
Homme
Dev/For/Vte/Ass
Inscription : août 2008
Messages : 1 312
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Dev/For/Vte/Ass

Informations forums :
Inscription : août 2008
Messages : 1 312
Points : 856
Points : 856
@Salut,

Bon si au moins tu aurais lu la totalité de mon premier lien

http://www.developpez.net/forums/d55...bleme-formule/

et paticulièrement ce que dit gi130 à 13/10/2003, 18h49
je site :

Citation:
Oui, cette histoire d'anglissisme....

Alors voilà comment ça marche:
sachant que ligne se dit Row...

Enfin, ce que j'en dis....

j'te jure...
BuzzLeclaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h37.


 
 
 
 
Partenaires

Hébergement Web