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 :

Triage de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2017
    Messages : 8
    Par défaut Triage de données
    Hola muchachos !

    Alors voilà, j'ai un fichier excel ENAURME, et dessus, certaines variables ne m’intéresse pas. Mais ce faisant, ces mêmes variables me créent des doublons...
    Du coup, j'ai fais une petite macro pas piquée des hannetons, ET BIM ! ça marche pas.

    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
     
    Sub Totaux(i As Integer, Un As Collection, nbrligne As Integer, feuilleinit As String, feuillefin As String)
     
        Dim j As Integer
     
        j = 2
     
        Sheets(feuilleinit).Activate                                                            'Là où il y a mes données
     
        For k = 2 To nbrligne
            If Un(i) = Cells(k, 1) And Cells(k, 2) = "Entry" Then                               'Test pour savoir s'ils sont en "Entry"
                Range(Cells(k, 5), Cells(k, 29)).Copy
     
                Sheets(feuillefin).Activate                                                     'Là où je fais le totaux
                While Cells(j, 1) <> Un(i) And j < Un.Count + 1
                    j = j + 1
                Wend
                    Range(Cells(j, 2)).PasteSpecial , Operation:=xlPasteSpecialOperationAdd     'On colle la ligne en faisant une somme
            Else
                If Un(i) = Cells(k, 1) And Cells(k, 2) = "Exit" Then                            'Ou en "Exit"
                    Range(Cells(k, 5), Cells(k, 28)).Copy
     
                    Sheets(feuillefin).Activate
                    While Cells(j, 1) <> Un(i) And j < Un.Count + 1
                        j = j + 1
                    Wend
                        Range(Cells(j, 26)).PasteSpecial , Operation:=xlPasteSpecialOperationAdd 'On colle la ligne en faisant une somme
                End If
            End If
     
          Sheets(feuilleinit).Activate
     
        Next k
     
    End Sub
    J'ai bien géré les doublons et tout, mais les données en elles-même me posent problème.
    Le bug viendrait de la ligne où je fais le collage. J'ai donc commencé par google tout ça, mais rien trouvé d'utile...
    Du coup, j'me tourne vers vous !
    Des bisous !

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    On peut trier dans Excel, directement dans l'interface.

    Pour le reste :


  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2017
    Messages : 8
    Par défaut
    Hey !
    Je suis conscient qu'il y a un moyen de trier directement avec excel mais le tableau que je dois trier contient des variables qui ne m’intéresse pas et ça créer des doublons... En supprimant ces doublons, faut que j'ajoute les lignes semblables (j'sais pas si je m'explique bien). Mais en plus, puisque le tableau est mal foutu de base, les gens qui le remplissent ne s’embête pas et, au lieu d'incrémenter une ligne existante, en créer une nouvelle tout pareil avec seulement les valeurs qui changent...
    Même consolider ne marche pas puisque les variables ne sont pas triées, apparaissent plusieurs fois ou pas du tout selon le mois etc etc...
    D'ailleurs, cette macro est elle même appelée dans une autre procédure qui s'occupe de récupérer les données en supprimant les colonnes qui ne nous intéressent pas.
    Le but étant à la fin de pouvoir faire un cumul annuel selon la nationalité des gens et s'ils sont en entrée ou en sortie.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2017
    Messages : 8
    Par défaut
    Ok, ça semble marcher !

    Dans mon programme principal, j'ai ajouté l'écriture des individus sans doublon sur la feuille principale AVANT de faire le traitement.
    Et sinon, pour le code :

    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
     
    Sub Totaux(i As Integer, Un As Collection, nbrligne As Integer, feuilleinit As String, feuillefin As String)
     
        Dim j As Integer
     
        j = 2
     
        Sheets(feuilleinit).Activate
     
        For k = 2 To nbrligne
            If Un(i) = Cells(k, 1) And Cells(k, 2) = "Entry" Then
                Range(Cells(k, 5), Cells(k, 28)).Copy
                Sheets(feuillefin).Activate
                While Cells(j, 1) <> Un(i) And j < Un.Count + 1
                    j = j + 1
                Wend
                    Range(Cells(j, 2), Cells(j, 25)).PasteSpecial , Operation:=xlPasteSpecialOperationAdd
            Else
                If Un(i) = Cells(k, 1) And Cells(k, 2) = "Exit" Then
                    Range(Cells(k, 5), Cells(k, 28)).Copy
                    Sheets(feuillefin).Activate
                    While Cells(j, 1) <> Un(i) And j < Un.Count + 1
                        j = j + 1
                    Wend
                        Range(Cells(j, 26), Cells(j, 49)).PasteSpecial , Operation:=xlPasteSpecialOperationAdd
                End If
            End If
     
            Sheets(feuilleinit).Activate
            j = 2
     
        Next k
     
    End Sub
    J'ai surtout réinitialisé la variable qui change (le j), me suis remis sur la feuille qui contient les données et j'ai complété le "RANGE"
    Vouali Voualou !

Discussions similaires

  1. Triage des données compliqué
    Par sara21 dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/05/2013, 09h09
  2. [LV 2009] Pb de "triage" de données.
    Par K-RK-S dans le forum LabVIEW
    Réponses: 16
    Dernier message: 26/07/2011, 10h15
  3. Réponses: 0
    Dernier message: 25/05/2010, 01h43
  4. [MySQL] re-triage de données après affichage
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/12/2008, 10h50
  5. [Débutant] Triage de données dans un String
    Par Poilou dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/01/2004, 16h21

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