Compilation d'informations

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

10fichier.xlsm (13.64 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

9fichier-v1.xlsm (24.47 Ko)

Bonjour gmp,

Merci beaucoup pour ta reponse.

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.

Nouvelle version;

Bye !

11fichier-v2.xlsm (28.71 Ko)

Merci, c'est parfait !

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.

Bonjour

Nouvelle version.

Bye !

11fichier-v3.xlsm (32.53 Ko)

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

Bonjour Klin89,

Voila, c'est exactement cela. Merci beaucoup.

Rechercher des sujets similaires à "compilation informations"