adition article sur feuille differente ...

magafa

XLDnaute Nouveau
Bonjour a toutes et tous,

voila je vous expose mon probleme:
tous les jours j'exporte depuis une base de donnée Sybase les ventes d'article d'un restaurant.je recupere ces infos dans excel jour par jour cependant j'aimerai faire un cumul sur une feuille recap fin de semaine des quantités vendu sur la semaine article par article .

le probleme est que tous les articles ne sont pas vendu tous les jours et donc lors de l'importation je ne retrouve pas toujours mon article 1003 (par exemple) dans la meme cellule etc.. toujours plus ou moins decalé.

Alors je vois pas comment faire pour l'additionner de façon automatique alors qu'il n'est pas toujours a la meme place :eek:

je vous joints un fichier pour l'exemple

je vous remercie de m'éclairer de vos lumieres!!

magafa [file name=inventaire_20050705152529.zip size=9340]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/inventaire_20050705152529.zip[/file]
 

Pièces jointes

  • inventaire_20050705152529.zip
    9.1 KB · Affichages: 16

magafa

XLDnaute Nouveau
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Bonjour Thierry,


peux-tu avoir la gentillesse de m'expliquer le plus detaillé possible tes différentes macro .

Je dois modifier les fichiers d'import donc ton fichier final de cumul
mais j'avoue avoir un peu de mal a le dechiffrer.


merci de ton aide si possible

Cordialement

Magafa
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Bonjour Magafa, Gael, le Fil, le Forum

Et bien les Algos de ce programme sont prévus tous pour gérer des feuilles structurées comme ton exemple. J'espère que tu as pensé fournir un exemple qui corresponde à tes besoins réels...

C'est à dire 5 Champs :
[li]N° article[/li]
[li]Nom[/li]
[li]Prix unitaire[/li]
[li]Quantité vendu[/li]
[li]Prix total vendu/jour[/li]

L'algo suivant 'TheCollector' va contruire un Tableau avec ces 5 Champs.... Tout en Scannant toutes les feuilles du Classeur, sauf celle nommée 'fin de semaine'...

Sub TheCollector()
Dim WS As Worksheet
Dim PlageToScan As Variant
Dim x As Integer
Dim y As Long

For Each WS In ThisWorkbook.Worksheets
If WS.Name <> 'fin de semaine' Then
PlageToScan = WS.Range('A2:E' & WS.Range('A35000').End(xlUp).Row)

&nbsp; &nbsp;
For x = 1 To UBound(PlageToScan)
&nbsp; &nbsp; &nbsp; &nbsp;
ReDim Preserve TabGeneral(4, y)
&nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(0, y) = PlageToScan(x, 1)
'N° article
&nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(1, y) = PlageToScan(x, 2)
'Nom
&nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(2, y) = PlageToScan(x, 3)
'prix unitaire
&nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(3, y) = PlageToScan(x, 4)
'quantité vendu
&nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(4, y) = PlageToScan(x, 5)
'prix total vendu/jour
&nbsp; &nbsp; &nbsp; &nbsp; y = y + 1
&nbsp; &nbsp;
Next x
End If
Next WS
&nbsp; &nbsp;
TheSorter

End Sub


Puis à la fin, il lance 'TheSorter' qui a pour mission de faire un tri en ordre croissant par Numéro Article...Tout en conservant les valeurs linéaires de chaque ligne des ces 5 Champs...

Sub TheSorter()
Dim i As Long, ii As Long, iii As Long
Dim Tmp1 As String, Tmp2 As String, Tmp3 As Double, Tmp4 As Double, Tmp5 As Double
&nbsp; &nbsp;
&nbsp; &nbsp;
&nbsp; &nbsp;
&nbsp; &nbsp;
For i = LBound(TabGeneral, 2) To UBound(TabGeneral, 2)
&nbsp; &nbsp; &nbsp; &nbsp;
For ii = LBound(TabGeneral, 2) + iii To UBound(TabGeneral, 2)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If CInt(TabGeneral(0, i)) > CInt(TabGeneral(0, ii)) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tmp1 = TabGeneral(0, ii): Tmp2 = TabGeneral(1, ii): Tmp3 = TabGeneral(2, ii): Tmp4 = TabGeneral(3, ii): Tmp5 = TabGeneral(4, ii)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(0, ii) = TabGeneral(0, i): TabGeneral(1, ii) = TabGeneral(1, i): TabGeneral(2, ii) = TabGeneral(2, i): _
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(3, ii) = TabGeneral(3, i): TabGeneral(4, ii) = TabGeneral(4, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabGeneral(0, i) = Tmp1: TabGeneral(1, i) = Tmp2: TabGeneral(2, i) = Tmp3: TabGeneral(3, i) = Tmp4: TabGeneral(4, i) = Tmp5
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp;
Next ii
&nbsp; &nbsp; iii = iii + 1
&nbsp; &nbsp;
Next i

TheUnicatorAdditionator
End Sub

A la fin, cet algo lance 'TheUnicatorAdditionator' qui lui est chargé de faire une Collection en Clef unique des Numéros d'Articles (ColArticle), puis de faire les additions adéquates... (SumUnitaire, SumQuantite, SumTotalDay) par une Double Boucle Décalée sur tous les Items de la Collection d'Article par rapport au tableau (TabGeneral) généré et trié précédemment...

A la suite cet algo génère un nouveau Tableau Final (TabTotal), qui lui, représente ce qui va être importé en Feuille 'fin de semaine'...

Sub TheUnicatorAdditionator()
Dim ColArticle As New Collection
Dim TabTotal() As Variant
Dim i As Long, y As Long
Dim Item As Variant
Dim SumUnitaire As Double, SumQuantite As Double, SumTotalDay As Double
Dim ArticleName As String

For i = LBound(TabGeneral, 2) To UBound(TabGeneral, 2)
&nbsp; &nbsp;
On Error Resume Next
&nbsp; &nbsp; ColArticle.Add TabGeneral(0, i), CStr(TabGeneral(0, i))
Next i


&nbsp; &nbsp;
For Each Item In ColArticle
&nbsp; &nbsp; &nbsp; &nbsp;
For i = LBound(TabGeneral, 2) To UBound(TabGeneral, 2)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If Item = TabGeneral(0, i) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArticleName = TabGeneral(1, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SumUnitaire = SumUnitaire + TabGeneral(2, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SumQuantite = SumQuantite + TabGeneral(3, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SumTotalDay = SumTotalDay + TabGeneral(4, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp;
Next
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
ReDim Preserve TabTotal(5, y)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabTotal(0, y) = Item
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabTotal(1, y) = ArticleName
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabTotal(2, y) = SumUnitaire
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabTotal(3, y) = SumQuantite
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TabTotal(4, y) = SumTotalDay
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y = y + 1
&nbsp; &nbsp; SumUnitaire = 0
&nbsp; &nbsp; SumQuantite = 0
&nbsp; &nbsp; SumTotalDay = 0
&nbsp; &nbsp;
Next

With Sheets('fin de semaine')
.Range('A2').Resize(UBound(TabTotal, 2) + 1, UBound(TabTotal, 1)) = Application.Transpose(TabTotal)
End With

End Sub


Voilà Grosso Modo le Gros Topo des ces Petiots Algos... ;)

Bonne Soirée
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Re bonjour le Fil, Salut Pat !

Merci pour ta qualification ;)

Heureux de te croiser !! ah au fait pour Lyon le 24/09 n'oublies une bouteille de Casa !!!

Bien à Toi
@+Thierry
 

magafa

XLDnaute Nouveau
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Bonsoir a tous,

merci pour tes explications.
Je vais voir comment a partir de tout ca je peux ajouter des colonnes
dans le tableau final

Super top encore une fois!!

Magafa

2 glaçons pour le casa svp!! :woohoo:
 

magafa

XLDnaute Nouveau
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Bonjour A toutes et tous,

Je galere sur ton fichier en fait la version finale doite etre du style de la piece jointe! :eek:

et je vois pas comment faire une adition des colonnes D,E,F et avoir le resultat dans la colonne G sur la feuille 'fin de semaine'.


je vous joints le fichier derniere version.

merci encore de ce dernier coup de main.

Cordialement

Magafa [file name=Inventory.zip size=23528]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Inventory.zip[/file]
 

Pièces jointes

  • Inventory.zip
    23 KB · Affichages: 12

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Bonjour Magafa,

J'ai survolé un peu, mais c'est assez l'anarchie dans ce fichier... Dommage que tu n'aies pas dès le début donné un fichier qui correspondent aux structures réelles de tes besoins...

Que veux-tu au juste dans la feuille 'fin de semaine' car même moi je n'y comprends rien ?

Si je regarde la Feuille 'Feuil8' je vois (par exemple) :
1003 'CARP. BRESAOLLA'
En colonne C 'prix unitaire' => 9
En colonne D 'menu' => 10
En colonne E 'limo' => 3
En colonne F 'resto' => 1
En colonne G 'prix total vendu/jour' => 9 (soit 1 x 9 ) ???

Si je regarde la Feuille 'Feuil8 (2)' pour le même arcticle :
1003 'CARP. BRESAOLLA'
En colonne C 'prix unitaire' => 9
En colonne D 'menu' => 4
En colonne E 'limo' => 3
En colonne F 'resto' => 1
En colonne G 'prix total vendu/jour' => 9

Que veux tu dans la Feuille ''fin de semaine'
1003 'CARP. BRESAOLLA'
En colonne C 'prix unitaire' => 9
En colonne D 'menu' => 14
En colonne E 'limo' => 6
En colonne F 'resto' => 2
En colonne G 'prix total vendu/jour' => 18 ???
En colonne H 'quantite vendu au total' => 22 ???

Si c'est ça, regarde le fichier joint, c'est ce qu'il fait... Regarde aussi l'article 'MonTest' qui me semble plus logique... Mais bon !!

Bon Appétit
@+Thierry




[file name=Inventory_Revised_Thierry.zip size=22421]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Inventory_Revised_Thierry.zip[/file]
 

Pièces jointes

  • Inventory_Revised_Thierry.zip
    21.9 KB · Affichages: 16

magafa

XLDnaute Nouveau
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Bonjour Thierry,

je suis désolé de ne pas t'avoir donné le fichier avec les structure réelle mais des infos se sont collé a l'initial apres coup.

Ta version de 'mon Test' est exactement ce que je souhaite.

y a t-il qqchose a modifier pour reproduire sur toutes les lignes?

merci encore vraiment beaucoup

Magafa
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

Re Magafa, le Forum

Non, l'algo est unique, il gère de la même manière 'Mon Test' que toutes les autres lignes de toutes tes Feuilles de Données.

En fait ce sont ces Feuilles de Données 'Feuil8 (2)' et Feuil8' qui semblent incohérentes, dans les lignes 'Mon Test' j'ai simplement mis une formule en colonne 'G' : =C2*(D2+E2+F2)...

Bon Aprèm
@+Thierry
 

magafa

XLDnaute Nouveau
Re:=> DEMO Global Inventory MultiSheets Dynamic Array

re Thierry, re le forum,

ok merci avec ca ,je vais pouvoir avancer.

encore un dernier truc (oui je sais ..) si je veux que la recap se fasse seulement sur certaine feuilles ,c'est possible?

si oui comment

sincerement

Magafa
 

Statistiques des forums

Discussions
312 345
Messages
2 087 490
Membres
103 558
dernier inscrit
Lamine ABIDI