Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#11
Aspirant XLPages

Inscription: 02/05/2010

Messages: 21

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 13-05-2010 13h27
Merci beaucoup Guy pour tout l'interêt accordé

mais ce que je pense c'est simplement faire un tri colonne par colonne des valeurs zéro et effacer ces lignes..
pour un débutant je pense que ça me convient en attendant de faire des progressions en formules ;macro puis VBA
Merci encore une fois Guy

à bientôt
Cordialement.
 
ali08
Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#12
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 13-05-2010 14h37
Bonjour ali08,

Ben voilà. Si tu préfères traverser les rapides à la nage au lieu de prendre la passerelle fournie ça te regarde mais au nombre de lignes à tester et à supprimer tu te réserves de nombreuses heures de plaisir.

Petit détail : j'ai opté pour un nettoyage avant importation parce que le temps de traitement y est de loin inférieur. D'expérience quelque chose comme vingt à trente fois plus rapide qu'une fois les données placées dans un classeur et traitées avec une procédure automatique. Alors le même boulot à la mitaine (à la main) te prendra un temps fou sans compter les risques d'erreurs ou de pertes de données.

As-tu au moins testé la chose? Trois petits clics (un sur le bouton, un pour choisir le séparateur et un pour indiquer le fichier à nettoyer) et les données sont ou devrait être telles que désirées. Mais, bon, si ça ne te tente vraiment pas d'essayer ça te regarde.

Allez, cordialement tout de même,

Guy

Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#13
Aspirant XLPages

Inscription: 02/05/2010

Messages: 21

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 17-05-2010 23h41
Bonsoir à tous, et Merci à Guy.

j'ai testé le classeur et comme j'avais pas de résultat j'ai hésité. En effet, c'était un message erreur (13) incompatibilité de type.
et en déboguant c'est à la ligne :

 ElseIf Chaine(Position) = 0 Then

où est placé le curseur, et le fichier xl en sortie est vide évidemment.
Je t''aurai envoyer le fichier txt.car je crois que la structure des données du fichier txt qui est en cause.
merci de revoir avec le modèle  du fichier joint;

cordialement.
ali08





Pièce jointe:
zip example f1.zip   [ Taille: 1.23 Ko - Téléchargements: 611 ]
Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#14
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 18-05-2010 18h18
Bon, procédons avec méthode.

Tout d'abord merci pour le fichier. Il nous permet de cesser de pelleter des nuages.

Le fichier exemple example f1.txt soumis n'est conforme ni au format CSV ni au format largeur fixe. C'est un doux mélange qui confine au cubisme ou à la pataphysique, selon.
Quel automate, procédé ou application fournit un tel fichier? Mystère.

Ce fichier porte 196 lignes dont les 195 premières sont à largeur fixe de 50 caractères. Seule la dernière ligne, qui n'est là que pour brouiller les cartes, porte 79 caractères. Pourquoi cette ligne sans aucune utilité est-elle présente? Chépas.

Toujours avec ce fichier la première et la troisième ligne portent la chaîne de cinquante caractères "+--------+-------------------------+-------------+". Pourquoi?

Toutes les autres lignes, hormis la première, la troisième et la cent quatre-vingts seizième ont le même format :
[séparateur]donnée[séparateur]donnée[séparateur]donnée[séparateur]
Le séparateur en question étant la barre verticale (pipe en Anglais et beaucoup utilisé pour les fichiers CSV)

Un fichier CSV normalement formé compte autant de séparateurs que de données moins une. (n colonnes et n-1 séparateurs) avec la structure de ligne suivante :
donnée[séparateur]donnée[séparateur]... donnée
Il n'y a aucun séparateur en début ou en fin de ligne. Aucun.

Ce fichier hybride porte n colonnes (n = 3) et n +1 séparateurs.
S'il était conforme il porterait trois données et deux séparateurs comme suit :
donnée[séparateur]donnée[séparateur]donnée

Par exemple amusons-nous à ouvrir le fichier example f1.txt directement dans Excel sans autre forme de filtrage. Que se passe-t-il?
Le formulaire de mise en forme s'affiche avec la mention

Type de données d'origine
Largeur fixe

(Excel a subodoré un fichier à largeur fixe. Bravo! Mais voyons où cela nous mène.)

Poursuivons (bouton Suivant). Excel ne compte, en largeur fixe, que deux (2) colonnes. Ouais, ennuyeux.
Et si nous terminons l'ouverture de ce fichier texte nous aurons, pour les lignes portant des données, trois colonnes (eh oui, trois) mais en colonne
A : La référence et la date.
B : Une barre verticale.
C : Un nombre suivi d'une barre verticale.

Loin, très loin du format recherché.

On peut très facilement monter une procédure de débroussaillage ad hoc pour ce fichier. La prochaine question est importante.
Est-ce que cette structure hybride est et sera rigoureusement identique pour tous les autres fichiers à filtrer?

Si la réponse à la question ci-haut est Oui, pas de problème on se bricole une procédure à l'avenant.
Si la réponse à la question ci-haut est Non ou Pas vraiment, on se rabat sur le procédé à la mitaine pour des heures de plaisir.

En attendant réponse à ces questions je reste cordialement à disposition.

Guy



Edité par Guy le 20/05/2010 00:11:57

Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#15
Aspirant XLPages

Inscription: 02/05/2010

Messages: 21

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 19-05-2010 21h50
bonjour Guy.

Le fichier txt est singulier et c'est pour cela que j'ai hésité au debut de travailler avec  et j'ai préféré l'importer en xl  et le traiter en xl.

Et comme vous vous interesser et vous insistier de voir en amont avant l'importation , je l'ai alors envoyé , et c'etait une extraction faite par un informaticien , et il compprend d'autres champs moins important mais qui doivent etre importer avec les lignes filtrées,

En XL je dois avoir les champs:
ref;date ;et montant; etc.
et c'est ce ce j'ai fait et je souhaite avoir une formule ou macros qui elimines les lignes dont les montants sont vides ou egales à (0)  et avec un filtre sur le champ montant j'aurais la selection à copier.

Merci Guy.
Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#16
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 19-05-2010 22h09
Bonjour ali08,

Puisque c'est
Citation :
une extraction faite par un informaticien

Il serait intéressant d'informer cet informaticien que le respect du standard CSV devrait être envisagé au premier chef.

Pour ce faire voir http://fr.wikipedia.org/wiki/Comma-separated_values
et aussi le rfc4180 au http://tools.ietf.org/html/rfc4180#section-1
Le séparateur utilisé importe peu cependant le fichier doit respecter le standard tel qu'indiqué dans mon dernier post.

Si cet informaticien peut te fournir un fichier au bon format et sans fioritures tes problèmes seront en grande partie résolus.

Cordialement,

Guy


Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#17
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 21-05-2010 11h11
Bonjour ali08, Guy

Après pas mal de recherches, j'ai eu la chance de découvrir un code écrit par Silkyroad permettant d'importer des fichiers textes de plus de 65536 lignes en les ventilant dans plusieurs onglets.
J'ai ensuite tenté d'écrire la suite pour convertir les données et effacer les lignes vides ou à zéro, mon code n'est bien sûr pas à la hauteur de celui de Silkyroad mais ça fonctionne de mon coté, vois si cela peut t'aider ?

Option Explicit
'Code d'importation fourni par Silkyroad sur developper.com
Sub import()
Dim Fichier As Variant
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Fichier TXT (*.txt), *.txt")
    If Fichier <> False Then Extraction Fichier, 65536, ";"
End Sub

Private Sub Extraction(ByVal Fichier As String, ByVal NbLignesParFeuille As Long, ByVal Separateur As String)
Dim Wb As Workbook
Dim Counter As Long, Cpt As Long
Dim Tableau() As String
Dim i As Long
Dim ContenuLigne As String

    Application.ScreenUpdating = False

    Counter = 1: Cpt = 1
    Set Wb = Workbooks.Add(1)

    Open Fichier For Input As #1
        Do While Not EOF(1)
            If Counter > NbLignesParFeuille Then
                Wb.Worksheets.Add
                Counter = 1
            End If
   
            Line Input #1, ContenuLigne
            Tableau = Split(ContenuLigne, Separateur)
   
            For i = 0 To UBound(Tableau)
                ActiveSheet.Cells(Counter, i + 1) = Tableau(i)
            Next i
           
            Application.StatusBar = Cpt
            Cpt = Cpt + 1
            Counter = Counter + 1
        Loop
    Close #1
   
'************************
'suite
'************************

Dim sh As Worksheet, x As Long

For Each sh In ActiveWorkbook.Worksheets

    If sh.Range("A1") <> "" And sh.Range("A1") <> "_______________________________________________________________________________" Then
        sh.Columns("A:A").TextToColumns Destination:=sh.Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", FieldInfo:=Array(Array(1, 9), Array(2, 2), Array(3, 4), Array(4, 1), Array(5, _
        1)), TrailingMinusNumbers:=True
   
            For x = sh.[A65536].End(xlUp).Row To 1 Step -1
                If Application.CountIf(sh.Rows(x), "=0") > 0 Or Application.CountIf(sh.Rows(x), "*") = 0 Then sh.Rows(x).Delete
            Next x
    End If

Next sh


    Application.ScreenUpdating = True
    MsgBox "Opération terminée"
End Sub


 

Bonne journée à tous,

Mth

Edit: ajout du fichier en PJ

Pièce jointe:
zip Import ali08.zip   [ Taille: 15.38 Ko - Téléchargements: 615 ]
Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#18
Accro XLPages

Inscription: 09/01/2008
De Montréal, Québec

Messages: 463

Système d'exploitation:
PC
Version Excel utilisée:
97 à 2016
Posté le : 21-05-2010 19h37
Bonjour ali08, Mth ,

Ben voilà un premier brouillon, j'insiste brouillon, d'un classeur qui peut
  1. Charger un fichier conforme CSV quel que soit le séparateur.
  2. Charger un fichier même mollement conforme au format soumis dans example f1.txt.
Le bouton de nettoyage des fichiers CSV est encore présent pour fins de tests.

Contrairement aux autres fichiers fournis par mes soins ici, celui-ci effectue le nettoyage des lignes portant un zéro et importe dans Excel les lignes valides (qui n'ont aucune donnée à zéro) avec le nouveau bouton Lancer l'importation d'un fichier ali08 ou CSV sans égard au séparateur . Le nettoyage des cellules vides n'est cependant pas encore pris en compte.

L'idée fournie par Mth de rendre l'importation indépendante du nombre de lignes et de la version d'Excel est en gestation dans mon incubateur. Après tout faut bien s'amuser.

Alors, teste la chose avec le fichier example f1.txt ou tout autre de ton choix qu'il soit conforme CSV ou pas et donne-moi un compte rendu des déboires ou des réussites le cas échéant.

Aucune mesure du temps de traitement n'a été effectuée. J'attends tes commentaires à ce sujet si de gros fichiers sont testés par tes soins.

Cordialement,

Guy



Pièce jointe:
zip ClasseurExemple_ali08_CSV_OU_Pas.zip   [ Taille: 35.80 Ko - Téléchargements: 641 ]
Edité par Guy le 22/05/2010 01:20:53

Hors Ligne
Rapport   Haut 

Re: suppression de lignes vides ou de valeurs zéro'(0) dans une plage donnée
#19
Aspirant XLPages

Inscription: 02/05/2010

Messages: 21

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 24-05-2010 22h10
bonjour à tous.
Merci à Mth et à Guy.

J'ai essayé le fichier importation et ça marche trés bien l'importation se fait normalement avec la suppression des lignes avec un zéro.

Pour Guy, je vais essayer et vous rendre compte trés prochainement

Merci encore une fois tous les 2 pour l'intéret accordé.

 bonne soirée

ali08
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes