Regrouper dans une base de données

C

Caninge

Guest
Bonjour à tous,

Dans mon application je posséde :

1 feuille (Base de données)
3 feuilles (A;B;C)
1 feuille (Cumul)

Comment faire pour regrouper toutes les entrées des feuilles A B C dans la feuille cumul .

Merci
 

Pièces jointes

  • Achats.zip
    26.1 KB · Affichages: 34
  • Achats.zip
    26.1 KB · Affichages: 33
  • Achats.zip
    26.1 KB · Affichages: 35
C

CBernardT

Guest
bonjour Caninge et le forum

Essai de transfert des feuilles A, B, C vers la feuille récapitulative "Cumul".

Un bouton permet de commander l'opération.

Il est possible d'automatiser la commande par une macro placée dans le module de la feuille "Cumul" en lieu est place de la procédure du bouton :

Private Sub CommandButton1_Click()
Transfert
End Sub

ou en dessous si l'on veut conserver les deux mises à jour.

Private Sub Worksheet_Activate()
Transfert
End Sub


Cordialement

CBernardT
 

Pièces jointes

  • AchatsV1.zip
    18.1 KB · Affichages: 38
C

Caninge

Guest
Bonjour

J'ai appliqué la macro sur mon projet.

J'ai même rajouté 4 lignes pour trier dans la feuille "Récapitulatif" les codes et quantités.

Ca marche bien, par contre si il n'y a rien dans les feuilles A B et C,
Code Qté Qté Qté s'affichent dans les cellules D7:C7 ??

je t'envoie la macro transformé.

Merci d'avance!!

Sub Transfert()
Dim Tbl As Range
Dim MyRange As Range
Dim MyPlage As Range
Dim C As Range, Cbis As Range
Dim j As Byte
Application.ScreenUpdating = False
'Effacement des anciennes données du tableau
Worksheets("Récapitulatif").Range("B12", "C100").ClearContents
'Mise en boucle de toutes les feuilles sauf les feuilles "Cumul" et "base"
For j = 3 To Sheets.Count
'Déclaration des plages à consulter
Set MyRange = Range(Sheets(j).Range("B12"), Sheets(j).Range("B66").End(xlUp))
Set MyPlage = Sheets("Récapitulatif").Range("Plage")
For Each C In MyRange
If Application.CountIf(MyPlage, C) = 0 Then ' Boucle de mise en tableau des articles absents et de leurs quantités
If Sheets("Récapitulatif").Range("B12") = "" Then ' inscription de l'article
Sheets("Récapitulatif").Range("B12") = C
Sheets("Récapitulatif").Range("B12").Offset(0, 1) = C.Offset(0, 1) 'Inscription de la quantité
Else
Sheets("Récapitulatif").Range("B100").End(xlUp).Offset(1, 0) = C ' inscription de l'article
Sheets("Récapitulatif").Range("B100").End(xlUp).Offset(0, 1) = Sheets("Récapitulatif").Range("B100").End(xlUp).Offset(0, 1) + C.Offset(0, 1) 'Inscription de la quantité
End If
Else
For Each Cbis In MyPlage 'Boucle de mise en tableau des quantités des articles déjà présents
If Cbis = C Then
Cbis.Offset(0, 1) = Cbis.Offset(0, 1) + C.Offset(0, 1) 'Inscription de la quantité
Exit For
End If
Next Cbis
End If
Next C
Next j

Range("B12:c100").Select
Selection.Sort Key1:=Range("B12"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True

Range("A1").Select

End Sub
 

Pièces jointes

  • AchatsV.2.zip
    16.3 KB · Affichages: 29
  • AchatsV.2.zip
    16.3 KB · Affichages: 38
  • AchatsV.2.zip
    16.3 KB · Affichages: 34
C

CBernardT

Guest
bonsoir Caninge

petit bug des tableaux vides corrigé.

Macro d'automatisation installée ;

La mise à jour du tableau s'effectue à l'activation de la feuille Cumul.

Le bouton conservé, permet de commander manuellement l'opération.

Le tri croissant des codes est mis en place.


Cordialement

CBernardT
 

Pièces jointes

  • AchatsV.2.zip
    17.6 KB · Affichages: 57
  • AchatsV.2.zip
    17.6 KB · Affichages: 40
  • AchatsV.2.zip
    17.6 KB · Affichages: 48

Statistiques des forums

Discussions
313 060
Messages
2 094 924
Membres
106 128
dernier inscrit
lopierre