Bonjour à tous,
je travail actuellement sur des bilans d'entreprises du site bilansgratuits.com, et j'aimerais pouvoir récupérer les données du bilan et du compte de résultat dans une base de données access. J'ai récupérer un code d'un ami qui me permet de récupérer certaines données, (nom de l'entreprise, adresse…) mais j'ai un problème quand je veux récupérer les données du tableau à savoir les informations vraiment utiles a l'analyse financière. En effet, je n'arrive pas à me repérer avec les balises <TD>.
En gros j'ai une fonction StrGetbal qui retourne la chaine de caractère comprise entre deux balises.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
function  strGetBal (Chaine, balDeb, balFin, Cond,debug,balDebPar,balFinPar)
{
    var i,P,PP,LgF,lgD,j,VP;
    var Resu=new Array(),strRes;
	if (!Chaine) return "";
 
	if (debug && Cond=="!!") Cond=null;
    P=0;
    strRes='';
    LgF=balFin.length;
    LgD=balDeb.length;
    if(!balDebPar) switch(balDeb.substring(0,1)) {
	    case '(' :
		    balDebPar='(';
		    balFinPar=')';
		    break;
	    case '{':
		    balDebPar='{';
		    balFinPar='}';
		    break;
		case '<':
			if (balDeb.length>1) {
				balDebPar=balDeb.split(" ")[0]; //if(balDeb.substring(balDeb.length-1,balDeb.length)!='>') 
				//else balDebPar=balDeb;
				balFinPar=balFin;
			} else {
				balDebPar='<';
				balFinPar='>';
			}
		    break;
	    default :
	        balDebPar=balDeb;
	        balFinPar=balFin;
	    break;
    }
    // les chaines ont toujours une egalite en HTML
    //Chaine=Balise
    i=0;
    if (debug) stderr.WriteLine("GetBal "+balDeb+" "+balFin+" :"+balDebPar+balFinPar);
 
    while(P>=0) {
	    P=Chaine.indexOf(balDeb,P);
	    PP=Chaine.indexOf(balFin,P+LgD);
	    if (debug) stderr.WriteLine('P='+P+' PP='+PP+' LgD='+LgD);
	    if(PP>=0 && P>=0) { 
	        //if(LgD>1 && balFinPar!=balDeb.substring(balDeb.length,1)) ;
		    if (PP - P - LgD >= 0) {
			    VP=Chaine.indexOf(balDebPar,P+LgD);
			    if (debug) stderr.WriteLine('VP='+VP+'|'+balDebPar+'|'+' PP='+PP);
			    while (VP >=0 && VP<PP) {
			        if (debug) stderr.WriteLine('VP='+VP+' PP='+PP);
				    PP=Chaine.indexOf(balFinPar,PP+LgF);	
				    VP=Chaine.indexOf(balDebPar,VP+LgD);
			    }
			    if (PP - P - LgD >= 0){
					var bal=Chaine.substring(P+LgD,PP+1)
 
					if (!Cond || (Cond.substring(0,1)!='!' && bal.indexOf(Cond)>=0) || (Cond.substring(0,1)=='!' && bal.indexOf(Cond.substring(1))<0)) {		
						Resu[i]=Chaine.substring(P+LgD,PP);
						if (debug) stderr.WriteLine('Bal ='+Resu[i]+'...');
						i++;
					} else if (debug) stderr.WriteLine("Bal trouve mais non retenu sur critere "+Cond);
			    }
		    }
	   	    P+=(PP - P);
	    } else {
		    P=-1 ;
	    }	
    }
 
    Chaine=""
 
	strRes=Resu.join('{s}');
    // for(j=0;j<i;j++) {
	    // strRes+=Resu[j];
	    // if (j!=i-1)  strRes+="{s}";//+String.fromCharCode(13)+String.fromCharCode(10)+String.fromCharCode(13)+String.fromCharCode(10);
    // }
	if (debug) stderr.WriteLine(strRes+ " "+Resu.length);
    return strRes;	
}
cette fonction me récupère bien les données comprises entre des balises. Je peux imbriquer la fonction quand il ya des balises similaires.
Par contre c'est pour récupérer les données d'un tableau que je ne sais pas comment l'utiliser.

Par exemple le bilan de cette entreprise:
http://www.bilansgratuits.fr/entrepr...0939800019.htm

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<div class="container_bilans">
<div>
		<h2 class="titleBI accroche">Bilan Actif</h2>
		<table cellspacing="0" class="container_tableIF sautdepage">
			<thead>
				<tr><th class='tableTd13'></th><th>2012<br/>(en Euros)</th><th>2011<br/>(en Euros)</th><th>2010<br/>(en Euros)</th><th>Variation<br/>2012/2011<br/>(en %)</th><th class=''>Variation<br/>2012/2010<br/>(en %)</th></tr></thead>
			<tbody class="rightElement">
				<tr class='titreIF '><td class="leftElement">Actif immobilisé net</td><td>663</td><td>0</td><td>0</td><td class='colorGreen'>NS</td><td class='colorGreen'>NS</td></tr><tr><td class="leftElement">Immos incorporelles</td><td>0</td><td>0</td><td>0</td><td class='colorGreen'>NS</td><td class='colorGreen'>NS</td></tr><tr class=''><td class="leftElement">Immos corporelles</td><td>663</td><td>0</td><td>0</td><td class='colorGreen'>NS</td><td class='colorGreen'>NS</td></tr><tr><td class="leftElement">Immos financières</td><td>0</td><td>0</td><td>0</td><td class='colorGreen'>NS</td><td class='colorGreen'>NS</td></tr><tr class='titreIF '><td class="leftElement">Actif circulant net</td><td>15 277</td><td>12 319</td><td>16 760</td><td class='colorGreen'>24,01</td><td class='colorRed'>-8,85</td></tr><tr><td class="leftElement">Stocks et en-cours nets</td><td>0</td><td>0</td><td>0</td><td class='colorGreen'>NS</td><td class='colorGreen'>NS</td></tr><tr class=''><td class="leftElement">Avances et acomptes nets</td><td>0</td><td>0</td><td>0</td><td class='colorGreen'>NS</td><td class='colorGreen'>NS</td></tr><tr><td class="leftElement">Créances nettes</td><td>3 898</td><td>3 394</td><td>3 130</td><td class='colorGreen'>14,85</td><td class='colorGreen'>24,54</td></tr><tr class=''><td class="leftElement">Placement et disponibilités</td><td>11 379</td><td>8 925</td><td>13 630</td><td class='colorGreen'>27,50</td><td class='colorRed'>-16,52</td></tr><tr class='titreIF '><td class="leftElement">TOTAL ACTIF</td><td>15 939</td><td>12 319</td><td>16 760</td><td class='colorGreen'>29,39</td><td class='colorRed'>-4,90</td></tr></tbody>
		</table>
	</div>

Par exemple, si je veux récupérer la valeur 663 dans une variable, je ne vois pas comment faire car il y a pleins de balises <td></td>.

SI vous avez une idée ou une méthode pour résoudre mon problème je suis preneur.

Cdlt