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 :

Faire un top 10 des sites les plus visité [fichier csv]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2012
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 28
    Points : 21
    Points
    21
    Par défaut Faire un top 10 des sites les plus visité [fichier csv]
    Bonjour

    J'ai besoin de vous pour que vous m'aidiez à faire un top 10 des postes (@IP) qui se sont connecté le plus souvent aux site web (URL)

    C'est un fichier csv qui se presente sous cette forme :
    DATEFORMAT	URL	Result	Protocol	ClientIP	Username
    10/12/13 10:25	cdn.adnxs.com	TCP_HIT	http	10.167.68.15	21754
    
    source.xlsx

    Le fichier final ressemblera à ceci :
    Resultat.xlsx

    Avez vous une solution sous forme de macro pour avoir un fichier lisible et propre, avec un graphique si possible se serais fantastique

    le fichier dispose d'environ 650 000 lignes sur 1 semaine (lol)

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Salut à toi !

    Ton problème m'a amusé. J'ai donc un peu codé. ^^
    Ce n'est pas du tout optimisé et je risque de me faire gronder, mais ca fonctionne !
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Sub top_10()
    Dim cellOri As Range
    Dim table() As Variant
    Dim max As Integer
    Dim flag As Boolean
    Dim mem As Integer
     
    max = 1
    With Workbooks("source").Worksheets("Feuil1")
        Set cellOri = .Range("A1")
     
        ReDim table(1 To 6, 1 To 1)
        table(1, 1) = cellOri.Offset(1, 4)
        table(2, 1) = cellOri.Offset(1, 1)
        table(3, 1) = 1
        table(4, 1) = cellOri.Offset(1, 0)
        table(5, 1) = cellOri.Offset(1, 0)
        table(6, 1) = ActiveWorkbook.Name
     
        For i = 2 To .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row - 1
            flag = False
            mem = 0
            For j = 1 To UBound(table, 2)
                If cellOri.Offset(i, 4) = table(1, j) Then
                    mem = j
                    flag = True
                End If
            Next j
     
            If flag Then
                table(3, mem) = table(3, mem) + 1
                table(5, mem) = cellOri.Offset(i, 0)
            Else
                max = max + 1
                ReDim Preserve table(1 To 6, 1 To max)
                table(1, UBound(table, 2)) = cellOri.Offset(i, 4)
                table(2, UBound(table, 2)) = cellOri.Offset(i, 1)
                table(3, UBound(table, 2)) = 1
                table(4, UBound(table, 2)) = cellOri.Offset(i, 0)
                table(5, UBound(table, 2)) = cellOri.Offset(i, 0)
                table(6, UBound(table, 2)) = ActiveWorkbook.Name
            End If
     
        Next i
    End With
     
     
    With Worksheets("Feuil2")
        Set cellOri = .Range("A1")
        For j = 1 To 10
            max = 0
            For i = LBound(table, 2) To UBound(table, 2)
                If max < table(3, i) Then
                    max = table(3, i)
                    mem = i
                End If
            Next i
     
            If max <> 0 Then
                cellOri.Offset(j, 0) = j
                For i = 1 To 6
                    cellOri.Offset(j, i) = table(i, mem)
                Next i
                table(3, mem) = 0
            End If
        Next j
    End With
     
    End Sub
    Je te laisse l'adapter.

    Tiens moi au courant !

    Kimy

    PS : je n'ai pas fait de contrôle d'ouverture. Les deux classeurs doivent être ouvert.
    Classeur de valeurs : source.xlsx
    Classeur résultats avec macro : Resultat_vb.zip

Discussions similaires

  1. Réponses: 37
    Dernier message: 12/08/2014, 22h25
  2. Réponses: 8
    Dernier message: 25/06/2013, 00h22
  3. [XL-2002] Top 10 des mots les plus fréquent dans une colonne de mots
    Par _gege_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/07/2010, 23h20
  4. top 10 des requêtes les plus longues
    Par cseguino dans le forum Administration
    Réponses: 1
    Dernier message: 10/02/2010, 09h46
  5. Réponses: 9
    Dernier message: 30/01/2007, 17h03

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