| |
Posté le 09 septembre 2019 - 16:43 |
Bonjour Je souhaiterais supprimer les lignes vides dans une table obtenue par programmation et à partir d'un fichier excel.
Comment faire?
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 889 messages Popularité : +227 (347 votes) |
|
Posté le 09 septembre 2019 - 17:00 |
Bonjour, Sans ton code d'import, ni ton code de remplissage, on ne peut pas faire grand chose pour toi. "Allô, docteur, j'ai mal à la cheville, c'est grave ?"
-- Il y a peut être plus simple, mais, ça tourneMessage modifié, 09 septembre 2019 - 17:01 |
| |
| |
| | | |
|
| | |
| |
Posté le 09 septembre 2019 - 20:51 |
Bonsoir, En faite, ce n'est pas plus facile de supprimer les lignes vides de EXCEL avant d'importer ? |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 874 messages Popularité : +39 (51 votes) |
|
Posté le 10 septembre 2019 - 09:02 |
Bonjour,
Si on parle bien de table et non de fichier !!
Il est possible lors du remplissage de la table utiliser "FILTRAGE DES ENREGISTREMENTS xxxxxxxxxxxxxxxx". Ex au plus simple sur un champ issu d'une requete ( peut être sur un champ d'un fichier ) :
Si REQ_xxxx_champ1 = "" alors renvoyer faux
Sinon filtrer sur la requete d'origine, ou utiliser un filtre sur le fichier ... plein de solutions Christian
-- Christian - kick71Message modifié, 10 septembre 2019 - 09:14 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 939 messages Popularité : +53 (65 votes) |
|
Posté le 10 septembre 2019 - 09:27 |
Bonjour,
Code d'importation ?
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Posté le 10 septembre 2019 - 10:31 |
Bonjour,
Le plus simple d'importer les données Excel "brutes de fonderie" avec ses lignes vide. Puis de réaliser une boucle qui parcours toute la table en testant chaque colonne de chaque ligne.
i est un entier POUR i = 1 _A_ TableOccurrence(LaTable) SI LaTable.colonne1 = "" ET LaTable.colonne2 = "" ET LaTable.colonne3 = "" ALORS TableSupprime(Latable,i) FIN Multitâche() FIN
A chaque ligne parcourue si toutes les colonne sont vide alors elles peut être supprimée. C'est un traitement un peu plus long mais ainsi il est certain de ne supprimer que les enregistrements "stériles"...
Alain |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
Posté le 10 septembre 2019 - 17:25 |
Bonjour
Merci pour vos réponses. Voici le code :
Ce code supprime aussi des lignes non vides (pour l'instant le test se fait sur les colonnes 2 et 3 de la table)
Salutations |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 165 messages Popularité : +12 (12 votes) |
|
Posté le 10 septembre 2019 - 20:11 |
Bonjour; Votre code est à revoir, on ajoute les lignes dans la table s'il y a une information, pourquoi ajouter des lignes vides et ensuite les supprimer ?
Remarque concernant la suppression : la suppression d'une ligne dans un champ table déplace toutes les lignes qui suivent vers le haut.
avec la boucle ( POUR indice = ValeurMin _A_ ValeurMax ) si vous avez deux lignes à supprimer qui se suivent le résultat obtenu sera faux. car en supprimant la ligne Numéro "n" la ligne Numéro "n+1" la remplacera, mais notre indice s'incrémente. dans ce cas il est préférable d'inverser le parcours dans la boucle qui sera comme suit :
POUR indice = ValeurMax _A_ ValeurMin PAS -1
Bon Dev |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 889 messages Popularité : +227 (347 votes) |
|
Posté le 10 septembre 2019 - 21:41 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
Posté le 11 septembre 2019 - 08:42 |
Bonjour Merci pour vos réponses et votre aide. Malheureusement le changement de Vrai à Faux dans la fonction xlsxDonnées ne fait rien. Je ne vois pas comment ne pas créer de ligne lors quelles sont vides (pas trouvé ou placer le test). Le changement de sens de balayage de la boucle POUR (de valeur max à min au lieu de min à max) ne fait rien non plus.
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 165 messages Popularité : +12 (12 votes) |
|
Posté le 11 septembre 2019 - 09:34 |
Bonjour; Pouvez vous nous simuler un exemple des entrées et sorties ? - la structure et données du fichier xsl - le résultat souhaité Bon Dev. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
Posté le 12 septembre 2019 - 07:57 |
Bonjour,
Voici le fichier excel:
Voici l'extraction avant traitement:
Voici les données après traitement:
Ce qui me pose problème c'est les lignes vides que je n'arrive pas à supprimer lors de l'extraction (avec le code de mon message du 11/9). Le traitement et la conversion j'arrive à gérer. Il me restera le rajout de ligne dans la table après extraction (ça à l'air très compliqué mais pas critique de mon coté) et l'enregistrement du résultat en csv.
Merci pour votre aide |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 889 messages Popularité : +227 (347 votes) |
|
Posté le 12 septembre 2019 - 09:02 |
Le test pour savoir si la ligne est vide se fait ... avant de commencer à parcourir la ligne.
Pour nLigneTraitée = 1 _A_ nLigneMax ALORS SI SansEsapce(xlsDonnée(XlsClasseurTraité,nLigneTraitée,1,Faux))<>"" ALORS FIN FIN
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +13 (17 votes) |
|
Posté le 12 septembre 2019 - 09:40 |
Bonjour, C'est sûr plutôt que d'enlever, le mieux est de ne pas ajouter !!. Perso je ferais cela :
sLigne_Colonnes est une chaîne POUR nLigneEXPRESS = nPremiereLigneEXPRESS _À_ nNbLignesEXPRESS - 2 sLigne_Colonnes = "" POUR nColonneExXPRESS = 1 À nNbColonnesEXPRESS sLigneEXPRESS = xlsDonnée(nIDficExpress,nLigneEXPRESS,nColonneExXPRESS,Vrai) sLigne_Colonnes += [TAB] + SansEspace(sLigneEXPRESS) FIN SI SansEspace(Remplace(sLigne_Colonnes,TAB,"")) = "" ALORS SINON TableAjouteLigne(TABLE_BON_ORIGINE,sLigne_Colonnes) FIN FIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 48 messages |
|
Posté le 12 septembre 2019 - 11:16 |
Merci beaucoup pour vos réponses Proposition de Voroltinquo : Merci beaucoup. Cela fonctionne
Proposition de LM Concept : En reprenant votre code, je n'ai pas réussi à l'utiliser correctement. Les donnees ne sont extraites que dans la 1ere colonne de la table.
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +13 (17 votes) |
|
Posté le 12 septembre 2019 - 12:06 |
| |
| |
| | | |
|
| | |