PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → simplifier opération répétitive
simplifier opération répétitive
Débuté par David, 07 mar. 2019 06:30 - 2 réponses
Posté le 07 mars 2019 - 06:30
Bonjour à tous,

J'ai une fenêtre avec une 20aine de champs de saisie, A l'issue du remplissage, j'aimerais les enregistrer dans un tableau excel.
voici mon code:
DocExcel est un xlsDocument// Création du document Excel
xlsAjouteFeuille(DocExcel,"Feuille_1",1)// Ajout d'une feuille
DocExcel..Feuille=1// On se place sur la feuille 1
DocExcel..Ligne[1]..Cellule[1] =SAI_1..ValeurAffichée // Ajout d'une valeur dans la case[1,1] de la feuille 1
DocExcel..Ligne[2]..Cellule[1] =SAI_2..ValeurAffichée // Ajout d'une valeur dans la case[2,1] de la feuille 1
DocExcel..Ligne[3]..Cellule[1] =SAI_3..ValeurAffichée // Ajout d'une valeur dans la case[3,1] de la feuille 1
DocExcel..Ligne[4]..Cellule[1] =SAI_4..ValeurAffichée // Ajout d'une valeur dans la case[4,1] de la feuille 1

// etc pour l'ensemble des champs

xlsSauve(DocExcel,"C:\sauvegarde.xls")// Sauvegarde du document
xlsFerme(DocExcel)// Fermeture du document


ça fonctionne mais c'est long d'autant qu'il y aura par la suite d'autres valeurs à ajouter, je débute sous windev, et je pense qu'il doit être possible de simplifier cette action avec quelque chose du genre:

POUR SAI_1 à SAI_20
Remplir DocExcel..Ligne[1]..Cellule[1] à DocExcel..Ligne[20]..Cellule[1]

Bon bien sûr ça marche pas comme ça, mais je suis sûr que c'est possible de faire mieux.
Merci pour votre aide.
David
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 07 mars 2019 - 08:00
Bonjour,

Pour faire ce que tu souhaites, il faut utiliser les indirections. Ton code donne ceci:
POUR i = 1 À 20
DocExcel[i,1] = {"SAI_"+i,indChamp}
FIN


--
Cordialement,

Philippe SAINT-BERTIN
Posté le 07 mars 2019 - 17:01
Super, c'est exactement ce que je cherchais.
Merci beaucoup.