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 :

Supprimer doublons dans un tableau + additionner des valeurs en excluant certaines colonnes [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par défaut Supprimer doublons dans un tableau + additionner des valeurs en excluant certaines colonnes
    Bonjour à tous,

    Je travaille actuellement sur un fichier excel dans lequel j'ai un tableau de 24 colonnes (j'extrait les données depuis un autre fichier Excel). Lors de l'extraction et après une étape de modification, il me reste des doublons. Mon objectif consisterait à les supprimer automatiquement via un module VBA.
    Cependant, sur les mêmes lignes, j'ai aussi des quantités que je souhaiterais additionner lors de la suppression des doublons (cela concerne 4 colonnes).
    J'aimerais enfin qu'il ne tienne compte des autres colonnes et supprime automatiquement les valeurs.

    Ce sujet a déjà été évoqué dans le forum mais en se basant sur de petits tableaux avec peu de valeurs ou en créant des colonnes intermédiaires.
    Mon tableau est rempli de manière hebdomadaire et le nombre de cellules rempli sera conséquent sans oublier le fait qu'il est importé automatiquement ensuite sur Access pour traitement.

    J'aimerais donc conserver la mise en forme telle quelle et pouvoir lier le module à un bouton d'action via un call.

    Avez-vous des idées ?
    Je poste mon fichier pour mieux illustrer mes propos

    Concernant le classeur
    Fichier Base Utile
    Les doublons sont dans NumCommande
    Je voudrais additionner respectivement Quantitées commandées, quantitées réceptionnées, valeurs commandées, valeurs réceptionnées
    Les autres champs de la ligne du doublon doivent être conservés (moyenne si les TSQ et TSV sont différent de 1 ainsi qu'une conservation des formules dans les colonnes acteurs)
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par défaut
    Je poste le code que j'ai récupéré et qui correspond à mon besoin (suppression des doublons en conservant la mise en forme du tableau) et que j'aimerais adapté même si j'avoue avoir du mal n'ayant jamais utilisé les fonction UBound et TabTemp.
    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
    Sub Test()
    Set Coll_NumCommande = New Collection
    x = -1
    With Worksheets("Base_Utile")
      DerLigne = .Range("A1048576").End(xlUp).Row
        DerCol = .Range("X1").End(xlToLeft).Column
      Tabtemp = .Range(.Cells(2, 1), .Cells(DerLigne, DerCol))
    On Error Resume Next
         For L = 1 To UBound(Tabtemp, 1)
            Coll_NumCommande.Add Tabtemp(L, 1), CStr(Tabtemp(L, 1))
              If Err.Number = 0 Then
                x = x + 1
               ReDim Preserve TabRecap(24, x)
                        For Col = 1 To UBound(Tabtemp, 2) - 1
                          TabRecap(Col - 1, x) = Tabtemp(L, Col)
                        Next
                 For LL = 1 To UBound(Tabtemp, 1)
                  If Tabtemp(LL, 1) = Tabtemp(L, 1) Then
                      TabRecap(Col - 1, x) = TabRecap(Col - 1, x) + Tabtemp(LL, UBound(Tabtemp, 2))
                  End If
                 Next
              End If
              Err.Clear
         Next
    On Error GoTo 0
                  .Range(.Cells(2, 1), .Cells(DerLigne, DerCol)).ClearContents
       DerLigne = .Range("A1048576").End(xlUp).Row + 1
           .Cells(DerLigne, 1).Resize(UBound(TabRecap, 2) + 1, UBound(TabRecap, 1)) = Application.Transpose(TabRecap)
    End With
    End Sub
    Je vous remercie d'avance
    Fichiers attachés Fichiers attachés

  3. #3
    Membre chevronné
    Homme Profil pro
    Alternant
    Inscrit en
    Décembre 2015
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Alternant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 413
    Par défaut
    Une solution serait de créer un dictionnaire et supprimer les lignes qui renvoi à un index du dico déjà existentes :
    https://excelmacromastery.com/vba-dictionary/
    http://boisgontierjacques.free.fr/pa...ctionnaire.htm

  4. #4
    Membre du Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par défaut
    Merci pour ces liens Al__22, je vais expérimenter cette solution

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    regarde ce lien aussi (tu peux relire la discussion en entier ça fait pas de mal ) :
    https://www.developpez.net/forums/d1...s/#post8675891

    à adapter bien sur : on peux mettre un ou plusieurs critères pour faire le calcul, à toi de choisir les colonnes à additionner
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Membre du Club
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par défaut
    Merci, le code correspond bien à mes besoins et il fonctionne après quelques modifications. Cependant, il est beaucoup trop lourd et peu adapté à mon classeur excel ramovore. Au bout d'un certain nombre de ligne je finis par avoir une erreur de type 7 : Manque de mémoire

    Je cherche encore

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

Discussions similaires

  1. supprimer des doublons dans un Tableau
    Par www.rubis dans le forum Langage
    Réponses: 3
    Dernier message: 10/02/2011, 15h23
  2. Réponses: 7
    Dernier message: 09/02/2009, 14h28
  3. tableau contenant des valeur "supprimé"
    Par rouxfab dans le forum Runtime
    Réponses: 6
    Dernier message: 15/07/2008, 09h05
  4. Réponses: 5
    Dernier message: 29/03/2007, 16h52
  5. [Tableaux] Retirer des doublons dans un tableau
    Par Xunil dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2006, 18h04

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