Et il faut le traduire en C++ . C'est ca que tu dit?
Et il faut le traduire en C++ . C'est ca que tu dit?
oui
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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 vide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vWorksheet.OlePropertyGet("Range", "A1:AJ20000").OleProcedure("Sort", vWorksheet.OlePropertyGet("Columns", 1), 1);
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Code de trie avec detection fin de ligne et fin de colonne
le code detaille
le code condense
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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);
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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 . .. 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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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. )
Désolé, on savait pas que c'était impossible, alors on l'a fait
Oui je suis d'accord pour bien remercier blondelle ..
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
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
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
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 . 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 ....
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Hum 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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"
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Bah il faut que je télécharge StrUtils.h ?
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 "
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Impossible d'ouvrir le fichier include 'StrUtils.hpp'PS : Bientôt je fais ca avec une soustraction U_uImpossible d'ouvrir le fichier include 'StrUtils.h'
Bcb v.5
normalement cela s'ecrit comme ceci
pour BCB5 je ne sais pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
--
Plutot que d'essayer de réinventer la roue, apprenons à nous en servir
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager