Compilation d'informations Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
NedStark
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 23 décembre 2014
Version d'Excel : 2010

Message par NedStark » 19 mai 2017, 12:21

Bonjour :) ,

Quelqu'un aurai-il l’amabilité de m'aider dans l'automatisation via VBA des opérations suivantes :

J'ai un tableau avec des données.
J'aimerais que toutes les valeurs individuelles des données de la colonne colonne A du tableau apparaissent dans un deuxième onglet suivant une condition détermine dans la cellule A1 de l'onglet 2.

Aussi j'aimerais que dans les colonnes B et C les sommes des montants et quantités soient soient réalises, de même que le calcul du coût unitaire dans la colonne C.

Je sais que je pourrais faire cela manuellement utilisant la fonction supprimer les doublons et tirer une formule pour les calculs mais j'aimerais justement ne pas avoir d’opération manuelle a faire et aussi pour ma culture quel code est nécessaire.

Le fichier joint sera certainement plus parlant.

Merci d'avance :!:
Fichier.xlsm
(13.64 Kio) Téléchargé 9 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'516
Appréciations reçues : 316
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 19 mai 2017, 17:27

Bonjour

Un essai à tester. Te convient-il ?
Bye !
Fichier v1.xlsm
(24.47 Kio) Téléchargé 8 fois
N
NedStark
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 23 décembre 2014
Version d'Excel : 2010

Message par NedStark » 19 mai 2017, 19:15

Bonjour gmp,

Merci beaucoup pour ta reponse. :D

Cela convient presque.
Serait-il possible de supprimer le user form pour que l'on puisse rentrer manuellement la condition dans la colonne A1.
Serait-il possible d'avoir une courte description au dessus de chaque ligne de code pour comprendre l'operation effectuee ?

Merci d'avance.
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'516
Appréciations reçues : 316
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 19 mai 2017, 20:52

Nouvelle version;
Bye !
Fichier v2.xlsm
(28.71 Kio) Téléchargé 10 fois
N
NedStark
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 23 décembre 2014
Version d'Excel : 2010

Message par NedStark » 22 mai 2017, 08:43

Merci, c'est parfait !
N
NedStark
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 23 décembre 2014
Version d'Excel : 2010

Message par NedStark » 25 mai 2017, 08:10

gmb a écrit :Nouvelle version;
Bye !
Bonjour gmb,

Désolé de revenir sur le sujet, je ne m'en suis pas rendu compte de suite, mais les données de la colonne A apparaissent toujours en doublon.
Mon but est que pour chaque type de matériel nous puissions avoir tous les références unique sur une seule ligne.

AAA 15 Peinture
AAA 20 Peinture
BBB 10 Peinture

soit :
A criture "Peinture" :

AAA 35
BBB 10

Merci d'avance.
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'516
Appréciations reçues : 316
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 25 mai 2017, 15:19

Bonjour

Nouvelle version.
Bye !
Fichier v3.xlsm
(32.53 Kio) Téléchargé 10 fois
Avatar du membre
Klin89
Membre dévoué
Membre dévoué
Messages : 596
Appréciations reçues : 21
Inscrit le : 28 mai 2011
Version d'Excel : 2003 FR

Message par Klin89 » 25 mai 2017, 20:31

Bonjor NedStark, gmb :)

vois ceci :
Option Explicit
Sub test()
Dim a, b(), i As Long, j As Long, n As Long, dico As Object, e
    Set dico = CreateObject("Scripting.Dictionary")
    dico.comparemode = 1
    With Sheets("1").Range("A1").CurrentRegion
        a = .Value
        ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
        For i = 2 To UBound(a, 1)
            If UCase(a(i, 4)) = UCase(Sheets("2").Range("A1").Value) Then
                If Not dico.exists(a(i, 1)) Then
                    n = n + 1
                    For j = 1 To UBound(a, 2) - 1
                        b(n, j) = a(i, j)
                    Next
                    dico.Item(a(i, 1)) = n
                Else
                    For j = 2 To UBound(a, 2) - 1
                        b(dico.Item(a(i, 1)), j) = b(dico.Item(a(i, 1)), j) + a(i, j)
                    Next
                End If
            End If
        Next
        For Each e In dico.keys
            b(dico.Item(e), UBound(b, 2)) = b(dico.Item(e), 2) / b(dico.Item(e), 3)
        Next
    End With
    With Sheets("2").Range("A1")
        .CurrentRegion.Offset(2).Clear
        If n > 0 Then
            .Offset(2).Resize(n, UBound(b, 2)).Value = b
        Else
            MsgBox "aucune donnée"
        End If
    End With
    Set dico = Nothing
End Sub
klin89
N
NedStark
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 23 décembre 2014
Version d'Excel : 2010

Message par NedStark » 26 mai 2017, 07:08

Bonjour Klin89,


Voila, c'est exactement cela. Merci beaucoup. :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • macro compilation
    par fumexo » 14 juin 2017, 11:40 » dans Excel - VBA
    2 Réponses
    156 Vues
    Dernier message par fumexo
    19 juin 2017, 10:19
  • Erreur de compilation
    par Marty15 » 23 novembre 2018, 10:38 » dans Excel - VBA
    18 Réponses
    202 Vues
    Dernier message par jmd
    23 novembre 2018, 15:12
  • Erreur de Compilation
    par Bernard17 » 1 octobre 2019, 19:31 » dans Excel - VBA
    4 Réponses
    47 Vues
    Dernier message par Bernard17
    2 octobre 2019, 07:39
  • COMPILATION DE DONNEES
    par POUPETTE83390 » 17 avril 2015, 14:59 » dans Excel - VBA
    2 Réponses
    160 Vues
    Dernier message par POUPETTE83390
    17 avril 2015, 17:22
  • compilation de données
    par gardan » 14 janvier 2015, 14:44 » dans Excel - VBA
    16 Réponses
    513 Vues
    Dernier message par néophytos
    15 janvier 2015, 11:59
  • macro Compilation
    par vessfils » 18 avril 2015, 02:09 » dans Excel - VBA
    3 Réponses
    216 Vues
    Dernier message par vessfils
    20 avril 2015, 19:41