Et il faut le traduire en C++ . C'est ca que tu dit?
Version imprimable
Et il faut le traduire en C++ . C'est ca que tu dit?
oui
J'ai trouve ceci sur le site
Je l'ai condense en ceci
Reste a trouver le code pour connaitre l'adresse de la derniere colonne non vide et l'adresse de la derniere ligne non videCode:
1
2 vWorksheet.OlePropertyGet("Range", "A1:AJ20000").OleProcedure("Sort", vWorksheet.OlePropertyGet("Columns", 1), 1);
Code de trie avec detection fin de ligne et fin de colonne
le code detaille
le code condenseCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int depart = 2; int fin = vWorksheet.OlePropertyGet("Range", "A1").OlePropertyGet("SpecialCells", 11).OlePropertyGet("Row"); int finCol = vWorksheet.OlePropertyGet("Range", "A1").OlePropertyGet("SpecialCells", 11).OlePropertyGet("Column"); Variant vCol, vRange; vCol = vWorksheet.OlePropertyGet("Columns", 1); vRange = vWorksheet.OlePropertyGet("Range", vWorksheet.OlePropertyGet("Cells", depart, 1), vWorksheet.OlePropertyGet("Cells", fin, finCol)); vRange.OleProcedure("Sort", vCol, 1); // 1 xlAscending , 2 xlDescending
Code:
1
2
3
4
5
6
7 int depart = 2; int fin = vWorksheet.OlePropertyGet("Range", "A1").OlePropertyGet("SpecialCells", 11).OlePropertyGet("Row"); int finCol = vWorksheet.OlePropertyGet("Range", "A1").OlePropertyGet("SpecialCells", 11).OlePropertyGet("Column"); vWorksheet.OlePropertyGet("Range", vWorksheet.OlePropertyGet("Cells", depart, 1), vWorksheet.OlePropertyGet("Cells", fin, finCol)).OleProcedure("Sort", vWorksheet.OlePropertyGet("Columns", 1),1);
Merci . Parcontre tu te prends juste un peu trop la tête au niveau des lignes et colones vides . Puisque a ce stade il ne reste que 3 colones . Qui normalement sont liées entre elles . Donc tu trie la 3 normalement les autres suivent . Du moins sous Excel ca fait ca . Et le nombre de lignes utilisées ont été récupérées dès le début dans un int : lignes . :D .. Voilà ;)
Donc après modification . Le code qui me correspond est :
;) . Donc j'avance un peu le programme et bientôt j'aurais re-besoin de toi :DCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 int start = 2; int fini = lignes; int finCol = vWorksheet.OlePropertyGet("Range", "C1").OlePropertyGet("SpecialCells", 11).OlePropertyGet("Column"); Variant vCol; vCol = vWorksheet.OlePropertyGet("Columns", 3); vRange = vWorksheet.OlePropertyGet("Range", vWorksheet.OlePropertyGet("Cells", start, 1), vWorksheet.OlePropertyGet("Cells", fini, finCol)); vRange.OleProcedure("Sort", vCol, 1); // 1 xlAscending , 2 xlDescending
Donc voilà ca y est . Tout est trié comme il faut et je n'ai gardé que ce dont j'avais besoin. Maintenant je suis aux dernières étapes ;) .
D'abord il faut que j'insère une colone entre la colone A et la colone B pour ensuite la supprimer.
(pour enlever le bug de la prochaîne etape qui met le reste du code dans la seconde colone ).
J'ai donc la colone A qui n'est constituée que de nombres au format :
"340092xxxxxxx"
3
4
J'ai donc besoin d'enlever les 5 premiers chiffres et le dernier .
"34009]2xxxxxx[x"
3
4
Pour ne garder que un nombre du format
2xxxxxx
3
4
. Voilà j'espère avoir été clair :D Et que tu sais comment faire . Disons qu'il y a la fonction Excel . Mais .. Encore une fois.. ;)
( juste un petit message pour remercier blondelle pour les informations sur les versions excels qui conservent la compatibilité ascendante, ce que je ne savais pas.
Désolé je n'ai pas eu le temps de répondre avant, ayant été très pris ces derniers jours.
Les problèmes de version que j'avais rencontrés concernaient en fait une différence de langue entre version françaises et anglaise de excel il y a des choses qui changent, au niveau des virgules et points, et également au niveau du nom des formules mathématiques, je ne sais pas s'ils ont résolus ce problème sur les dernières versions d'office. )
Oui je suis d'accord pour bien remercier blondelle :D ..
Salut Argol_Medusa, on rencontre plus de probleme avec les versions de BCB que de probleme de version d'Excel, c'est comme cela, ou serait la joie de s'arracher les cheveux devant un code qui refuse de fonctionner:mrgreen:
si je ne me trompe pas les mots de commandes sont tous en anglais depuis la version 2000
santanas2b, tu sais recuperer le contenu d'une cellule, regarde dans l'aide en ligne de BCB " LeftStr " et " RightStr " une des fonction supprime la partie gauche d'une chaine l'autre la partie droite
Ouai . heu .. x) A cause de la version de windows .. Je n'ai pas l'aide de BcB x)
J'ai recherché vite fait sur google . Je vais tenter quelque choses :D . Donc on récupère les valeurs de la case . Mais comment récupérer la chaîne de carrac?
Puisque Value . C'est un float . Donc . Il faudrait un argument de OleProperty pour récupérer une chaîne de carrac
il faut utiliser FloatToStr pour convertir un flottant en String, mais avant essai directement sur un Variant, un Variant peut etre une chaine un entier un flottant ....
Hum :D Je test.. Je suis bête .. c'est un nombre.. je sais pas pourquoi je me voyais modifier la case des noms.. Lol
Hum . Je ne trouves pas RightStr Et LeftStr
Tire de l'aide en ligne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 LeftStr Renvoie la sous-chaîne initiale d'une chaîne d'après la longueur spécifiée. Unité StrUtils Catégorie routines de gestion des chaînes extern PACKAGE AnsiString__fastcall LeftStr(const AnsiString AText, int ACount); Description LeftStr renvoie les premiers ACount caractères de AText. Par exemple : LeftStr("Programmer", 7) renvoie la chaîne "Program" //=========== RightStr Renvoie la sous-chaîne finale d'une chaîne d'après la longueur spécifiée. Unité StrUtils Catégorie routines de gestion des chaînes extern PACKAGE AnsiString__fastcall RightStr(const AnsiString AText, int ACount); Description RightStr renvoie les derniers ACount caractères de AText. Par exemple : RightStr("Programmer", 7) renvoie la chaîne "grammer"
Bah il faut que je télécharge StrUtils.h ? :D
Parce que ça me dit que ca ne fonctionne pas . Que le fonction n'existe pas . Et j'ai pas encore trouvé de StrUtils.h x)..
il suffit juste de mettre dans l'entete du programme " #include "StrUtils.hpp " ou peut etre suivant ta version BCB " #include "StrUtils.h "
Citation:
Impossible d'ouvrir le fichier include 'StrUtils.hpp'
PS : Bientôt je fais ca avec une soustraction U_uCitation:
Impossible d'ouvrir le fichier include 'StrUtils.h'
Bcb v.5
normalement cela s'ecrit comme ceci
pour BCB5 je ne sais pasCode:
1
2
3
4
5
6
7
8
9
10
11 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "utilcls.h" // <----------- #include "StrUtils.hpp" // <------------ //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;