Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Table mémoire

4 réponses
Avatar
PimSaVie
Bonjour

J'ai un petit soucis avec une table m=E9moire

Je la remplis =E0 partir d'un fichier excel.; Comme je ne connais pas =E0
l'avance le nombre de colonne ni le nom des colonnes que j'aurais,
j'ai cr=E9=E9 une cinquantaine de colonne appel=E9 "COL_1", "COL_2"..
invisible.. je les rend visible et modifie le titre en fonction du
fichier excel

Pour remplir ma table, j'utilise le code suivant

POUR nIndLigne =3D nPremi=E8reLigne A nNbLignes
// Ajouter une ligne
TableAjoute(TABLE_Association)
nIndAssociation++

// Parcours de colonne en colonne
POUR nIndice =3D 1 A nNbColonnes
// R=E9cup=E9rer la donn=E9e de la colonne
sDonn=E9es =3D xlsDonn=E9e(gfnIdFichier, nIndLigne,
nIndice, Faux)

// Ajouter la donn=E9e dans la table
SI sDonn=E9es <> "" ALORS {"Col_" + nIndice,indChamp}
[nIndAssociation]..Valeur =3D sDonn=E9es
FIN
FIN

La premi=E8re fois, je n'ai aucun soucis. La seconde fois, en mode
d=E9bug, je vois bien chaque donn=E9es s'affichait mais la ligne
pr=E9c=E9dente et effacer (et en debug, je vois que le tableajoute()
efface la ligne pr=E9c=E9dente pour la copier sur la nouvelle))
J'ai essay=E9 TableAjouteLigne, TableIns=E8reLigne, mais rien n'y fait

est-ce que vous auriez d=E9j=E0 rencontr=E9 ce probl=E8me?

Karine

4 réponses

Avatar
Jean-Yves BURLOT
PimSaVie avait prétendu :
Bonjour

J'ai un petit soucis avec une table mémoire

Je la remplis à partir d'un fichier excel.; Comme je ne connais pas à
l'avance le nombre de colonne ni le nom des colonnes que j'aurais,
j'ai créé une cinquantaine de colonne appelé "COL_1", "COL_2"..
invisible.. je les rend visible et modifie le titre en fonction du
fichier excel

Pour remplir ma table, j'utilise le code suivant

POUR nIndLigne = nPremièreLigne A nNbLignes
// Ajouter une ligne
TableAjoute(TABLE_Association)
nIndAssociation++

// Parcours de colonne en colonne
POUR nIndice = 1 A nNbColonnes
// Récupérer la donnée de la colonne
sDonnées = xlsDonnée(gfnIdFichier, nIndLigne,
nIndice, Faux)

// Ajouter la donnée dans la table
SI sDonnées <> "" ALORS {"Col_" + nIndice,indChamp}
[nIndAssociation]..Valeur = sDonnées
FIN
FIN

La première fois, je n'ai aucun soucis. La seconde fois, en mode
débug, je vois bien chaque données s'affichait mais la ligne
précédente et effacer (et en debug, je vois que le tableajoute()
efface la ligne précédente pour la copier sur la nouvelle))
J'ai essayé TableAjouteLigne, TableInsèreLigne, mais rien n'y fait

est-ce que vous auriez déjà rencontré ce problème?

Karine



Pourquoi ne pas utiliser ChampsClone() :
- un tableau de 1 colonne
- (a) tu la clone en fonction du nombre de colone de Excel-1
- tu rempli ta table

Avant de remplir à nouveau tu supprime les champs clonés :
- ChampsSupprime()
- et tu recommence en (a)

bon dev

--
Jean-Yves BURLOT
suivre ce lien pour répondre :
http://cerbermail.com/?zbQ7wrKUbu
;-)
--
Avatar
Albert
Bonjour,

Une table contenant 1 colonne < a cloner >

ID = xlsOuvre("C:MonRépertoireFichier.XLS")

// [< Construction dynamique de la table >]

nNbreCol = xlsNbColonne(ID)

POUR i = 1 A nNbreCol

// [< Création colonne + titre >]
ChampClone(TABLE_Nom.ACLoner,"COL_" + i)
{"TABLE_Nom.COL_"+i,indChamp}..Libellé = xlsTitreColonne(Id, i)
{"TABLE_Nom.COL_"+i,indChamp}..Largeur = 70
{"TABLE_Nom.COL_"+i,indChamp}..Visible = Vrai

FIN

// [< Récupérer les données du fichier Xls et les charger dans la
table

nNbreLgn = xlsNbLigne(ID)

POUR nLigne = 1 A nNbreLgn

POUR nCol = 1 a xlsNbColonne(ID)

{"TABLE_Nom.COL_" + nCol, indChamp} = xlsDonnée(ID, nLigne,
nCol)

FIN

FIN

Espérant vous avoir aidé

Cordialement

Albert
Avatar
Heckel Olivier
N'y a-t-il pas dans la suite du code la fonction TABLETRIE qui est utilisée
? Si oui il faut la désactiver avant de compléter la table.


"PimSaVie" a écrit dans le message de news:

Bonjour

J'ai un petit soucis avec une table mémoire

Je la remplis à partir d'un fichier excel.; Comme je ne connais pas à
l'avance le nombre de colonne ni le nom des colonnes que j'aurais,
j'ai créé une cinquantaine de colonne appelé "COL_1", "COL_2"..
invisible.. je les rend visible et modifie le titre en fonction du
fichier excel

Pour remplir ma table, j'utilise le code suivant

POUR nIndLigne = nPremièreLigne A nNbLignes
// Ajouter une ligne
TableAjoute(TABLE_Association)
nIndAssociation++

// Parcours de colonne en colonne
POUR nIndice = 1 A nNbColonnes
// Récupérer la donnée de la colonne
sDonnées = xlsDonnée(gfnIdFichier, nIndLigne,
nIndice, Faux)

// Ajouter la donnée dans la table
SI sDonnées <> "" ALORS {"Col_" + nIndice,indChamp}
[nIndAssociation]..Valeur = sDonnées
FIN
FIN

La première fois, je n'ai aucun soucis. La seconde fois, en mode
débug, je vois bien chaque données s'affichait mais la ligne
précédente et effacer (et en debug, je vois que le tableajoute()
efface la ligne précédente pour la copier sur la nouvelle))
J'ai essayé TableAjouteLigne, TableInsèreLigne, mais rien n'y fait

est-ce que vous auriez déjà rencontré ce problème?

Karine
Avatar
PimSaVie
On 9 fév, 08:57, "Heckel Olivier" wrote:
N'y a-t-il pas dans la suite du code la fonction TABLETRIE qui est utilis ée
? Si oui il faut la désactiver avant de compléter la table.



Effectivement il y avais un TableTrie. Merci ça marche super bien
maintenant :o)

Et merci Albert pour l'astuce du champ Clone. Je n'ai pas le courage
de recommencer mon code, mais j'utilise souvent le principe et la
prochaine fois j'utiliserais votre méthode :o)