Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Ce n'est pas vraiment une question PB mais c'est quelquechose dont j'ai besoin pour mes scripts, peut être pourrez-vous m'aider.
J'aimerais savoir s'il y a un moyen pas trop colplexe de trouver une correspondance numéro / lettre de colonne dans Excel.
Exemple :
résussir à trouver que la colonne 29 est en fait la colonne "AC", ou bien 15 = O
Merci.
Hors ligne
comme ca par exemple ?
Accepted Answer from sandeep_patel
Date: 08/23/2006 03:21AM PDT
Grade: A
Accepted AnswerHi
you can use following code...Code: pb
integer result, i , j string ls_read OLEObject myoleobject myoleobject = CREATE OLEObject result = myoleobject.ConnectToObject( "c:\temp\test.xls") IF result = 0 THEN For i = 1 to 2 for j = 1 to 2 ls_read = myoleobject.application.workbooks(1).worksheets(1).cells(i,j).value messagebox('',ls_read) next next // myoleobject.application.workbooks(1).save() END IF DESTROY myoleobjectonce you get value of each cell either you can store in array or directly copy to your datawindow row/column and save datawindow to update value in database.
let me know if you have any query.
Regards,
Sandeep
Hors ligne
Je dois m'être mal expliqué. Je ne cherche pas la valeur d'une cellule, mais la correspondance entre numéro de colonne et nom de colonne dans Excel.
Par exemple dans PB je veux selectionner une plage de cellule "C2:O2" mais je ne connais que les coordonnées des cellules des extrémités : cells(2,3) et cells(2,15)
Ma question est : comment savoir que cells(2,15) = O2
Hors ligne
C'est bon, j'ai fait une bidouille à base de Mod, de Int et de char pour arriver à mes fins
Hors ligne
hoooooooo tu m'as devancé....
j'étais en train de faire l'algorythme...
tu peux mettre ta reponse pour nous ?
Hors ligne
voici la mienne
pour Avoir l'equivalent de la colonne...
long ll_colonne, ll_result decimal ldc_result long ll_i string ls_colonne[26] string ls_nomcolonne // je mets ici mon n° de colonne ll_colonne = 173 for ll_i = 1 to 26 ls_colonne[ll_i] = char(64 + ll_i ) next do while ll_colonne > 26 ldc_result = ((ll_colonne/26) - int(ll_colonne/26)) * 26 ll_colonne = int(ll_colonne/26) if ldc_result > 0 then ls_nomcolonne = ls_colonne[ldc_result] + ls_nomcolonne else ls_nomcolonne = ls_colonne[26] + ls_nomcolonne end if loop if ll_colonne < 27 then ls_nomcolonne = ls_colonne[ll_colonne] + ls_nomcolonne end if messagebox("Colonne Excel",ls_nomcolonne)
Hors ligne
voici la mienne
long ll,jj string ls ls='' ll= 173 do while ll > 0 ll -= 1 ls = char( mod(ll,26) + 65 ) + ls ll = ll / 26 loop messagebox("base26",ls)
... après l'avoir modifié 3 fois !
Hors ligne