IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Recherche, Trie des valeurs [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut Recherche, Trie des valeurs
    Bonjour,

    J'importe d'un répertoire environ 500 fichiers texte. Dans ces fichiers, les données ont tous une valeurs entre 500 et 999 mais sont complètement dispersées.

    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    512|950|510|750|625
    Je souhaite simplement les reclasser par ordre dans un classeur central avec donc une colonne pour les 500, une pour les 600, etc.

    Merci d'avance.

    Edit: en gros ça serait un genre de Group By en SQL sur une requête .

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Si j'ai bien compris, tu veux selon ton exemple:

    Cellule A1 -> 510
    Cellule A2 -> 512
    Cellule B1 -> 625
    Cellule C1 -> 750
    Cellule E1 -> 950

    C'est bien ca?

    Peux-tu mettre 1 fichier texte pour voila exactement a quoi il ressemble?
    Est-ce que tous les fichiers sont au meme endroit?

    ++
    Minick

  3. #3
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut
    Citation Envoyé par Minick Voir le message
    Salut,

    Si j'ai bien compris, tu veux selon ton exemple:

    Cellule A1 -> 510
    Cellule A2 -> 512
    Cellule B1 -> 625
    Cellule C1 -> 750
    Cellule E1 -> 950

    C'est bien ca?

    Peux-tu mettre 1 fichier texte pour voila exactement a quoi il ressemble?
    Est-ce que tous les fichiers sont au meme endroit?

    ++
    Minick
    Bonjour,

    Oui c'est tout à fait ça.Pièce jointe 46200

    Edit: oui les fichiers sont dans le même répertoire mais là n'est pas mon souci c'est juste le fait de refaire un tri qui risque de me poser problème car il risque d'y avoir un peu trop de boucle à faire donc je cherche un truc simple et efficace .

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    re,

    Tu peux essayer comme cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Option Explicit
     
    Sub Assemble()
        Dim CptFichier As Integer, CptTablo As Integer
        Dim Colonne As Byte
        Dim Chaine As String
        Dim Tablo() As String
     
        Application.ScreenUpdating = False
        Feuil1.UsedRange.Clear
     
        With Application.FileSearch
            .LookIn = ThisWorkbook.Path
            .Filename = "*.txt"
     
            If .Execute > 0 Then
                For CptFichier = 1 To .FoundFiles.Count
                    Open .FoundFiles(CptFichier) For Input As #1
                    Do While Not EOF(1)
                        Input #1, Chaine
                        Tablo = Split(Chaine, "|")
                        If UBound(Tablo) <> -1 Then
                            For CptTablo = 0 To UBound(Tablo)
                                Colonne = Int(Tablo(CptTablo) / 100) - 4
                                Feuil1.Cells(Feuil1.Cells(65536, Colonne).End(xlUp).Row + 1, Colonne).Value = Tablo(CptTablo)
                            Next CptTablo
                        End If
                    Loop
                    Close #1
                Next CptFichier
     
                For Colonne = 1 To 5
                    If Feuil1.Cells(65536, Colonne).End(xlUp).Row <> 1 Then
                        Feuil1.Columns(Colonne).Sort key1:=Feuil1.Cells(1, Colonne), order1:=xlAscending, header:=xlYes
                    End If
                Next Colonne
            Else
                MsgBox "Pas de fichier trouvé."
            End If
        End With
        Application.ScreenUpdating = True
    End Sub
    Question subsidiaire:
    J'ai oublie de te demander si il fallait eliminer les doublon??

    ++
    Minick

  5. #5
    Membre Expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 165
    Par défaut
    Nono pas du tout, il faut laisser les doublons. Et sinon je testerai ta solution. Merci.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Un petit Group By serait très appréciable en effet

    Dans ton cas, je pense qu'il va falloir trier ligne par ligne les valeurs en ordre croissant. Une fois cela fait, t'es bon pour des couper-coller de plages (tu testes le premier chiffre du nombre pour voir où t'arrêter). Une fois cela fait, tu gardes un compteur pour savoir combien de lignes tu as coupées et tu les effaces une fois qu'elles sont collées et ainsi de suite jusqu'à ce que tout soit rangé.

    En tout cas, bonne chance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/07/2009, 15h40
  2. Utiliser des champs de recherche pour une valeur calculée.
    Par MasterJul dans le forum SharePoint
    Réponses: 0
    Dernier message: 08/02/2008, 12h47
  3. [VBA-E] rechercher des valeurs?
    Par godSP2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2007, 20h55
  4. Réponses: 3
    Dernier message: 24/08/2006, 11h56
  5. Réponses: 17
    Dernier message: 18/03/2005, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo