Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Un petit tableur (bis) | |
| | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Un petit tableur (bis) Ven 4 Mai 2012 - 17:27 | |
| Décidément, je me répète... J'avais proposé il y a un an un petit tableur: https://panoramic.1fr1.net/t1463-un-petit-tableur?highlight=Tableur,j'ai eu l'occasion de l'utiliser et de l'améliorer un peu, mais le sujet étant verrouillé (normal, trop vieux) je me permets de mettre la nouvelle version ici. Il y a quelques retouches mineures, mais surtout la possibilité de supprimer et d'insérer des colonnes et des lignes. Pour l'impression du tableau, je suis passé de WinTextPrint.exe à la nouvelle version WTP.exe de notre ami Klaus, dommage qu'on ait perdu au passage la possibilité d'imprimer en mode paysage (donc ce paramètre est inopérant). C'est moins élaboré que le tableur de Klaus (on en est loin), mais ça peut faire l'affaire. Voici le nouveau code (1250 lignes, quand même): - Code:
-
DIM w0, h0, p, nc, nr, lc, hl, slc, lcl, het, et, i%, j%, k%, x, y, x1, y1, a$, b$, d$ DIM arg$, c, r, c1, r1, c2, r2, l, fnt$, sz, gras, ital, soul, alig$, cout$, couf$ DIM fc$, ft$, fimg$, fpr$, xs, ys, wp, hp, sa$, shl, lt, ht, ini%, yet, a1$, a2$ DIM maxr, maxc, cars$, clc, prt$, lim, him, lpr, hpr, ori, nc1, nr1, lc1, hl1, cc, rr DIM sc1, sr1, t%, u$, r11, c11, r12, c12, ca, ra, vnn%, fnbr, clig, xp, yp, hlp$, mes$ maxr = 60: maxc = 20: ' rangées maxi, colonnes maxi DIM xc(maxc), yr(maxr), lco(maxc), hro(maxr) DIM cel$(maxr,maxc), pol$(maxr,maxc), siz(maxr,maxc), enr$(maxr,maxc) DIM ali$(maxr,maxc), cot$(maxr,maxc), cof$(maxr,maxc), fnb(maxr,maxc) DIM rc$, ct$, cf$, od, sd, rf, gf, bf, wa, ha, la, mg, mh, wi, hi, rx, cx, v, va, v1, v2 DIM scl
LABEL new, opn, der, savc, savt, savs, impr, quit, copy, paste, cut, Chw, Chh LABEL Chpol, Attp, Chsiz, Atts, Enrich, Majenr, Majali, Majcou, Majfnb, Majtx, Pra, Formon LABEL ra, rb, rc, rd, re, rf, Clic2cr, Desel, Newcel, Majpr, Key, Dimensions LABEL lico, LinColn, Desgri, Deslign, Suplign, Coulig, Descel, Clicol, Cliran LABEL Insert, Suppri, optim, Valpr, Afmes, Formules, Eval, Aide, Copform, Verif LABEL Alerte, Trace, Faide
fc$ = "C:\Temp\Test.csv": ' fichier de manoeuvre <============================ ft$ = "C:\Temp\Test.tab": ' idem, formatage conservé fimg$ = "C:\Temp\Test.bmp" prt$ = "C:\UTIL\WTP.exe ": ' module d'impression, en mode 'image' fpr$ = "C:\Temp\Tab.prt"
nc = 6: ' nb de colonnes utiles nr = 20: ' nb de lignes utiles lc = 120: ' largeur de colonne lcl = 30: ' largeur de la 1ère colonne hl = 20: ' hauteur de rangée het = hl: ' hauteur de la 1ère rangée alig$ = "L": ' alignement gauche (L, C, R) cout$ = "N": ' couleur texte noire (N, R, G, B) couf$ = "W": ' couleur fond blanche (W, Y, M, C) rf = 255: gf = 255: bf = 255 clig = 192: ' couleur des lignes (192,192,192) cars$ = "": ' séparateur de valeurs dans le fichier ini% = 0 et = 50: ' hauteur de l'en-tête
CAPTION 0, fc$ + " - Tableur Panoramic"
MAIN_MENU 1 SUB_MENU 11: PARENT 11, 1: CAPTION 11, "Fichier" SUB_MENU 12: PARENT 12, 1: CAPTION 12, "Edition" ' SUB_MENU 13: PARENT 13, 1: CAPTION 13, "Affichage" ' SUB_MENU 14: PARENT 14, 1: CAPTION 14, "Insertion" ' SUB_MENU 15: PARENT 15, 1: CAPTION 15, "Format" ' SUB_MENU 16: PARENT 16, 1: CAPTION 16, "Outils" SUB_MENU 17: PARENT 17, 1: CAPTION 17, "Aide" ON_CLICK 17, Aide
' Sous-menus 2 (Fichier) SUB_MENU 21: CAPTION 21,"Nouveau" : PARENT 21, 11 SUB_MENU 22: CAPTION 22,"Ouvrir" : PARENT 22, 11 SUB_MENU 23: CAPTION 23,"Ouvrir dernier enregistré (* non codé)": PARENT 23, 11 SUB_MENU 24: CAPTION 24,"Enregistrer en CSV (sans format)" : PARENT 24, 11 SUB_MENU 25: CAPTION 25,"Enregistrer en TAB (avec format)" : PARENT 25, 11 SUB_MENU 26: CAPTION 26,"Enregistrer sous... (* non codé)": PARENT 26, 11 SUB_MENU 27: CAPTION 27,"Imprimer": PARENT 27, 11 SUB_MENU 28: CAPTION 28,"Quitter" : PARENT 28, 11 ON_CLICK 21, new: ON_CLICK 22, opn: ON_CLICK 23, der: ON_CLICK 24, savc ON_CLICK 25, savt: ON_CLICK 26, savs: ON_CLICK 27, impr: ON_CLICK 28, quit
' Sous-menus 3 (Edition) SUB_MENU 31: CAPTION 31,"Copier" : PARENT 31, 12 SUB_MENU 32: CAPTION 32,"Coller" : PARENT 32, 12 SUB_MENU 33: CAPTION 33,"Couper" : PARENT 33, 12 ON_CLICK 31, copy: ON_CLICK 32, paste: ON_CLICK 33, cut
fnt$ = "Arial": sz = 10: gras = 0: ital = 0: soul = 0 FOR r = 1 TO nr FOR c = 1 TO nc cel$(r,c)="": pol$(r,c)=fnt$: siz(r,c)=sz: enr$(r,c)="": ali$(r,c)="L" cot$(r,c)="N": cof$(r,c)="W": fnb(r,c)=0 NEXT c NEXT r EDIT 2: TOP 2, 0: LEFT 2, 2: WIDTH 2, 150: HEIGHT 2, 20: ' nom police TEXT 2, fnt$ ON_CLICK 2, Chpol EDIT 3: TOP 3, 0: LEFT 3, 152: HEIGHT 3, 20: WIDTH 3, 50: ' taille police TEXT 3, STR$(sz) ON_CLICK 3, Chsiz ALPHA 4: TOP 4, 24: LEFT 4, 6: WIDTH 4, lcl: CAPTION 4, "A1" EDIT 5: TOP 5, 22: LEFT 5, 30: WIDTH 5, 450: HEIGHT 5, 20: ' zone de saisie FONT_NAME 5, fnt$: FONT_SIZE 5, sz ON_KEY_DOWN 5, Key yet = 50 ' Enrichissements PICTURE 6: TOP 6, 0: LEFT 6, 210: WIDTH 6, 20: HEIGHT 6, 20: HINT 6, "Gras" 2D_TARGET_IS 6: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 PRINT_TARGET_IS 6: FONT_SIZE 6, 10: FONT_BOLD 6: PRINT_LOCATE 4, 2: PRINT "G" PICTURE 7: TOP 7, 0: LEFT 7, 235: WIDTH 7, 20: HEIGHT 7, 20: HINT 7, "Italiques" 2D_TARGET_IS 7: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 PRINT_TARGET_IS 7: FONT_SIZE 7, 10: FONT_ITALIC 7: PRINT_LOCATE 4, 2: PRINT "I" PICTURE 8: TOP 8, 0: LEFT 8, 260: WIDTH 8, 20: HEIGHT 8, 20: HINT 8, "Souligné" 2D_TARGET_IS 8: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 PRINT_TARGET_IS 8: FONT_SIZE 8, 10: FONT_UNDERLINE 8: PRINT_LOCATE 4, 2: PRINT "S" FOR i% = 6 TO 8: ON_CLICK i%, Enrich: NEXT i% ' Alignement PICTURE 89: TOP 89, 0: LEFT 89, 285: WIDTH 89, 20: HEIGHT 89, 20: HINT 89, "Aligné à gauche" 2D_TARGET_IS 89: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,0 FOR j% = 4 TO 16 STEP 6: 2D_LINE 4, j%, 16, j%: NEXT j% FOR j% = 7 TO 18 STEP 6: 2D_LINE 4, j%, 12, j%: NEXT j% PICTURE 90: TOP 90, 0: LEFT 90, 310: WIDTH 90, 20: HEIGHT 90, 20: HINT 90, "Centré" 2D_TARGET_IS 90: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,0 FOR j% = 4 TO 16 STEP 6: 2D_LINE 4, j%, 16, j%: NEXT j% FOR j% = 7 TO 18 STEP 6: 2D_LINE 7, j%, 13, j%: NEXT j% PICTURE 91: TOP 91, 0: LEFT 91, 335: WIDTH 91, 20: HEIGHT 91, 20: HINT 91, "Aligné à droite" 2D_TARGET_IS 91: 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,0 FOR j% = 4 TO 16 STEP 6: 2D_LINE 4, j%, 16, j%: NEXT j% FOR j% = 7 TO 18 STEP 6: 2D_LINE 8, j%, 16, j%: NEXT j% FOR i% = 89 TO 91: ON_CLICK i%, Enrich: NEXT i%
' Couleurs PICTURE 70: TOP 70, 0: LEFT 70, 360: WIDTH 70, 20: HEIGHT 70, 20: HINT 70, "Texte Noir" 2D_TARGET_IS 70 PRINT_TARGET_IS 70: FONT_COLOR 70,0,0,0: FONT_SIZE 70,12: FONT_BOLD 70:PRINT_LOCATE 4,0:PRINT "A" PICTURE 71: TOP 71, 0: LEFT 71, 380: WIDTH 71, 20: HEIGHT 71, 20: HINT 71, "Texte Rouge" 2D_TARGET_IS 71 PRINT_TARGET_IS 71: FONT_COLOR 71,255,0,0: FONT_SIZE 71,12: FONT_BOLD 71:PRINT_LOCATE 4,0:PRINT "A" PICTURE 72: TOP 72, 0: LEFT 72, 400: WIDTH 72, 20: HEIGHT 72, 20: HINT 72, "Texte Vert" 2D_TARGET_IS 72 PRINT_TARGET_IS 72: FONT_COLOR 72,0,255,0: FONT_SIZE 72,12: FONT_BOLD 72:PRINT_LOCATE 4,0:PRINT "A" PICTURE 73: TOP 73, 0: LEFT 73, 420: WIDTH 73, 20: HEIGHT 73, 20: HINT 73, "Texte Bleu" 2D_TARGET_IS 73 PRINT_TARGET_IS 73: FONT_COLOR 73,0,0,255: FONT_SIZE 73,12: FONT_BOLD 73:PRINT_LOCATE 4,0:PRINT "A"
PICTURE 74: TOP 74, 0: LEFT 74, 450: WIDTH 74, 20: HEIGHT 74, 20: HINT 74, "Fond Blanc" 2D_TARGET_IS 74: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 2D_PEN_WIDTH 1: 2D_PEN_COLOR 255,255,255: 2D_FILL_COLOR 255,255,255: 2D_RECTANGLE 3,3,17,17 PICTURE 75: TOP 75, 0: LEFT 75, 470: WIDTH 75, 20: HEIGHT 75, 20: HINT 75, "Fond Jaune" 2D_TARGET_IS 75: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 2D_PEN_WIDTH 1: 2D_PEN_COLOR 255,255,0: 2D_FILL_COLOR 255,255,0: 2D_RECTANGLE 3,3,17,17 PICTURE 76: TOP 76, 0: LEFT 76, 490: WIDTH 76, 20: HEIGHT 76, 20: HINT 76, "Fond Magenta" 2D_TARGET_IS 76: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 2D_PEN_WIDTH 1: 2D_PEN_COLOR 255,128,255: 2D_FILL_COLOR 255,192,255: 2D_RECTANGLE 3,3,17,17 PICTURE 77: TOP 77, 0: LEFT 77, 510: WIDTH 77, 20: HEIGHT 77, 20: HINT 77, "Fond Cyan" 2D_TARGET_IS 77: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 2D_PEN_WIDTH 1: 2D_PEN_COLOR 128,255,255: 2D_FILL_COLOR 192,255,255: 2D_RECTANGLE 3,3,17,17 FOR i% = 70 TO 77: ON_CLICK i%, Enrich: NEXT i%
PICTURE 78: TOP 78, 0: LEFT 78, 540: WIDTH 78, 20: HEIGHT 78, 20: HINT 78, "Format monétaire" 2D_TARGET_IS 78: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 PRINT_TARGET_IS 78: FONT_NAME 78, "Lucida Console": FONT_SIZE 78, 12: FONT_BOLD 78 PRINT_LOCATE 4, 3: PRINT "€" ON_CLICK 78, Enrich
PICTURE 80: TOP 80, 0: LEFT 80, 570: WIDTH 80, 20: HEIGHT 80, 20 HINT 80, "Recopie de la formule"+chr$(10)+"de la cellule précédente"+chr$(10)+"incrémentée." 2D_TARGET_IS 80: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 PRINT_TARGET_IS 80: FONT_NAME 80, "Lucida Console": FONT_SIZE 80, 12 PRINT_LOCATE 5, 2: PRINT "R" ON_CLICK 80, Copform
PICTURE 81: TOP 81,0: LEFT 81, 600: WIDTH 81, 20: HEIGHT 81, 20: HINT 81,"Couleur des lignes (en bascule)" 2D_TARGET_IS 81: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2: 2D_RECTANGLE 1,1,20,20 2D_PEN_WIDTH 1: 2D_PEN_COLOR 0,0,0: 2D_LINE 3,6,17,6: 2D_LINE 3,13,17,13 2D_LINE 4,3,4,17: 2D_LINE 15,3,15,17 ON_CLICK 81, Coulig
LIST 85: TOP 85, 20: LEFT 85, 150: HEIGHT 85, 175: WIDTH 85, 50: HIDE 85 FOR i% = 6 TO 30 STEP 2 ITEM_ADD 85, STR$(i%) NEXT i% ON_CLICK 85, Atts
' Form dialogue formatage lignes/colonnes FORM 50: TOP 50, et+80: LEFT 50, 100: WIDTH 50, 240: HEIGHT 50, 410: HIDE 50 ALPHA 52: PARENT 52, 50: TOP 52, 10: LEFT 52, 70: FONT_BOLD 52
BUTTON 110: PARENT 110,50: TOP 110,30: LEFT 110,5: WIDTH 110,105: HEIGHT 110,20: CAPTION 110,"Insérer une colonne" ON_CLICK 110, Insert BUTTON 111: PARENT 111,50: TOP 111,30: LEFT 111,115: WIDTH 111,105: HEIGHT 111,20: CAPTION 111,"Supprimer la colonne" ON_CLICK 111, Suppri
ALPHA 114: PARENT 114, 50: TOP 114, 65: LEFT 114, 5: CAPTION 114, "Largeur de colonnes:" SPIN 115: PARENT 115, 50: LEFT 115, 130: TOP 115, TOP(114): WIDTH 115, 70: MAX 115, 600
ALPHA 130: PARENT 130, 50: TOP 130, TOP(114)+25: LEFT 130, 5: CAPTION 130, "Enrichissements:" CHECK 131: PARENT 131, 50: TOP 131, TOP(130)+20: LEFT 131, 10: CAPTION 131, "Gras" CHECK 132: PARENT 132, 50: TOP 132, TOP(130)+20: LEFT 132, 80: CAPTION 132, "Italiques" CHECK 133: PARENT 133, 50: TOP 133, TOP(130)+20: LEFT 133, 150: WIDTH 133, 60: CAPTION 133, "Souligné"
CONTAINER_OPTION 135: PARENT 135, 50: TOP 135, TOP(130)+50: LEFT 135, 5: WIDTH 135, 215: HEIGHT 135, 40 CAPTION 135, " Alignement texte: " OPTION 136: PARENT 136,135: LEFT 136, 5: TOP 136, 18: CAPTION 136, "Gauche" OPTION 137: PARENT 137,135: LEFT 137, 75: TOP 137, 18: CAPTION 137, "Centré" OPTION 138: PARENT 138,135: LEFT 138, 145: TOP 138, 18: CAPTION 138, "Droite" CONTAINER_OPTION 140: PARENT 140, 50: TOP 140, TOP(135)+50: LEFT 140, 5: WIDTH 140, 215: HEIGHT 140, 40 CAPTION 140, " Couleur texte: " OPTION 141: PARENT 141,140: LEFT 141, 5: TOP 141, 18: CAPTION 141, "Noir" OPTION 142: PARENT 142,140: LEFT 142, 55: TOP 142, 18: CAPTION 142, "Rouge" OPTION 143: PARENT 143,140: LEFT 143, 115: TOP 143, 18: CAPTION 143, "Vert" OPTION 144: PARENT 144,140: LEFT 144, 165: TOP 144, 18: CAPTION 144, "Bleu" CONTAINER_OPTION 145: PARENT 145, 50: TOP 145, TOP(140)+50: LEFT 145, 5: WIDTH 145, 215: HEIGHT 145, 40 CAPTION 145, " Couleur fond: " OPTION 147: PARENT 147,145: LEFT 147, 5: TOP 147, 18: CAPTION 147, "Blanc" OPTION 148: PARENT 148,145: LEFT 148, 55: TOP 148, 18: CAPTION 148, "Jaune" OPTION 149: PARENT 149,145: LEFT 149, 105: TOP 149, 18: CAPTION 149, "Magenta" OPTION 150: PARENT 150,145: LEFT 150, 165: TOP 150, 18: CAPTION 150, "Cyan" CONTAINER_OPTION 151: PARENT 151, 50: TOP 151, TOP(145)+50: LEFT 151, 5: WIDTH 151, 215: HEIGHT 151, 40 CAPTION 151, "Format nombres: " OPTION 152: PARENT 152, 151: LEFT 152, 5: TOP 152, 18: CAPTION 152, "Normal" OPTION 153: PARENT 153, 151: LEFT 153, 80: TOP 153, 18: CAPTION 153, "Monétaire" BUTTON 51: PARENT 51, 50: TOP 51, TOP(151)+47: LEFT 51, 70: CAPTION 51, "OK" ON_CLICK 51, Dimensions
FORM 60: TOP 60, et+80: LEFT 60, 50: WIDTH 60, 220: HEIGHT 60, 200: HIDE 60 CAPTION 60, "Lignes/Colonnes" ALPHA 160: PARENT 160, 60: TOP 160, 10: CAPTION 160, " Nombre de colonnes:" SPIN 161: PARENT 161, 60: TOP 161, 10: LEFT 161, 120: WIDTH 161, 60 ALPHA 162: PARENT 162, 60: TOP 162, 35: CAPTION 162, " Largeur des colonnes:" SPIN 163: PARENT 163, 60: TOP 163, 35: LEFT 163, 120: WIDTH 163, 60 ALPHA 164: PARENT 164, 60: TOP 164, 65: CAPTION 164, " Nombre de rangées:" SPIN 165: PARENT 165, 60: TOP 165, 65: LEFT 165, 120: WIDTH 165, 60 ALPHA 166: PARENT 166, 60: TOP 166, 90: CAPTION 166, " Hauteur des rangées:" SPIN 167: PARENT 167, 60: TOP 167, 90: LEFT 167, 120: WIDTH 167, 60 BUTTON 168: PARENT 168, 60: TOP 168, 130: LEFT 168, 60: WIDTH 168, 80 CAPTION 168, "OK": ON_CLICK 168, lico MIN 161, 1: MIN 165, 1: MIN 163, 1: MIN 167, 1 MAX 161, 20: MAX 163, 500: MAX 165, 60: MAX 167, 100 POSITION 161, nc: POSITION 163, lc: POSITION 165, nr: POSITION 167, hl ' Dialogue 'impression' FORM 220: TOP 220, et+80: LEFT 220, 100: WIDTH 220, 300: HEIGHT 220, 525: HIDE 220 COLOR 220,180,255,255: CAPTION 220, " - PARAMÈTRES D'IMPRESSION -": BORDER_SMALL 220 ALPHA 239: PARENT 239, 220: TOP 239, 2: LEFT 239, 10 CONTAINER_OPTION 221: PARENT 221, 220: TOP 221, 22: LEFT 221, 10: HEIGHT 221, 40: WIDTH 221, 240 CAPTION 221, " Orientation: ": HIDE 221: ' paramètre orientation plus pris en compte à l'impression OPTION 222: PARENT 222, 221: TOP 222, 16: LEFT 222, 10: CAPTION 222, "Portrait" OPTION 223: PARENT 223, 221: TOP 223, 16: LEFT 223, 100: CAPTION 223, "Paysage" EDIT 224: PARENT 224, 220: TOP 224, 75: LEFT 224, 10: WIDTH 224, 30 ALPHA 225: PARENT 225, 220: TOP 225, 78: LEFT 225, 45: CAPTION 225, "Marge gauche (mm)" mg = 3 EDIT 226: PARENT 226, 220: TOP 226, 75 : LEFT 226, 150: WIDTH 226, 30 ALPHA 227: PARENT 227, 220: TOP 227, 78: LEFT 227, 185: CAPTION 227, "Marge haut (mm)" mh = 3 EDIT 228: PARENT 228, 220: TOP 228, 105: LEFT 228, 10: WIDTH 228, 30 ALPHA 229: PARENT 229, 220: TOP 229, 108: LEFT 229, 45: CAPTION 229, "Largeur (mm)" ON_CHANGE 228, Chw EDIT 230: PARENT 230, 220: TOP 230, 105 : LEFT 230, 150: WIDTH 230, 30 ALPHA 231: PARENT 231, 220: TOP 231, 108: LEFT 231, 185: CAPTION 231, "Hauteur (mm)" ' ON_CHANGE 230, Chh CHECK 240: PARENT 240,220: TOP 240,130: LEFT 240,10: CAPTION 240,"Proportionnel" CHECK 241: PARENT 241,220: TOP 241,130: LEFT 241,150: WIDTH 241,130: CAPTION 241,"Imprimer les lignes" MARK_ON 240: MARK_ON 241
BUTTON 233: PARENT 233, 220: TOP 233, 155: LEFT 233, 100: CAPTION 233, "Aperçu" ON_CLICK 233, optim
wa = 190: ha = INT(297*wa/210): la = 50 PICTURE 232: PARENT 232, 220: TOP 232, 185: LEFT 232, la: WIDTH 232, wa: HEIGHT 232, ha 2D_TARGET_IS 232: 2D_PEN_COLOR 192,192,192: 2D_FILL_COLOR 255,255,220: 2D_RECTANGLE 0,0,wa, ha
BUTTON 234: PARENT 234, 220: TOP 234, 460: LEFT 234, 55: CAPTION 234, "Imprimer" ON_CLICK 234, Valpr BUTTON 235: PARENT 235, 220: TOP 235, 460: LEFT 235, 155: CAPTION 235, "Annuler" ON_CLICK 235, Valpr
GOSUB Majenr
FOR i% = 1 TO maxc: lco(i%) = lc: NEXT i%: ' largeur des colonnes FOR i% = 1 TO maxr: hro(i%) = hl: NEXT i%: ' hauteur des lignes
p = 100: PICTURE p: PICTURE p+1: PICTURE p+2: PICTURE p+3 GOSUB Desgri: ' Pictures p, p+1, p+2 et p+3
od = 200: OPEN_DIALOG od sd = 201: SAVE_DIALOG sd
rc$=CHR$(10) hlp$=CHR$(9)+CHR$(9)+CHR$(9)+" - AIDE DU TABLEUR PANORAMIC -"+rc$ hlp$=hlp$+CHR$(9)+CHR$(9)+CHR$(9)+" =========================="+rc$+rc$ hlp$=hlp$+"Les dimensions initiales du tableau sont fixées arbitrairement dans le programme (20 rangées de"+rc$ hlp$=hlp$+"6 colonnes)."+rc$ hlp$=hlp$+"Couleur des lignes de séparation des cellules: cliquer sur l'outil 'Couleur des lignes', on dispose"+rc$ hlp$=hlp$+"de 5 nuances de gris, du noir au blanc (pas de lignes), en bascule. Cette modification de teinte"+rc$ hlp$=hlp$+"s'applique à l'ensemble du tableau."+rc$ hlp$=hlp$+"Pour modifier globalement les dimensions et les largeurs et hauteurs de cellules, cliquer sur la case"+rc$ hlp$=hlp$+"'L/C' en haut à gauche du tableau."+rc$ hlp$=hlp$+"En cliquant sur l'en-tête d'une colonne, on peut:"+rc$ hlp$=hlp$+"- supprimer cette colonne ou insérer (créer) une nouvelle colonne avant celle-ci."+rc$ hlp$=hlp$+"- ajuster sa largeur et le formatage du texte dans toutes les cellules de cette colonne."+rc$ hlp$=hlp$+"De même, en cliquant sur le numéro d'une rangée on peut:"+rc$ hlp$=hlp$+"- supprimer cette rangée ou insérer une nouvelle rangée avant celle-ci."+rc$ hlp$=hlp$+"- ajuster sa hauteur et le formatage du texte dans toutes les cellules de cette rangée."+rc$+rc$ hlp$=hlp$+"Chaque cellule du tableau peut supporter un formatage individuel:"+rc$ hlp$=hlp$+"- Police, taille et couleur de caractère (noir, rouge, vert ou bleu)."+rc$ hlp$=hlp$+"- Enrichissements du texte: gras, italiques ou souligné."+rc$ hlp$=hlp$+"- Alignement du texte dans la cellule: à gauche, centré ou à droite."+rc$ hlp$=hlp$+"- Couleur du fond (blanc, jaune, magenta, cyan)."+rc$ hlp$=hlp$+"- Formatage des nombres: libre ou monétaire (2 chiffres après la virgule)"+rc$+rc$ hlp$=hlp$+"Attention: le formatage global rangée ou colonne prend le pas sur les formatages individuels des"+rc$ hlp$=hlp$+"cellules, il faut donc éventuellement reprendre le formatage individuel d'une cellule après un"+rc$ hlp$=hlp$+"formatage global."+rc$+rc$ hlp$=hlp$+"SAISIE :"+rc$ hlp$=hlp$+"====="+rc$ hlp$=hlp$+"Pour saisir une valeur dans une cellule, cliquer sur la cellule pour la sélectionner (elle s'encadre"+rc$ hlp$=hlp$+"en rouge), et saisir la valeur dans la zone d'édition (la donnée s'écrit simultanément dans la cellule"+rc$ hlp$=hlp$+"sélectionnée). On peut choisir un format particulier d'inscription dans la cellule en choisissant le"+rc$ hlp$=hlp$+"formatage dans la barre d'outils du haut: enrichissements, alignement, couleur des caractères, couleur"+rc$ hlp$=hlp$+"du fond de la cellule. Le formatage s'effectue en temps réel, après avoir choisi à tout moment le type"+rc$ hlp$=hlp$+"de format."+rc$ hlp$=hlp$+"Fin de saisie: soit 'Enter' (le focus se positionne alors sur la cellule du dessous), soit par appui"+rc$ hlp$=hlp$+"sur une des flèches de direction, ce qui positionne le focus sur la cellule adjacente correspondante,"+rc$ hlp$=hlp$+"soit en cliquant sur une nouvelle cellule quelconque."+rc$+rc$ hlp$=hlp$+"FORMULES :"+rc$ hlp$=hlp$+"========="+rc$ hlp$=hlp$+"On peut saisir des valeurs sous forme de formules précédées du signe égal (=)."+rc$ hlp$=hlp$+"Les formules admises sont :"+rc$ hlp$=hlp$+" - date ou date/heure: =DATE ou =DATEHEURE"+rc$ hlp$=hlp$+" - résultat d'une opération arithmétique entre deux cellules quelconques: =A1+B1, =B4-B5, etc."+rc$ hlp$=hlp$+" on admet les 4 opérations élémentaires:+addition, - soustraction, * multiplication et / division."+rc$ hlp$=hlp$+" - somme d'une suite de cellules consécutives: rangées ou colonnes, de la forme =S(B2,B12), ou"+rc$ hlp$=hlp$+" =S(A5,D5)"+rc$ hlp$=hlp$+"Pour ces opérations, il y a erreur si l'une des cellules concernées est vide ou ne contient pas une"+rc$ hlp$=hlp$+"valeur numérique. Dans ce cas l'anomalie est signalée et l'opération abandonnée."+rc$ hlp$=hlp$+"Pour éviter d'avoir à saisir la même formule dans les lignes successives d'une colonne, il suffit de"+rc$ hlp$=hlp$+"saisir la formule dans la 1ère rangée de la série, puis de sélectionner successivement les cellules"+rc$ hlp$=hlp$+"suivantes et de cliquer sur l'outil 'R' de la barre d'outils. La formule précédente sera réécrite et"+rc$ hlp$=hlp$+"incrémentée."+rc$+rc$ hlp$=hlp$+"SAUVEGARDES :"+rc$ hlp$=hlp$+"============="+rc$ hlp$=hlp$+"Les sauvegardes se font:"+rc$ hlp$=hlp$+" - soit au format classique CSV (sauvegarde lisible par un tableur classique: les champs sont séparés"+rc$ hlp$=hlp$+" par un caractère ';'), mais tout le formatage du texte (couleurs, alignement, enrichissements)"+rc$ hlp$=hlp$+" est perdu."+rc$ hlp$=hlp$+" - soit au format propriétaire TAB, qui enregistre le formatage."+rc$+rc$ hlp$=hlp$+"IMPRESSION :"+rc$ hlp$=hlp$+"=========="+rc$ hlp$=hlp$+"L'impression se fait par l'intermédiaire du module WTP.exe de l'ami Klaus, sous forme d'image."+rc$ hlp$=hlp$+"Pour ce faire, l'image du tableau est préalablement sauvegardée dans un fichier au format bmp,"+rc$ hlp$=hlp$+"c'est cette image qui sera imprimée."+rc$ hlp$=hlp$+"Un aperçu est affiché, on peut alors modifier les marges haut et gauche, ainsi que les"+rc$ hlp$=hlp$+"dimensions de l'image imprimée."+rc$ hlp$=hlp$+"Les valeurs sont données en millimètres."+rc$
FORM 900: TOP 900,80: LEFT 900,200: WIDTH 900,640: HEIGHT 900,640: HIDE 900 COLOR 900,180,255,255: FONT_SIZE 900,10: border_hide 900 LIST 901: PARENT 901,900: WIDTH 901,WIDTH(900): HEIGHT 901,HEIGHT(900)-35 COLOR 901,255,255,180: font_name 901,"Arial" k% = INSTR(hlp$, rc$) WHILE k% > 0 ITEM_ADD 901, LEFT$(hlp$, k%-1): hlp$ = MID$(hlp$, k%+1, 9000) k% = INSTR(hlp$, rc$) END_WHILE BUTTON 902: PARENT 902,900: TOP 902,HEIGHT(900)-30: WIDTH 902,150: LEFT 902,240: CAPTION 902,"OK" ON_CLICK 902, Faide
TIMER 105: TIMER_INTERVAL 105, 100: ON_TIMER 105, Majtx
END ' ==============================================================================
Afmes: TIMER_OFF 105: MESSAGE mes$: TIMER_ON 105 RETURN
Clicol: ' clic dans la rangée du haut (colonnes) TIMER_OFF 105 clc = 1 xs = MOUSE_X_POSITION(p+1) FOR c1 = nc TO 0 STEP -1 IF xs > xc(c1) THEN EXIT_FOR: ' colonne c1 NEXT c1 SHOW 50: TO_FOREGROUND 50 CAPTION 52, "COLONNE: "+CHR$(64+c1) CAPTION 110, "Insérer une colonne": CAPTION 111, "Supprimer la colonne" CAPTION 114, "Largeur de la colonne:" POSITION 115, lco(c1) MARK_ON 136: MARK_ON 141: MARK_ON 147: MARK_ON 152 slc = lco(c1) RETURN
Cliran: ' clic dans la colonne de gauche (rangées) TIMER_OFF 105 clc = 0 ys = MOUSE_Y_POSITION(p+2) FOR r1 = nr TO 0 STEP -1 IF ys > yr(r1) THEN EXIT_FOR: ' rangée r1 NEXT r1 SHOW 50: TO_FOREGROUND 50 CAPTION 52, "RANGÉE: "+STR$(r1) CAPTION 110, "Insérer une rangée": CAPTION 111, "Supprimer la rangée" CAPTION 114, "Hauteur de la rangée:" POSITION 115, hro(r1) MARK_ON 136: MARK_ON 141: MARK_ON 147: MARK_ON 152 shl = hro(r1) RETURN
Insert: IF clc = 1 ' insérer une colonne nc = nc + 1 lco(nc) = lco(nc-1) FOR j% = 1 TO nr FOR i% = nc TO c1 + 1 STEP -1 cel$(j%,i%) = cel$(j%,i%-1) pol$(j%,i%) = pol$(j%,i%-1): siz(j%,i%) = siz(j%,i%-1) enr$(j%,i%) = enr$(j%,i%-1): ali$(j%,i%) = ali$(j%,i%-1) cot$(j%,i%) = cot$(j%,i%-1): cof$(j%,i%) = cof$(j%,i%-1) fnb(j%,i%) = fnb(j%,i%-1) NEXT i% cel$(j%,c1) = "": ' colonne insérée NEXT j% ELSE ' insérer une rangée nr = nr + 1 hro(nr) = hro(nr-1) FOR j% = nr TO r1 + 1 STEP -1 FOR i% = 1 TO nc cel$(j%,i%) = cel$(j%-1,i%) pol$(j%,i%) = pol$(j%-1,i%): siz(j%,i%) = siz(j%-1,i%) enr$(j%,i%) = enr$(j%-1,i%): ali$(j%,i%) = ali$(j%-1,i%) cot$(j%,i%) = cot$(j%-1,i%): cof$(j%,i%) = cof$(j%-1,i%) fnb(j%,i%) = fnb(j%-1,i%) NEXT i% NEXT j% FOR i% = 1 TO nc: cel$(r1,i%) = "": NEXT i%: ' rangée insérée END_IF HIDE 50 GOSUB Desgri GOSUB Descel: ' réaffichage de toutes les cellules sa$ = TEXT$(5) TIMER_ON 105 RETURN
Suppri: IF clc = 1 ' supprimer une colonne i% = MESSAGE_CONFIRMATION_YES_NO("Supprimer la colonne "+CHR$(64+c1)+" ?") IF i% <> 1 THEN HIDE 50: TIMER_ON 105: RETURN nc = nc - 1 IF c1 < (nc+1) FOR j% = 1 TO nr FOR i% = c1 TO nc cel$(j%,i%) = cel$(j%,i%+1) pol$(j%,i%) = pol$(j%,i%+1): siz(j%,i%) = siz(j%,i%+1) enr$(j%,i%) = enr$(j%,i%+1): ali$(j%,i%) = ali$(j%,i%+1) cot$(j%,i%) = cot$(j%,i%+1): cof$(j%,i%) = cof$(j%,i%+1) fnb(j%,i%) = fnb(j%,i%+1) NEXT i% NEXT j% END_IF ELSE ' supprimer une rangée i% = MESSAGE_CONFIRMATION_YES_NO("Supprimer la rangée "+STR$(r1)+" ?") IF i% <> 1 THEN HIDE 50: TIMER_ON 105: RETURN nr = nr - 1 IF r1 < (nr+1) FOR j% = r1 TO nr FOR i% = 1 TO nc cel$(j%,i%) = cel$(j%+1,i%) pol$(j%,i%) = pol$(j%+1,i%): siz(j%,i%) = siz(j%+1,i%) enr$(j%,i%) = enr$(j%+1,i%): ali$(j%,i%) = ali$(j%+1,i%) cot$(j%,i%) = cot$(j%+1,i%): cof$(j%,i%) = cof$(j%+1,i%) fnb(j%,i%) = fnb(j%+1,i%) NEXT i% NEXT j% END_IF END_IF HIDE 50 GOSUB Desgri GOSUB Descel: ' réaffichage de toutes les cellules sa$ = TEXT$(5) TIMER_ON 105 RETURN
LinColn: ' clic sur la case 'L/C' TIMER_OFF 105 POSITION 161, nc: POSITION 165, nr SHOW 60: TO_FOREGROUND 60 RETURN
lico: HIDE 60 nc1 = POSITION(161): lc1 = POSITION(163): nr1 = POSITION(165): hl1 = POSITION(167) IF nc1 = nc AND nr1 = nr AND lc1 = lc AND hl1 = hl THEN RETURN nc = nc1: nr = nr1: lc = lc1: hl = hl1 FOR c = 1 TO nc: lco(c) = lc: NEXT c FOR r = 1 TO nr: hro(r) = hl: NEXT r FOR r = 1 TO nr FOR c = 1 TO nc IF pol$(r,c) = "" THEN pol$(r,c) = "Arial" IF siz(r,c) < 7 THEN siz(r,c) = 10 NEXT c NEXT r GOSUB Desgri GOSUB Descel c = 1: r = 1: GOSUB Newcel: ' case sélectionnée SET_FOCUS 5 TIMER_ON 105 RETURN
Desgri: lt = 0: FOR c = 1 TO nc: lt = lt + lco(c): NEXT c ht = 0: FOR r = 1 TO nr: ht = ht + hro(r): NEXT r wp = lcl + lt + 3: hp = het + ht + 3: ' largeur et hauteur du picture w0 = wp + 20: IF w0 > 1200 THEN w0 = 1200 IF w0 < 640 THEN w0 = 640 h0 = hp + et + 70 WIDTH 0, w0: HEIGHT 0, h0 ' rangée de titre des colonnes TOP p+1, yet: LEFT p+1, lcl+2: WIDTH p+1, lt: HEIGHT p+1, het y1 = het: x1 = lcl 2D_TARGET_IS p+1: PRINT_TARGET_IS p+1 2D_FILL_COLOR 230,230,230: 2D_PEN_COLOR 0,0,0 x = 0 FOR c = 1 TO nc 2D_RECTANGLE x, 0, x+lco(c)+1, het+1 PRINT_LOCATE x+lco(c)/2, 3: PRINT CHR$(64+c) xc(c) = x: x = x + lco(c) NEXT c ON_CLICK p+1, Clicol TOP p+2, yet+het: LEFT p+2, 2: WIDTH p+2, lcl: HEIGHT p+2, ht 2D_TARGET_IS p+2: PRINT_TARGET_IS p+2 2D_FILL_COLOR 230,230,230: 2D_PEN_COLOR 0,0,0 y = 0: ' colonne de titre des rangées FOR r = 1 TO nr 2D_RECTANGLE 0, y, lcl+1, y+hro(r)+1 PRINT_LOCATE lcl/2-5, y+3: PRINT RIGHT$(" "+STR$(r),2) yr(r) = y: y = y + hro(r) NEXT r ON_CLICK p+2, Cliran TOP p, yet+het: LEFT p, lcl+2: WIDTH p, lt: HEIGHT p, ht ON_CLICK p, Clic2cr ' case L/C TOP p+3, yet: LEFT p+3, 2: WIDTH p+3, lcl: HEIGHT p+3, het PRINT_TARGET_IS p+3: FONT_BOLD p+3: PRINT_LOCATE 4,3: PRINT "L/C" ON_CLICK p+3, LinColn: HINT p+3,"Nombre/Format des Lignes/Colonnes" ' cellules individuelles 2D_TARGET_IS p: 2D_FILL_COLOR rf, gf, bf: 2D_PEN_COLOR clig,clig,clig GOSUB Deslign c = 1: r = 1: GOSUB Newcel SET_FOCUS 5 RETURN
Deslign: 2D_TARGET_IS p: 2D_PEN_COLOR clig,clig,clig FOR c = 1 TO nc 2D_LINE xc(c), 0, xc(c), ht NEXT c: 2D_LINE lt-1, 0, lt-1, ht FOR r = 1 TO nr 2D_LINE 0, yr(r), lt, yr(r) NEXT r: 2D_LINE 0, ht-1, lt, ht-1 RETURN
Suplign: scl = clig: clig = 255 GOSUB Deslign clig = scl RETURN
Coulig: clig = clig + 64: IF clig > 256 THEN clig = 0 IF clig = 256 THEN clig = 255 GOSUB Deslign RETURN
Descel: ini% = 1 FOR r = 1 TO nr FOR c = 1 TO nc GOSUB Majpr IF LEN(a$) > 2 AND LEFT$(a$, 1) = "=" THEN GOSUB Formules GOSUB Pra NEXT c NEXT r ini% = 0 RETURN
Dimensions: lc1 = lco(c1): hl1 = hro(r1) IF clc = 1 lco(c1) = POSITION(115): ' clic sur une colonne ELSE hro(r1) = POSITION(115): ' clic sur une rangée END_IF HIDE 50 ' enrichissements de la colonne ou de la rangée entière d$ = "": b$ = "L": ct$ = "N": cf$ = "W" IF CLICKED(131) = 1 THEN d$ = d$ + "G": ' enrichissement des caractères IF CLICKED(132) = 1 THEN d$ = d$ + "I" IF CLICKED(133) = 1 THEN d$ = d$ + "S" IF CLICKED(136) = 1 THEN rc$ = "L": ' alignement dans la cellule IF CLICKED(137) = 1 THEN rc$ = "C" IF CLICKED(138) = 1 THEN rc$ = "R" IF CLICKED(141) = 1 THEN ct$ = "N": ' couleur de caractères IF CLICKED(142) = 1 THEN ct$ = "R" IF CLICKED(143) = 1 THEN ct$ = "G" IF CLICKED(144) = 1 THEN ct$ = "B" IF CLICKED(147) = 1 THEN cf$ = "W": ' couleur de fond IF CLICKED(148) = 1 THEN cf$ = "Y" IF CLICKED(149) = 1 THEN cf$ = "M" IF CLICKED(150) = 1 THEN cf$ = "C" k% = 0: ' format nombres IF CLICKED(153) = 1 THEN k% = 1 IF clc = 1 FOR i% = 1 TO maxr enr$(i%,c1) = d$: ali$(i%,c1) = rc$: cot$(i%,c1) = ct$: cof$(i%,c1) = cf$ fnb(i%,c1) = k% NEXT i% ELSE FOR i% = 1 TO maxc enr$(r1,i%) = d$: ali$(r1,i%) = rc$: cot$(r1,i%) = ct$: cof$(r1,i%) = cf$ fnb(r1,i%) = k% NEXT i% END_IF IF lco(c1) <> lc1 OR hro(r1) <> hl1 THEN GOSUB Desgri GOSUB Descel: ' réaffichage de toutes les cellules TIMER_ON 105 RETURN
Majtx: a$ = TEXT$(5): IF a$ = sa$ THEN RETURN sa$ = a$: cel$(r, c) = a$ GOSUB Pra RETURN
Clic2cr: xs = MOUSE_X_POSITION(p): ys = MOUSE_Y_POSITION(p) FOR c1 = nc TO 0 STEP -1 IF xs > xc(c1) THEN EXIT_FOR: ' colonne c1 NEXT c1 FOR r1 = nr TO 0 STEP -1 IF ys > yr(r1) THEN EXIT_FOR: ' rangée r1 NEXT r1 sc1 = c1: sr1 = r1 a$ = cel$(r,c) IF LEN(a$) > 2 AND LEFT$(a$, 1) = "=" THEN GOSUB Formules: GOSUB Pra ' désélect la cellule courante GOSUB Desel c = sc1: r = sr1: ' nouvelle cellule sélectionnée GOSUB Newcel RETURN
Desel: ' désélectionner la cellule courante r, c 2D_TARGET_IS p: 2D_FILL_COLOR rf, gf, bf x1 = x+lco(c): y1 = y+hro(r) 2D_PEN_COLOR clig,clig,clig 2D_LINE x,y,x1,y: 2D_POLY_TO x1, y1 2D_POLY_TO x,y1: 2D_POLY_TO x,y RETURN
Newcel: ' sélectionner la nouvelle cellule r, c CAPTION 4, CHR$(64+c)+STR$(r) GOSUB Majpr IF ini% = 1 THEN RETURN GOSUB Majenr: GOSUB Majali: GOSUB Majcou: GOSUB Majfnb a$ = cel$(r, c): GOSUB Pra IF ini% = 2 THEN RETURN TEXT 5, cel$(r, c) SET_FOCUS 5 RETURN
Majpr: ' prise en compte des paramètres de la cellule r, c couf$ = cof$(r, c) IF couf$ = "W" THEN rf = 255: gf = 255: bf = 255 IF couf$ = "Y" THEN rf = 255: gf = 255: bf = 0 IF couf$ = "M" THEN rf = 255: gf = 192: bf = 255 IF couf$ = "C" THEN rf = 192: gf = 255: bf = 255 2D_TARGET_IS p: 2D_FILL_COLOR rf, gf, bf y = yr(r): x = xc(c): x1 = x+lco(c)+1: y1 = y+hro(r)+1 IF ini% = 0 2D_PEN_COLOR 255,0,0 2D_RECTANGLE x, y, x1, y1: ' cellule qui a le focus ELSE 2D_PEN_COLOR clig,clig,clig 2D_RECTANGLE x, y, x1, y1 END_IF a$ = cel$(r, c) PRINT_TARGET_IS p fnt$ = pol$(r,c): IF fnt$ = "" THEN fnt$ = "Arial": pol$(r,c) = fnt$ FONT_NAME p, fnt$: TEXT 2, fnt$ sz = siz(r, c): IF sz < 6 OR sz > 30 THEN sz = 10: siz(r, c) = sz FONT_SIZE p, sz: TEXT 3, STR$(sz) alig$ = ali$(r, c) b$ = enr$(r, c) FONT_BOLD_OFF p: FONT_ITALIC_OFF p: FONT_UNDERLINE_OFF p: gras = 0: ital = 0: soul = 0 IF INSTR(b$, "G") > 0 THEN gras = 1: FONT_BOLD p IF INSTR(b$, "I") > 0 THEN ital = 1: FONT_ITALIC p IF INSTR(b$, "S") > 0 THEN soul = 1: FONT_UNDERLINE p cout$ = cot$(r, c) FONT_COLOR p, 0,0,0 IF cout$ = "R" THEN FONT_COLOR p, 255,0,0 IF cout$ = "G" THEN FONT_COLOR p, 0,255,0 IF cout$ = "B" THEN FONT_COLOR p, 0,0,255 fnbr = fnb(r, c): ' format nombres RETURN
Key: t% = KEY_DOWN_CODE IF t%=13 OR t%=37 OR t%=38 OR t%=39 OR t%=40 ' touche 'Enter' ou flèches: changement de cellule a$ = TEXT$(5): cel$(r,c) = a$ IF LEN(a$) > 2 AND LEFT$(a$, 1) = "=" GOSUB Formules: GOSUB Pra END_IF IF (t%=13 OR t%=40) AND r < nr: ' Enter, ou flèche bas GOSUB Desel: r = r + 1: GOSUB Newcel: RETURN ELSE IF t% = 38 and r > 1: ' flèche haut GOSUB Desel: r = r - 1: GOSUB Newcel: RETURN ELSE IF t% = 37 AND c > 1: ' flèche gauche GOSUB Desel: c = c - 1: GOSUB Newcel: RETURN ELSE IF t% = 39 AND c < nc: ' flèche droite GOSUB Desel: c = c + 1: GOSUB Newcel: RETURN END_IF END_IF END_IF END_IF ELSE ' touche alphanumérique: entrée de donnée END_IF GOSUB Pra RETURN
Pra: ' affichage de a$ dans la cellule r,c FONT_NAME p, fnt$: FONT_SIZE p, sz GOSUB Formon xp = x+3: yp = y+2 IF alig$ <> "L" a$ = TRIM$(a$) l = TEXT_WIDTH(a$, p): ' -> l = largeur de a$, en pixels IF l < lco(c) IF alig$ = "C" xp = x+(lco(c)-l)/2: ' centré ELSE xp = x+lco(c)-l-2: ' cadré à droite END_IF END_IF END_IF IF xp < x OR yp < y mes$ = "Anomalie de positionnement:"+rc$ mes$ = mes$ + "x="+STR$(xp)+" y="+STR$(yp)+rc$ mes$ = mes$ + "a$="+a$+" (lg="+STR$(LEN(a$))+")"+rc$ mes$ = mes$ + "Forcé à 0,0 dans la cellule." GOSUB Afmes xp = x+3: yp = y+2 END_IF 2D_TARGET_IS p: 2D_FILL_COLOR rf, gf, bf: 2D_PEN_COLOR 255,255,255 2D_RECTANGLE x+1,y+1,x+lco(c),y+hro(r) PRINT_LOCATE xp, yp: PRINT a$ RETURN
Formon: IF fnbr = 0 THEN RETURN ' format monétaire FOR i% = 1 TO LEN(a$) j% = ASC(MID$(a$, i%, 1)) IF j% > 57 OR j% < 44 THEN RETURN IF j% = 45 OR j% = 47 THEN RETURN NEXT i% k% = INSTR(a$, ","): IF k% > 0 THEN a$ = LEFT$(a$, k%-1) +"."+MID$(a$, k%+1,100) i% = 100*VAL(a$): a$ = STR$(i%/100): ' pour ne conserver que 2 décimales éventuelles k% = INSTR(a$, ".") IF k% < 1 a$ = a$ + ",00" ELSE a$ = LEFT$(a$, k%-1) + "," + MID$(a$, k%+1, 100) IF INSTR(a$, ",") = LEN(a$)-1 THEN a$ = a$ + "0" END_IF RETURN
Chpol: ' choix de police TIMER_OFF 105 LIST 85: TOP 85, 20: HEIGHT 85, 200: WIDTH 85, 150: FONT_NAMES_LOAD 85 Attp: WAIT 200: IF CLICKED(85) = 0 THEN GOTO Attp fnt$ = ITEM_READ$(85, ITEM_INDEX(85)) DELETE 85 TEXT 2, fnt$ FONT_NAME p, fnt$: pol$(r, c) = fnt$ TIMER_ON 105 RETURN
Chsiz: ' choix de taille de police TIMER_OFF 105 SHOW 85 RETURN
Atts: sz = VAL(ITEM_READ$(85, ITEM_INDEX(85))) HIDE 85 TEXT 3, STR$(sz) FONT_SIZE p, sz: siz(r, c) = sz a$ = TEXT$(5): GOSUB Pra TIMER_ON 105 RETURN
Enrich: SELECT NUMBER_CLICK CASE 6: gras = ABS(gras - 1): GOSUB Majenr: goto rc CASE 7: ital = ABS(ital - 1): GOSUB Majenr: goto rc CASE 8: soul = ABS(soul - 1): GOSUB Majenr: goto rc CASE 70: cout$ = "N": GOSUB Majcou: goto rc CASE 71: cout$ = "R": GOSUB Majcou: goto rc CASE 72: cout$ = "G": GOSUB Majcou: goto rc CASE 73: cout$ = "B": GOSUB Majcou: goto rc CASE 74: couf$ = "W": GOSUB Majcou: goto rc CASE 75: couf$ = "Y": GOSUB Majcou: goto rc CASE 76: couf$ = "M": GOSUB Majcou: goto rc CASE 77: couf$ = "C": GOSUB Majcou: goto rc CASE 78: fnbr = ABS(fnbr - 1): GOSUB Majfnb: goto rc CASE 89: alig$ = "L": GOSUB Majali: goto rc CASE 90: alig$ = "C": GOSUB Majali: goto rc CASE 91: alig$ = "R": GOSUB Majali: goto rc END_SELECT rc: GOSUB Majpr: GOSUB Pra RETURN
Majenr: FOR i% = 6 TO 8 2D_TARGET_IS i%: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2 SELECT i% CASE 6: IF gras = 1 THEN 2D_PEN_COLOR 0,0,0 CASE 7: IF ital = 1 THEN 2D_PEN_COLOR 0,0,0 CASE 8: IF soul = 1 THEN 2D_PEN_COLOR 0,0,0 END_SELECT 2D_LINE 1,1,19,1: 2D_POLY_TO 19,19: 2D_POLY_TO 1,19: 2D_POLY_TO 1,0 NEXT i% d$ = "": IF gras = 1 THEN d$ = "G" IF ital = 1 THEN d$ = d$ + "I" IF soul = 1 THEN d$ = d$ + "S" enr$(r, c) = d$ RETURN
Majali: IF alig$ = "" THEN alig$ = "L" FOR i% = 89 TO 91 2D_TARGET_IS i%: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2 SELECT i% CASE 89: IF alig$ = "L" THEN 2D_PEN_COLOR 0,0,0 CASE 90: IF alig$ = "C" THEN 2D_PEN_COLOR 0,0,0 CASE 91: IF alig$ = "R" THEN 2D_PEN_COLOR 0,0,0 END_SELECT 2D_LINE 1,1,19,1: 2D_POLY_TO 19,19: 2D_POLY_TO 1,19: 2D_POLY_TO 1,0 NEXT i% ali$(r, c) = alig$ RETURN
Majcou: IF cout$ = "" THEN cout$ = "N" IF couf$ = "" THEN couf$ = "W" FOR i% = 70 TO 77 2D_TARGET_IS i%: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2 SELECT i% CASE 70: IF cout$ = "N" THEN 2D_PEN_COLOR 0,0,0: FONT_COLOR p,0,0,0 CASE 71: IF cout$ = "R" THEN 2D_PEN_COLOR 0,0,0: FONT_COLOR p,255,0,0 CASE 72: IF cout$ = "G" THEN 2D_PEN_COLOR 0,0,0: FONT_COLOR p,0,255,0 CASE 73: IF cout$ = "B" THEN 2D_PEN_COLOR 0,0,0: FONT_COLOR p,0,0,255 CASE 74: IF couf$ = "W" THEN 2D_PEN_COLOR 0,0,0: rf=255:gf=255:bf=255 CASE 75: IF couf$ = "Y" THEN 2D_PEN_COLOR 0,0,0: rf=255:gf=255:bf=0 CASE 76: IF couf$ = "M" THEN 2D_PEN_COLOR 0,0,0: rf=255:gf=192:bf=255 CASE 77: IF couf$ = "C" THEN 2D_PEN_COLOR 0,0,0: rf=192:gf=255:bf=255 END_SELECT 2D_LINE 1,1,19,1: 2D_POLY_TO 19,19: 2D_POLY_TO 1,19: 2D_POLY_TO 1,0 NEXT i% cot$(r, c) = cout$: cof$(r, c) = couf$ RETURN
Majfnb: 2D_TARGET_IS 78: 2D_PEN_COLOR 192,192,192: 2D_PEN_WIDTH 2 IF fnbr = 1 THEN 2D_PEN_COLOR 0,0,0 2D_LINE 1,1,19,1: 2D_POLY_TO 19,19: 2D_POLY_TO 1,19: 2D_POLY_TO 1,0 fnb(r, c) = fnbr RETURN
savc: ' enregistrement au format CSV, sans les enrichissements DIR_DIALOG sd, "C:\Temp" FILTER sd, "Fichier csv|*.csv" fc$ = FILE_NAME$(sd) FILE_OPEN_WRITE 1, fc$ FOR j% = 1 TO nr a$ = "" FOR i% = 1 TO nc a$ = a$ + cel$(j%, i%) + ";" NEXT i% FILE_WRITELN 1, LEFT$(a$, LEN(a$)-1) NEXT j% FILE_CLOSE 1 CAPTION 0, fc$ + " - Tableur Panoramic" FILE_SAVE p, fimg$ RETURN
savt: ' enregistrement au format TAB, formatage conservé DIR_DIALOG sd, "C:\Temp" FILTER sd, "Fichier tab|*.tab" ft$ = FILE_NAME$(sd) FILE_OPEN_WRITE 1, ft$ FOR j% = 1 TO nr a$ = "" FOR i% = 1 TO nc a$ = a$ + cel$(j%, i%) a$ = a$ + cars$ + "F=" + pol$(j%, i%) a$ = a$ + cars$ + "S=" + STR$(siz(j%,i%)) a$ = a$ + cars$ + "E=" + enr$(j%, i%) a$ = a$ + cars$ + "A=" + ali$(j%, i%) a$ = a$ + cars$ + "C=" + cot$(j%, i%) a$ = a$ + cars$ + "B=" + cof$(j%, i%) a$ = a$ + cars$ + "M=" + STR$(fnb(j%,i%)) + ";" NEXT i% FILE_WRITELN 1, LEFT$(a$, LEN(a$)-1) NEXT j% FILE_CLOSE 1 CAPTION 0, ft$ + " - Tableur Panoramic" FILE_SAVE p, fimg$ RETURN
new: CAPTION 0, " - Tableur Panoramic" ini% = 1 fnt$ = "Arial": sz = 10: gras = 0: ital = 0: soul = 0 FOR r = 1 TO nr FOR c = 1 TO nc cel$(r,c) = "" pol$(r,c) = fnt$: siz(r,c) = sz: enr$(r,c) = "": ali$(r,c) = "L": cot$(r,c) = "N" cof$(r,c) = "W" GOSUB Newcel NEXT c NEXT r ini% = 0 r = 1: c = 1: GOSUB Newcel RETURN
opn: DIR_DIALOG od, "C:\Temp" FILTER od, "Fichiers csv, tab|*.csv;*.tab" ft$ = FILE_NAME$(od): IF ft$ = "_" THEN RETURN IF FILE_EXISTS(ft$) = 0 MESSAGE "Fichier " + ft$ + " non trouvé !": RETURN END_IF CAPTION 0, ft$ + " - Tableur Panoramic" FILE_OPEN_READ 1, ft$ r = 0 WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$: r = r + 1: c = 1 ra: k% = INSTR(a$, ";") IF k% > 0 b$ = LEFT$(a$, k%-1): a$ = MID$(a$, k%+1, 500) ELSE b$ = a$: a$ = "" END_IF ' valeurs implicites si non présentes: Arial 10, noir pol$(r,c)="Arial": siz(r,c)=10: enr$(r,c)="": ali$(r,c)="L" :cot$(r,c)="N" k% = INSTR(b$, cars$): ' séparateur des enrichissements IF k% > 0 cel$(r,c) = LEFT$(b$, k%-1) rb: d$ = UPPER$(MID$(b$, k%+1, 2)): b$ = MID$(b$, k%+3, 500) k% = INSTR(b$, cars$) IF k% > 0 arg$ = LEFT$(b$, k%-1): b$ = MID$(b$, k%, 500): k% = 1 ELSE arg$ = b$ END_IF IF d$ = "F=" pol$(r,c) = arg$ ELSE IF d$ = "S=" siz(r,c) = VAL(arg$) ELSE IF d$ = "E=" enr$(r,c) = arg$ ELSE IF d$ = "A=" ali$(r,c) = arg$ ELSE IF d$ = "C=" cot$(r,c) = arg$ ELSE IF d$ = "B=" cof$(r,c) = arg$ ELSE IF d$ = "M=" fnb(r,c) = VAL(arg$) END_IF END_IF END_IF END_IF END_IF END_IF END_IF IF k% > 0 THEN GOTO rb ELSE cel$(r, c) = b$ END_IF IF a$ <> "" THEN c = c + 1: GOTO ra END_WHILE FILE_CLOSE 1 ' Report dans les cellules (affichage) ini% = 2 FOR r = 1 TO nr FOR c = 1 TO nc a$ = cel$(r,c): GOSUB Majpr IF LEN(a$) > 2 AND LEFT$(a$, 1) = "=" THEN GOSUB Formules GOSUB Pra NEXT c NEXT r ini% = 0: r = 1: c = 1: GOSUB Newcel RETURN
der: ' non implémenté
RETURN
savs: ' non implémenté
RETURN
impr: ' désélectionner momentanément la case r,c avant sauvegarde TIMER_OFF 105 GOSUB Desel FILE_SAVE p, fimg$: ' sauvegarde du tableau entier au format bmp GOSUB Newcel SHOW 220: TO_FOREGROUND 220 lim = INT(lt*.351): him = INT(ht*.351): ' image imprimée, en mm a$ = "Image "+STR$(lt)+" x "+STR$(ht)+" pixels (" a$ = a$ + STR$(lim)+" x "+STR$(him)+" mm à 600 dpi)" CAPTION 239, a$ MARK_ON 222 TEXT 224, STR$(mg): TEXT 226, STR$(mh) TEXT 228, STR$(lim): TEXT 230, STR$(him) RETURN
Chw: IF CHECKED(240) = 1 a$ = TEXT$(228): IF a$ = "" THEN RETURN i% = VAL(a$)*ht/lt TEXT 230, STR$(i%) END_IF RETURN
Chh: IF CHECKED(240) = 1 a$ = TEXT$(230): IF a$ = "" THEN RETURN i% = VAL(a$)*lt/ht TEXT 228, STR$(i%) END_IF RETURN
optim: IF CLICKED(223) = 1 ori = 1: ' paysage ha = 190: wa = INT(297*ha/210): la = 5: ra = ha/210 ELSE IF CLICKED(222) = 1 ori = 0: ' portrait wa = 190: ha = INT(297*wa/210): la = 50: ra = wa/210 END_IF END_IF LEFT 232, la: WIDTH 232, wa: HEIGHT 232, ha 2D_TARGET_IS 232: 2D_PEN_COLOR 180,180,180: 2D_FILL_COLOR 255,255,220: 2D_FILL_SOLID: 2D_RECTANGLE 0,0,wa,ha 2D_FILL_COLOR 180,180,180 2D_FILL_HORIZONTAL mg = VAL(TEXT$(224)) mh = VAL(TEXT$(226)) lim = VAL(TEXT$(228)) him = VAL(TEXT$(230)) 2D_RECTANGLE INT(mg*ra),INT(mh*ra),INT((mg+lim)*ra),INT((mh+him)*ra) RETURN
Valpr: IF CLICKED(235) = 1 THEN HIDE 220: RETURN: ' Annuler lpr = 200: ' largeur de l'image à l'impression hpr = 210*ht/lt: ' hauteur de l'image FILE_OPEN_WRITE 1, fpr$ IF ori = 0: ' l'orientation n'est plus accessible dans wtp.exe ... ' FILE_WRITELN 1, "<#orientation=Portrait#>" ELSE ' FILE_WRITELN 1, "<#orientation=Paysage#>" END_IF FILE_WRITELN 1, "<#unit_mm=on,23.62#>": ' unités mm, à 600 dpi FILE_WRITELN 1, "<#image=" + chr$(34)+fimg$+chr$(34)+ ","+STR$(mg)+","+STR$(mh)+","+STR$(lim)+","+STR$(him)+"#>" FILE_CLOSE 1 IF MESSAGE_CONFIRMATION_YES_NO("Prêt pour impression ?") = 1 IF CHECKED(241) = 0 ' pas d'impression des lignes GOSUB Suplign FILE_SAVE p, fimg$ GOSUB Deslign END_IF EXECUTE_WAIT prt$ + "/file=" + fpr$
END_IF HIDE 220 FILE_DELETE fpr$ TIMER_ON 105 RETURN
Copform: IF r = 1 THEN RETURN b$ = cel$(r-1, c): IF LEFT$(b$, 1) <> "=" THEN RETURN b$ = MID$(b$, 2, 100) d$ = "+": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO rf d$ = "-": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO rf d$ = "*": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO rf d$ = "/": k% = INSTR(b$, d$): IF k% <1 THEN RETURN rf: IF LEFT$(b$, 1) = "=" THEN b$ = MID$(b$, 2, 100): k% = k%-1 a1$ = LEFT$(b$, k%-1): a2$ = MID$(b$, k%+1, 100) c1 = ASC(LEFT$(a1$, 1)) - 64: r1 = VAL(MID$(a1$, 2, 2)) c2 = ASC(LEFT$(a2$, 1)) - 64: r2 = VAL(MID$(a2$, 2, 2)) IF r2 <> r1 THEN RETURN: ' pas la même rangée a$ = "="+LEFT$(a1$,1)+STR$(r1+1)+d$+LEFT$(a2$,1)+STR$(r1+1) TEXT 5, a$ RETURN
quit: TERMINATE RETURN
copy: CLIPBOARD_STRING_COPY TEXT$(5) RETURN
paste: TEXT 5, CLIPBOARD_STRING_PASTE$ RETURN
cut: CLIPBOARD_STRING_COPY TEXT$(5) TEXT 5, "": GOSUB Majtx RETURN
Formules: ' formules de la forme: =date, =dateheure, =A2+A3 b$ = UPPER$(MID$(a$, 2, LEN(a$)-1)) IF b$ = "DATE" THEN a$ = DATE$: RETURN IF b$ = "DATEHEURE" THEN a$ = DATE$ + " " + LEFT$(TIME$, 5): RETURN IF LEFT$(b$, 2) = "S(" b$ = MID$(b$, 3, LEN(b$)-3) d$ = ",": k% = INSTR(b$, d$): IF k% < 1 THEN RETURN ELSE d$ = "+": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO rd d$ = "-": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO rd d$ = "*": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO rd d$ = "/": k% = INSTR(b$, d$): IF k% <1 THEN RETURN END_IF rd: IF LEFT$(b$, 1) = "=" THEN b$ = MID$(b$, 2, 100): k% = k%-1 a1$ = LEFT$(b$, k%-1): a2$ = MID$(b$, k%+1, 100) c1 = ASC(LEFT$(a1$, 1)) - 64: r1 = VAL(MID$(a1$, 2, 2)) c2 = ASC(LEFT$(a2$, 1)) - 64: r2 = VAL(MID$(a2$, 2, 2)) IF d$ = "," v = 0 IF c1 = c2: ' somme dans une colonne FOR rr = r1 TO r2 b$ = cel$(rr, c1) GOSUB Eval: IF vnn% > 0 THEN rx=rr: cx=c1: GOSUB Alerte: RETURN v = v + va NEXT rr ELSE IF r1 = r2: ' somme dans une rangée FOR cc = c1 TO c2 b$ = cel$(r1, cc) GOSUB Eval: IF vnn% > 0 THEN rx=r1: cx=cc: GOSUB Alerte: RETURN v = v + va NEXT cc ELSE RETURN END_IF END_IF ELSE b$ = cel$(r1,c1): GOSUB Eval: IF vnn% > 0 THEN rx=r1: cx=c1: GOSUB Alerte: RETURN v1 = va b$ = cel$(r2,c2): GOSUB Eval: IF vnn% > 0 THEN rx=r2: cx=c2: GOSUB Alerte: RETURN v2 = va IF d$ = "+" v = v1 + v2 ELSE IF d$ = "-" v = v1 - v2 ELSE IF d$ = "*" v = v1 * v2 ELSE IF d$ = "/" v = v1 / v2 ELSE RETURN END_IF END_IF END_IF END_IF END_IF a$ = STR$(v) RETURN
Eval: IF LEFT$(b$, 1) = "=" ' c'est une formule b$ = UPPER$(MID$(b$, 2, LEN(b$)-1)) d$ = "+": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO re d$ = "-": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO re d$ = "*": k% = INSTR(b$, d$): IF k% > 0 THEN GOTO re d$ = "/": k% = INSTR(b$, d$): IF k% <1 THEN RETURN re: a1$ = LEFT$(b$, k%-1): a2$ = MID$(b$, k%+1, 100) c11 = ASC(LEFT$(a1$, 1)) - 64: r11 = VAL(MID$(a1$, 2, 2)) c12 = ASC(LEFT$(a2$, 1)) - 64: r12 = VAL(MID$(a2$, 2, 2)) b$ = cel$(r11,c11) k% = INSTR(b$, ","): IF k%>0 THEN b$ = LEFT$(b$, k%-1)+"."+MID$(b$, k%+1, 100) GOSUB Verif: IF vnn% > 0 THEN RETURN v1 = VAL(b$) b$ = cel$(r12,c12) k% = INSTR(b$, ","): IF k%>0 THEN b$ = LEFT$(b$, k%-1)+"."+MID$(b$, k%+1, 100) GOSUB Verif: IF vnn% > 0 THEN RETURN v2 = VAL(b$) IF d$ = "+" va = v1 + v2 ELSE IF d$ = "-" va = v1 - v2 ELSE IF d$ = "*" va = v1 * v2 ELSE IF d$ = "/" va = v1 / v2 ELSE RETURN END_IF END_IF END_IF END_IF ELSE ' c'est une valeur k% = INSTR(b$, ","): IF k%>0 THEN b$ = LEFT$(b$, k%-1)+"."+MID$(b$, k%+1, 100) GOSUB Verif: IF vnn% > 0 THEN RETURN va = VAL(b$) END_IF RETURN
Verif: vnn% = 0 IF b$ = "" THEN vnn% = 2: RETURN: ' chaîne vide FOR i% = 1 TO LEN(b$) IF ASC(MID$(b$, i%, 1)) > 57 THEN vnn% = 1: RETURN: ' caractère non numérique NEXT i% RETURN
Alerte: mes$ = "Cellule "+CHR$(cx+64)+STR$(rx)+":"+CHR$(10) mes$ = mes$ + "Opération sur chaîne vide ou non numérique" GOSUB Afmes RETURN
Trace: mes$ = mes$ + " - " + a1$ + " - " + a2$: GOSUB Afmes RETURN
Aide: TIMER_OFF 105: SHOW 900: TO_FOREGROUND 900 RETURN
Faide: HIDE 900: TIMER_ON 105 RETURN
Dernière édition par JL35 le Dim 6 Mai 2012 - 14:43, édité 5 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 0:11 | |
| Bravo JL35, super propre (Bon l'aide est un peu grande pour mon écran, mais bon, ce n'est pas le plus important ) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 0:46 | |
| Merci Jicehel, et tu as raison pour l'aide, j'ai justement pensé à ton écran, il va falloir que j'adopte la méthode numéro 2 (aide en plusieurs morceaux). | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 13:29 | |
| Bravo JL35, tout çà sans utiliser GRID,
Il y a un petit bug, en voulant tester l'insertion d'une colonne, j'ai découvert que la cellule A1 est recopiée en G20 si on insère une colonne en B.
Assez sympa tout de même
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 17:49 | |
| Salut Jean-Claude, bizarre, je n'arrive pas à reproduire ce défaut dans les conditions que tu décris ???
PS minute, effectivement il y a un truc...
Tu as mis le doigt dessus, effectivement un petit rafraîchissement qui manquait. J'en ai profité pour diminuer la hauteur de l'aide (maintenant c'est à défilement), pour que ça tienne dans l'écran riquiqui de Jicehel. C'est à jour dans le 1er post. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 20:54 | |
| Ah oui, avec l'aide dans une liste, c'est propre et ça tient bien à l'écran Merci JL35 pour la modif | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 21:03 | |
| Merci pour la rectif, un petit code à étudier de près car tout en Panoramic.
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Sam 5 Mai 2012 - 21:11 | |
| Sauf l'impression, mais il n'y a pas les fonctions dans Panoramic. Heureusement Klaus était là !
22h55 petite correction: parfois, en passant d'une case à l'autre à l'aide des touches flèches, le contenu de la précédente était transporté dans la nouvelle. | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 6 Mai 2012 - 12:51 | |
| Il faut admettre que c'est pas mal du tout ! Dommage qu'on ne puisse pas faire la même chose avec grid ! Dommage aussi qu'il y ait des bugs (là, évidemment, c'est mon côté critique qui ressort...) comme erreur 62 à la ligne 782 quand on essaie de changer la taille de la police ou des fois où ce que tape dans l'edit n'apparaît pas la cellule et le R, comment on le fait marcher ? Là, JL35 va m'inviter à continuer à me faire rare ! ........................ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Dim 6 Mai 2012 - 13:45 | |
| Certe, il manque un test Object_Exists sur la liste puisque le Delete est bien là, le timer est bien désactivé, mais on peut avoir la procédure événementielle du clic sur un bouton par exemple qui le remette en route et permette de sortir de la boucle. Quand l'utilisateur reclic alors sur la liste de police, la liste est déjà définie ... Un truc vicieux auquel il faudra penser dans la définition d'interface. Pourtant, le programme me paraissait super propre est bien pensé, mais c'est vrai que l'utilisateur peut être un peu tordu (voir vicieux .... ) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un petit tableur (bis) Dim 6 Mai 2012 - 14:05 | |
| Jicehel à dit: - Citation :
- mais c'est vrai que l'utilisateur peut être un peu tordu (voir vicieux .... )
Si tu penses à JJN4, je confirme | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Dim 6 Mai 2012 - 14:06 | |
| Mon cher jjn4, si tu trouves des anomalies dans le programme, ça prouve au moins que tu l'as essayé, et ça fait toujours plaisir ! - Pour la taille de police, j'ai un peu revu ma copie, plus d'objet temporaire qui est un peu scabreux, le clic dans la taille de police fait apparaître une liste de tailles, dans laquelle on choisit la nouvelle, on clique, et ça met à jour la cellule concernée. Évidemment, si la taille est trop grande pour la cellule, ça déborde (provisoirement) ! - La fonction 'R' (recopie) sert à recopier la formule incrémentée d'une cellule dans la cellule suivante de la même colonne. C'est utile pour une série d'additions par exemple: Ici la cellule C1 contient =A1+B1 Je clique sur C2, puis 'R', ça met =A2+B2 dans la cellule Puis je clique successivement sur C3 et R (-> = A3+B3) et ainsi de suite. Les valeurs contenues dans les opérandes (Ax et Bx) doivent être des valeurs numériques, sinon erreur. Ça évide d'avoir à ressaisir la formule à chaque ligne. C'est (bien) expliqué dans l'aide. Les formules n'admettent que deux opérandes (=A1+B1+C1 n'est pas admis) C'est un peu simpliste, peut-être un peu gadget, mais bon... Et comme dit Jicehel, il faudrait bien penser l'interface avant de commencer à coder, mais bon, comme toujours je code un petit truc, puis je me prends au jeu et ça enfle, et je n'ai pas le courage de tout reprendre à zéro. Vas-y jjn4, ne te gêne pas pour critiquer (je le dis comme ça, mais je sais très bien que tu n'as pas besoin de mes encouragements ) Salut Jean_Claude, on s'est croisés... mais tu as bien raison ! edit 14h35 oups, j'ai simplement oublié de mettre le source à jour... c'est fait. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Dim 6 Mai 2012 - 16:09 | |
| Absolument Jean-Claude, je pensait à lui et il a bien raison de l'être, ça sert à ça les tests Au mieux, ça permet d'améliorer le programme, au pire, l'auteur dit qu'il n'en n'a rien à faire ou entre les 2, que ça demande trop de boulot et qu'il n'a pas le courage de s'y atteler (et là, je ne pense à personne en particulier, je reste général, car je pense que l'on est un peu comme ça, soit en a envie de modifier pour diverses raisons, soit pas ...). Bon comme je frise le hors sujet, je fais court mais cette proposition d'organisation et les test de jjn4 permettent de voir comment programmer une interface utilisateurs et les problèmes que l'on peut rencontrer, c'est très intéressant. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Dim 6 Mai 2012 - 16:56 | |
| Si on programme pour soi (c'est toujours mon cas au début d'un programme), on n'est pas trop exigeant sur la présentation et on peut s'accommoder de quelques petites malfaçons, mais dès qu'on diffuse le programme on s'expose aux critiques, c'est tout à fait normal, et bénéfique.
Si je chante sous la douche, ça ne trouble que moi (un peu mon épouse ?), mais si je me produis sur scène (franchement je ne vous souhaite pas une telle avanie) je dois accepter les remarques (même désobligeantes, quoique... mais pas les tomates !)
Dernière édition par JL35 le Dim 6 Mai 2012 - 17:19, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Dim 6 Mai 2012 - 17:15 | |
| | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 7 Mai 2012 - 10:22 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Lun 7 Mai 2012 - 13:36 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Lun 7 Mai 2012 - 18:33 | |
| Bon, une nouvelle version pour embêter jjn4.
- D'abord le rajout de quelques Timer_off/Timer_on, en effet ça manquait à certains endroits et ça causait quelques soucis (j'en ai peut-être oublié ?).
- Amélioration de la sauvegarde au format 'propriétaire' .tab: le nombre et la taille des cellules sont également sauvegardés et restaurés (en plus du formatage): on retrouve l'image telle qu'au moment de la sauvegarde.
- Dans la rubrique 'impression', ajout de la visualisation de la taille réelle d'une cellule donnée à l'impression, en fonction des paramètres donnés. C'est à dire la taille affichée sur l'écran de la cellule est la même en mm que celle résultant de l'impression sur la feuille. Ça suppose un facteur à changer en fonction de la taille de son écran: variable rho. Par exemple chez moi: écran de 1920 pixels de large pour 518 mm: rho = 1920/518 = 3,7065
- Et quelques bricoles.
(et demain direction Madrid pour la semaine, y'aura peut-être enfin un peu de soleil...) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Lun 7 Mai 2012 - 18:59 | |
| Ben moi, je dis continues de l'embéter comme ça et bon voyage aussi pour demain pour peut-être trouver le soleil ... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un petit tableur (bis) Mar 8 Mai 2012 - 11:56 | |
| Je viens de tester, à priori çà marche bien. Désolé JJN4 , j'ai pas trouvé de BUG Alors comme il faut bien embêter l'auteur , je me suis dit qu'il aurait été sympa d'avoir la possibilité de faire un tableau (grille)... A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Un petit tableur (bis) Mar 8 Mai 2012 - 12:18 | |
| Et aussi quelques tableaux croisés dynamiques ... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| | | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mer 9 Mai 2012 - 11:29 | |
| Oui, allez, on va dire que c'est bon ! Allez, JL35, t'as fait du super boulot !!! Mais vous avez raison, il faut lui dire qu'il manque ceci ou cela, parce que sinon, après, il va croire que c'est parfait, et après, il va avoir les chevilles qui enflent, qui enflent, qui enflent... Et puis après... PAFFFFFFF !!!!! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un petit tableur (bis) Sam 12 Mai 2012 - 18:21 | |
| - Citation :
- Jean Claude
Alors comme il faut bien embêter l'auteur, je me suis dit qu'il aurait été sympa d'avoir la possibilité de faire un tableau (grille)...
Jicehel Et aussi quelques tableaux croisés dynamiques ...
Jean Claude Ouais t'as raison, et même la sélection de plusieurs cellules, et aussi un onglet développement avec des boutons, Options, Combo (en Panoramic, bien sûr)..... Allez-y les gars, vous gênez pas ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un petit tableur (bis) Sam 12 Mai 2012 - 20:55 | |
| C'est bien ce qu'on fait Mais comme on est sympa: tu peux prendre ton temps | |
| | | Contenu sponsorisé
| Sujet: Re: Un petit tableur (bis) | |
| |
| | | | Un petit tableur (bis) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |