PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → importation depuis Excel - Débutant-
importation depuis Excel - Débutant-
Débuté par fred, 18 mar. 2006 08:39 - 3 réponses
Posté le 18 mars 2006 - 08:39
bonjour,
grace à l'exemple "WD Fonctions XLS", j'importe un fichier Excel dans une table.
Comment puis-je écrire chaque ligne de la table dans mon fichier?
Chaque colonne est liée à une rubrique de mon fichier. A chaque écriture d'une ligne importée, j'ais mis ce code là, sans succès:

EcranVersFichier()
HAjoute(Data)
SI HDoublon() ALORS
Erreur("Ce numéro existe déjà")
FIN

Auriez-vous une idée?
Merci d'avance
cordialement
fred
Posté le 18 mars 2006 - 13:04
Bonjour,

Pensez a utiliser la classe CExcel qui est très pratique et que vous trouverez dans
l'exemple < WD Pilotage de Excel >

A titre d'exemple, voici un bout de code de récupération de données d'une feuille Excel
- affichage dans une table
- et enregistrement des données dans un fichier < Situation.Fic >


// [< Initialisation des variables >]
// Les données sont reprises dans des champs de saisies préfixés : SAI_.....

// Chemin complet du fichier Excel [< NomFichier.xls >]
sNomXls = SansEspace(SAI_FichXls)

// Exercice
sExerc = SAI_Exercice

// Feuille du classeur Excel : Exemple < A2006 >
sFeuille = ChaîneConstruit("A%1", SansEspace(sExerc))


// Nbre de ligne dans tableau Excel
nNbLgn = SAI_NbLgn

// [< Jauge >]
gnValeur = 1
gnValMaxEncours = nNbLgn

Lib_Copie = " Mise en place du programme "


// [< Instanciation de la classe Excel >]
Ex1 est un objet CExcel

// [< Ouverture du classeur / Sélectionner la feuille >]
Ex1:Ouvrir(sNomXls)
Ex1:SelectionnerFeuille(sFeuille)

// Ligne de départ dans Excel
nLgn = 4

POUR Ind=1 A nNbLgn

sCode = Ex1:sLireValeur("B" + nLgn )
sIdCpte = Ex1:sLireValeur("C" + nLgn )

// [< Libellé >]
SI sCode = "#1" ALORS
sLibCompte = Ex1:sLireValeur("D" + nLgn )
sLibTotal = ""
sLibelle = sLibCompte
FIN

// [< Total >]
SI sCode = "#2" ALORS
sLibCompte = ""
sLibTotal = Ex1:sLireValeur("D" + nLgn )
sLibelle = sLibTotal
bValide = Vrai
FIN

nMontant = Ex1:sLireValeur("F" + nLgn )
nMontant = Arrondi(nMontant,2)

// [< Séparation >]
SI sCode = "#3" ALORS
sIdCpte = ""
TableAjouteLigne(TabComptes, sCode)
bValide = Faux
FIN

Lib_Copie = ChaîneConstruit("Copie des données : %1 %2", sIdCpte, sLibelle)

SI sCode = "#1" ET nMontant <> 0 ALORS bValide = Vrai

SI bValide = Vrai ALORS

TableAjouteLigne(TabComptes, sCode, sIdCpte, sLibCompte, sLibTotal, nMontant)

// [< Enregistrer Données >]
Situation.Exercice = sExerc
Situation.Code = sCode
Situation.IDCompte = sIdCpte
Situation.LibCompte = sLibelle
Situation.Montant = nMontant

SI PAS HAjoute(Situation) ALORS
Ouvre("MsgBox", " Erreur", ">>> Impossible d'ajouter un enregistrement"+RC+HErreurInfo(), 1)
FIN

FIN

bValide = Faux

// [< Jauge >]
ProgresJauge()
Multitâche(5)

// Ligne suivante
nLgn++
FIN

// Libérer [< Objet Excel >]
Ex1:Quitter()

J'espère avoir pu vous aider

Cordialement

Albert
Posté le 18 mars 2006 - 13:04
Table non liée au fichier:
Pour Indice=1 à TableOccurrence(Table)
--Fichier.Rub1=Table.Col1[Indice]
--Fichier.Rub2=Table.Col2[Indice]
--Fichier.Rub3=Table.Col3[Indice]
--...
--HAjoute(Fichier)
--Si HErreur()Alors ...
Fin

Table liée au fichier, colonnes liées à une rubrique du fichier:
Pour Indice=1 à TableOccurrence(Table)
--TableSelectPlus(Table,Indice)
--EcranVersFichier
--HAjoute(Fichier)
--Si HErreur()Alors ...
Fin
Posté le 18 mars 2006 - 17:36
Bonjour,

J'ai créé un utilitaire simple et pratique pour ça ( import/export vers Excel ) ceux qui sont interessés à l'avoir qu'ils me passent leur E-mail ..


Bonne dev.

Ali Hindi : AliDev7@yahoo.fr