Re: Source de donnee

Posté par Anonyme le 30/1/2006 22:52:56
J'avais ça sous la main. Fonctionne impec.
1/ Sélectionnez le fichier Excel qui contient les données.
- fonction fSélecteur()
2/ Décochez l'option si la feuille Excel est sans titres de colonnes.
3/ Cliquez sur ...
Attention : importation temporaire :
- pour sauvegarde provisoire :voir 4
- pour transfère définitif : voir 5
4/ En cliquant sur "Export vers Excel" vous modifiez la feuille Excel avec le contenu ci-dessus
5/ Sélectionnez le fichier HyperFile à compléter


//////////////////////////////////////////////////////
nIdFic est un entier // identifiant du fichier Excel
nColonne est un entier // colonne en cours
nLigne est un entier // ligne en cours
nPremièreLigne est un entier // première ligne à lire
sLigne est une chaîne // contenu de la ligne en cours
nNbLignes est un entier // nombre de lignes du tableau Excel
sNomFic est une chaîne // nom du fichier XLS
sDonnée est une chaîne
nNbColonnes = 0 // Nombre colonnes du tableau Excel

//--------- Champ ou est stocké le nom du fichier XLS
SI Sais_Fic1~="" ALORS
Erreur("Sélectionnez d'abord un fichier Excel !")
RETOUR
SINON
sNomFic = Sais_Fic1
FIN


Sablier(Vrai)

//--------- Vérification de l'existence du fichier
SI fTaille(sNomFic)<=0 ALORS
Erreur("Impossible de trouver le fichier spécifié")
RETOUR
FIN
//--------- On tente d'ouvrir le fichier
nIdFic = xlsOuvre(sNomFic)
SI nIdFic=-1 ALORS
Erreur("Impossible d'ouvrir le fichier.",...
"Vérifier qu'il n'est pas déjà ouvert sur une autre application.",xlsMsgErreur(nIdFic))
RETOUR
FIN
//--------- On vide la table
TableSupprimeTout(TableImport)

//--------- On initialise le nom des colonnes
POUR nColonne=1 A NBCOL
TableImport[1][nColonne]..Libellé = ""
{"Colonne"+nColonne}..Visible=Vrai
FIN
//--------- Nombre de lignes et de colonnes du tableau Excel
// la variables nNbColonnes est générale car sert
// aussi au transfert
// dans le fichier HyperFile
nNbLignes = xlsNbLigne(nIdFic)
nNbColonnes = xlsNbColonne(nIdFic)
//--------- Si la première ligne contient les titres de colonne
SI Inter_Titre[1] = Vrai ALORS
// On modifie les titres de colonne
POUR nColonne=1 A nNbColonnes
TableImport[1][nColonne]..Libellé = xlsDonnée(nIdFic, 1, nColonne)
FIN
// Première ligne contenant les données
nPremièreLigne = 2
SINON
// Première ligne contenant les données
nPremièreLigne = 1
FIN
//--------- On remplit la table mémoire
POUR nLigne = nPremièreLigne A nNbLignes
sLigne = ""
TableAjouteLigne(TableImport)
// On construit la ligne lue
POUR nColonne = 1 A nNbColonnes
sDonnée = xlsDonnée(nIdFic, nLigne, nColonne, Faux)
{"Colonne"+nColonne}[TableOccurrence(TableImport)]= sDonnée
// si c'est un numérique
SI NumériqueVersChaine(Val(sDonnée))=sDonnée ALORS
{"Colonne"+nColonne}..CadrageHorizontal=iDroite
SINON
{"Colonne"+nColonne}..CadrageHorizontal=iGauche
FIN
FIN
FIN

//--------- Les autres colonnes sont invisibles
POUR nColonne = nNbColonnes+1 A NBCOL
{"Colonne"+nColonne}..Visible=Faux
FIN
FenRepeint()
//--------- Fermeture du fichier
xlsFerme(nIdFic)

Sablier(Faux)


// 5/- Pour la récup dans un HF ici 2 fichiers
// CptesGénéraux et CptesIndividuel

i, j, nPos sont des entiers
sNomCol,sLigne,sData sont des chaînes

//--------- Parcours de la table
nPos = TableSelect(TableImport)
SI nPos < 1 ALORS nPos = 1
POUR i = 1 A TableImport..Occurrence
// Sélection de la ligne
TableSelectPlus(TableImport,i)
//--------- Pour chaque colonne
sLigne=""
POUR j = 1 A nNbColonnes
sNomCol=TableEnumèreColonne(TableImport, j)
sLigne+={sNomCol}[i]+"/"
FIN
//--------- Transfert dans le fichier choisi
SI ChaîneOccurrence(Sais_Fic1,"balgenerale") > 0 ALORS
CptesGénéraux.NumCpteGen=ExtraitChaîne(sLigne,1,"/",DepuisDébut)
sLigne = Droite(sLigne,Taille(sLigne)-Position(sLigne,"/",DepuisDébut))
CptesGénéraux.LibCpteGen=ExtraitChaîne(sLigne,1,"/",DepuisDébut)
HAjoute(CptesGénéraux)
FIN
SI ChaîneOccurrence(Sais_Fic1,"balfournisseurs") > 0 ALORS
CptesIndividuel.NumCpteInd =ExtraitChaîne(sLigne,1,"/",DepuisDébut)
sLigne = Droite(sLigne,Taille(sLigne)-Position(sLigne,"/",DepuisDébut))
CptesIndividuel.LibCpteIndivi =ExtraitChaîne(sLigne,1,"/",DepuisDébut)
sLigne = Droite(sLigne,Taille(sLigne)-Position(sLigne,"/",DepuisDébut))
CptesIndividuel.NumCpteGen=ExtraitChaîne(sLigne,1,"/",DepuisDébut)
HAjoute(CptesIndividuel)
FIN
FIN

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=3395&post_id=14633