macro pour faire un tableau récapitulatif

mel57

XLDnaute Nouveau
bonjour a tous!!

je vous joint le fichier qui me pose problème [file name=RECL.zip size=11679]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RECL.zip[/file]



j'ai déja reussi a créer une macro pour ouvrir un formulaire, puis pour que les valeurs s'affichent dans un tableau

je voudrais par la suite créer sur la deuxième feuille (en relation avc la 1ère) un tableau a 3 colonnes

la 1ère doit contenir le nom du fournisseur (chaque nom apparait une seule fois)

la 2ème le cumul de points - pour ce fournisseur

la 3ème le cumul de points + pour ce fournisseur

Je bloque un peu!!

si vous avez des conseils a me donner, n'hésitez pas!
je suis débutante et j'ai mis toute la journée à ecrire cette toute petite macro :S
 

Pièces jointes

  • RECL.zip
    11.4 KB · Affichages: 32

Hervé

XLDnaute Barbatruc
bonjour mel :)

ton fichier ne contient pas de données, il serait plus simple pour nous d'avoir en feuille 1 les données actuelles, et en feuille 2 l'objectif à attendre (quelques lignes suffisent).

il est bien ton code pour le remplissage de ta feuille.

evite seulement le range('a10').select inutile et lent.

salut
:)
 

mel57

XLDnaute Nouveau
voila j'ai ecri ce que je voulais!
j'espere que qq1 pourra m'aider [file name=RECL_20060531165101.zip size=12229]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/RECL_20060531165101.zip[/file]
merci d'avance
 

Pièces jointes

  • RECL_20060531165101.zip
    11.9 KB · Affichages: 29

Hervé

XLDnaute Barbatruc
re re

ah, ben tiens, et si c'etait moi qui t'aidait ?

:)

en pièce jointe une macro possible, comme tu as dit etre débutante j'ai évité le code exotique et essayé de commenter la macro.

si souci, n'hésites pas à le dire.

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

Pièces jointes

  • RECL_20060531172355.zip
    14.1 KB · Affichages: 51

mel57

XLDnaute Nouveau
merci, c'est sympa d'avoir commenté!!!
ca marche bien en tout cas...

par contre j'ai encore qqe questions :S

il faudrait que le tableau de la page 2 soit trier dans l'ordre décroissant des points -

il faudrait aussi que je puisse afficher un histogramme automatiquement avec horizontalement les fournisseurs et verticalement, les points positifs et négatifs empilés....

je sais que j'en demande peut etre beaucoup, mais c'est le projet qui m'a été donné en stage... :S

en tout cas merci pour tout hervé,tu m'as deja bien permis d'avancer ;)
 

Hervé

XLDnaute Barbatruc
bonjour mel

ci dessous, la code complet avec trie et creation du graphique.


Sub Bouton3_QuandClic()
Dim c As Range, c1 As Range
Dim plage As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim present As Boolean
Dim ligne As Integer
Dim graphique As Chart

Set ws1 = Sheets('feuil1')
Set ws2 = Sheets('feuil2')

ws2.ChartObjects.Delete
'supprime le graphique en page 2

'efface les colonnes A,B et C de la feuille 2
ws2.Columns('A:C').ClearContents

'pour chaque cellule(c)de C11 à Cn de la feuille de 1
For Each c In ws1.Range('c11:c' & ws1.Range('c65536').End(xlUp).Row)
       
'pour chaque cellule(c1)de A1 à An de la feuille de 2
       
For Each c1 In ws2.Range('a1:a' & ws2.Range('a65536').End(xlUp).Row)
               
'si les deux cellules sont egales (meme nom de fournisseur)
               
If c1 = c Then
                       
'variable present devient true
                        present =
True
                       
'on stocke le numéro de ligne
                        ligne = c1.Row
               
End If
       
Next c1
       
       
'si present = vrai donc si le meme fournisseur à été trouvé
       
If present = True Then
               
'additionne en colonne 2 de la feuille 2, avec la colonne F de la feuille 1
                ws2.Cells(ligne, 2) = ws2.Cells(ligne, 2) + c.Offset(0, 3)
               
'additionne en colonne 3 de la feuille 2, avec la colonne G de la feuille 1
                ws2.Cells(ligne, 3) = ws2.Cells(ligne, 3) + c.Offset(0, 4)
               
'remet la variable present à false pour une nouvelle ligne
                present =
False
       
'sinon
       
Else
               
'cherche la première ligne vide de la colonne A
                derligne = ws2.Range('a65536').End(xlUp).Row + 1
               
'et renvoi les données
                ws2.Cells(derligne, 1) = c
                ws2.Cells(derligne, 2) = c.Offset(0, 3)
                ws2.Cells(derligne, 3) = c.Offset(0, 4)
       
End If
Next c

'ajout des entetes
ws2.Range('a1') = 'fournisseurs'
ws2.Range('b1') = '-'
ws2.Range('c1') = '+'


Set plage = ws2.Range('a1').CurrentRegion
'trie des données
plage.Sort Key1:=ws2.Range('B2'), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=
False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'creation du graphique
Set graphique = Charts.Add

With graphique
        .Chart
Type = xlColumnStacked
        .SetSourceData Source:=plage, PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:=ws2.Name
End With
End Sub


salut
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 352
Membres
103 526
dernier inscrit
HEC