|
Started by Calimero, Sep., 23 2023 11:42 AM - 13 replies |
| |
| | | |
|
| |
Registered member 90 messages |
|
Posted on September, 23 2023 - 11:42 AM |
Bonjour,
Après avoir cherché un peu partout, je ne trouve pas de fonction enregistrer sous depuis un fichier Excel. ( je suis sous windev 25 )
Voilà mon souci :
J'ouvre un fichier "modèle", je remplis mes lignes mais je voudrais que ce modèle ne se modifie pas mais s'enregistre sous un autre nom de fichier.
N'y a t-il pas une fonction du style XLSSauveVers ?
Sinon, je pourrais aussi remplir mon fichier modèle, l'enregistrer mais il faudrait que toutes les lignes se suppriment la prochaine fois que je l'ouvre avant de le remplir de nouveau et ça, je ne sais pas faire du style supprime toutes les lignes depuis la ligne 3 jusqu'à la fin du fichier.
Dans l'attente de vos lumières
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Registered member 4,256 messages |
|
Posted on September, 25 2023 - 10:05 AM |
Bonjour, Cette option est disponible via la méthode EnregistrerSous de la classe cExcel (disponible dans l'exemple didactique WD Pilotage de Excel.)
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 90 messages |
|
Posted on September, 25 2023 - 12:49 PM |
Bonjour Voroltinquo,
Mon post date de 2 jours, je ne comprends pas qu'il soit seulement en ligne.
En tout cas, merci pour ta réponse.
J'avais trouvé dans un premier temps la commande pour supprimer les lignes de mon fichier Excel mais c'était extrêmement long pour 60 000 lignes. J'ai donc pris connaissance de cette fameuse Classe Excel.
On ne trouve pas beaucoup d'aide sur le sujet, surtout pour la syntaxe mais j'ai réussi à me débrouiller avec l'exemple sur windev. J'ouvre donc mon modèle, je remplis et je sauvegarde sous un autre nom. Tout ce que je voulais, c'est très rapide et ça m'apprend encore une nouvelle fonctionnalité.
Merci et à bientôt |
| |
| |
| | | |
|
| | |
| |
Registered member 4,256 messages |
|
Posted on September, 25 2023 - 2:59 PM |
En ce qui concerne le post, il n'y a pas de modo le WE. Pas de modo, pas de publication. Il en va de même le soir, ou tôt le matin.
-- Il y a peut être plus simple, mais, ça tourneMessage modified, September, 25 2023 - 3:00 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 949 messages |
|
Posted on September, 25 2023 - 11:56 PM |
Bonjour, Voroltinquo a apporté la réponse (pas surprenant).  Ceci dit, j'ai lu la solution que tu souhaitais mettre en place dans ta question #1, je cite : Sinon, je pourrais aussi remplir mon fichier modèle, etc... Pas top du tout, en revanche tu aurais pu faire un fCopieFichier du fichier modèle sous un autre nom et ouvrir cette copie pour la modifier.
Bon c'est juste pour info. Cdlt |
| |
| |
| | | |
|
| | |
| |
Registered member 90 messages |
|
Posted on September, 28 2023 - 2:23 PM |
Bonjour à tous,
Je reviens sur la classe Excel. Je cherche partout et je ne trouve pas d'aides sur le sujet. Même dans la doc ( Windev 25 ), on sait que ça existe mais rien de plus. J'ai bien trouvé un post de 2011 mais ça semble assez obsolète, donc si quelqu'un pouvait m'expliquer un peut comment ça fonctionne ou si je peux trouver une aide quelque part. Ne serait ce que sur la syntaxe.
Donc voici ce que je cherche à faire, ouvrir un classeur "Modèle", remplir le classeur, le fermer sans qu'il enregistre mais qu'il enregistre sous un autre nom.
Pour faire ça, j'ai déclaré gpclExcel est un objet dynamique CExcel dans ma fenêtre
j'ai mis en fin d'initialisation gpclExcel = allouer un CExcel(Vrai) gpclExcel:EstVisible()
dans mon bouton, j'ai mis ( je simplifie )
monmodele est un xlsDocument gpclExcel :OuvrirClasseur(monmodele)
i est un entier = 2 HLitPremier(fournisseur)
TANTQUE PAS HEnDehors(fournisseur) i++ gpclExcel:EcrireValeur(i"A",fournisseur.reference) HLitSuivant(fournisseur) FIN
gpclExcel:Enregistrer("C:\Mes Projets\exe\mise a jour\catalogue fournisseur.xlsx") A votre bon coeur  |
| |
| |
| | | |
|
| | |
| |
Registered member 949 messages |
|
Posted on September, 28 2023 - 5:59 PM |
Calimero
Voir ici : xlsSauve (Fonction) https://doc.pcsoft.fr/?1000018057
// On va mettre OK dans la case A 25 MaFeuille[25,"A"] = "OK"
si tu as besoin de gérer la feuille dans le classeur : xlsFeuilleEnCours (Fonction) https://doc.pcsoft.fr/?3080022
pour enregistrer sous, tu donnes le chemin et le nom du fichier (ou un nouveau nom dans le même chemin) Dans ton code, vérifies que le nom n'est pas égal au nom du modèle pour ne pas l'écraser. CdltMessage modified, September, 28 2023 - 6:06 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 90 messages |
|
Posted on September, 28 2023 - 8:05 PM |
Bonjour Cédric,
Encore merci pour ton aide. Je m'étais plutôt focalisé sur les "Classe Excel" mais si je peux faire autrement...
Donc, là, ça fait 2 heures que j'essaye avec xlssauve mais je n'y arrive pas.
Voilà ce que j'ai fait ( en dernier ) parce que j'ai essayé plein de choses différentes.
Est ce que tu saurais corriger? Serait-ce un problème avec xlsFeuilleEnCours ?
Si je n'ouvre pas "miseajour", il me dit qu'il ne le trouve pas
modele est un xlsDocument Fichiermodele est une chaîne = "C:\Mes Projets\Exe\modele\Modèle.xlsx"
miseajour est un xlsDocument fichiermiseajour est une chaîne = "C:\Mes Projets\Exe\MISES A JOUR\mise à jour.xlsx"
miseajour = xlsOuvre(fichiermiseajour,xlsEcriture) modele = xlsOuvre(Fichiermodele,xlsEcriture)
modele [3,"A"] = "OK"
nFeuilleencours est un entier = xlsFeuilleEnCours(modele)
xlsSauve(miseajour)
xlsFerme(modele)
LanceAppliAssociée(fichiermiseajour)
|
| |
| |
| | | |
|
| | |
| |
Registered member 90 messages |
|
Posted on September, 28 2023 - 8:07 PM |
Voroltinquo a écrit :
En ce qui concerne le post, il n'y a pas de modo le WE. Pas de modo, pas de publication. Il en va de même le soir, ou tôt le matin.
-- Il y a peut être plus simple, mais, ça tourne Message modifié, 25 septembre 2023 - 15:00
Merci pour tes éclaircissements Voroltinquo. Je comprends mieux.
Ce qui est dommage aussi est que je n'ai pas de notifications quand quelqu'un répond ou poste quelque chose et c'est pourtant coché. |
| |
| |
| | | |
|
| | |
| |
Registered member 949 messages |
|
Posted on September, 28 2023 - 10:18 PM |
Voici le code : CompleteRep ajoute automatiquement le \ si il est manquant fRepExe pointe sur le répertoire de l'application (conseillé pour éviter la modification des chemins lors de la création de l'exe de l'application)
sFichier est un xlsDocument sFichiermodele est une chaîne = ComplèteRep(fRepExe) + "modele\Modele.xlsx" sfichiermiseajour est une chaîne = ComplèteRep(fRepExe) + "MISES_A_JOUR\mise_a_jour.xlsx"
sFichier = xlsOuvre(sFichiermodele, xlsEcriture)
bFeuilleEnCours est un booléen = xlsFeuilleEnCours(sFichier, 1)
sFichier[3,"A"] = "OK"
xlsSauve(sFichier, sfichiermiseajour)
xlsFerme(sFichier)
LanceAppliAssociée(sfichiermiseajour) Message modified, September, 28 2023 - 10:21 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 90 messages |
|
Posted on September, 29 2023 - 12:32 AM |
Merci, c'est parfait. Je ne connaissais pas fRepExe, ça va effectivement me faciliter la vie parce que je travaille avec énormément de dossiers et fichiers et j'ai bien noté aussi d'éviter les espaces et accentuation..
je pense avoir bien compris le déroulement de l'opération. Juste une petite question : pourquoi FeuilleEnCours est un booléen et pas un entier ?
Grâce à toi, je viens de faire un grand pas dans l'élaboration de mon projet. Merci beaucoup  |
| |
| |
| | | |
|
| | |
| |
Registered member 949 messages |
|
Posted on September, 29 2023 - 10:05 AM |
Concernant le booléen : on utilise ici la fonction xlsFeuilleEnCours en modification de la feuille en cours. Dans ce cas, la fonction ne renvoie que Vrai (1) ou Faux (0) donc inutile de déclarer un entier qui prend plus de place en mémoire. Pour info, on peut juste écrire : xlsFeuilleEnCours(sFichier, 1) au lieu de : bFeuilleEnCours est un booléen = xlsFeuilleEnCours(sFichier, 1)
Si on souhaite connaître le nom de la feuille en cours, la syntaxe est : nFeuilleEnCours est un entier = xlsFeuilleEnCours(sFichier) car dans ce cas la fonction renvoie le numéro de la feuille (un booléen ne suffit pas). CdltMessage modified, September, 29 2023 - 10:06 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 90 messages |
|
Posted on October, 01 2023 - 11:40 AM |
Merci Cédric.
Impressionnant. Comment on fait pour apprendre tout ça ? Je parcours beaucoup de tutos, je lis la doc, j'ai fait quelques formations mais c'est toujours très succinct. As tu des pistes où on peut apprendre plus en profondeur les possibilités de windev ? Il me manque beaucoup d'informations pour tout ce que je veux faire. A bientôt parce que je m'engouffre dans un projet et je ne sais absolument pas comment je vais coder mais après de longues recherches, je pense que j'aurai encore besoin de votre aide  |
| |
| |
| | | |
|
| | |
| |
Registered member 949 messages |
|
Posted on October, 02 2023 - 9:48 AM |
Bonjour Calimero, Bon, ma réponse de dimanche est partie aux oubliettes donc je recommence (les joies du forum le week-end). En principe, je préfère ne pas agir en dehors du forum, mais si tu peux me fournir une adresse mail (par prudence, pas ton adresse principale), j'aurai effectivement des choses intéressantes à te transmettre. Cdlt |
| |
| |
| | | |
|
| | | | |
| | |
|