Synthétisé un tableau Excel

Résolu/Fermé
heisenberg007 Messages postés 10 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 novembre 2015 - 19 oct. 2015 à 15:52
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 - 21 oct. 2015 à 16:20
Bonjour,

Je souhaite exploiter un tableau de plusieurs lignes afin de synthétiser les données. Je vous mets un exemple de mon besoin :

Les onglets se trouvent dans le même classeur

Données brut à exploiter :

Marque Model Prix1 Prix2 Commentaires
Renaults CLIO 20 50 Com_produit1
Renaults CLIO 50 100 Com_produit2
Renaults MEGANE 30 100 PRODUIT defectueux
Renaults CLIO 2 10 60 PRODUIT OK
Renaults CLIO 2 20 70 PRODUIT KO
Renaults CLIO 2 20 70 PRODUIT KO

Résultat voulu :

Marque Model Prix1 Prix2 Commentaires
Renaults CLIO 70 150 Com_produit1 Com_produit2
Renaults MEGANE 30 100 PRODUIT defectueux
Renaults CLIO 2 50 200 PRODUIT OK PRODUIT KO PRODUIT KO


Je vous remercie de votre aide.
A voir également:

1 réponse

via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
19 oct. 2015 à 17:11
Bonjour

Un exemple par macro, à adapter à tes besoins
http://www.cjoint.com/c/EJtpkSK1Ell

Cdlmnt
Via
0
heisenberg007 Messages postés 10 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 novembre 2015
19 oct. 2015 à 17:17
Bonjour,

Je vous remercie pour votre réponse.

Je n'arrive pas à accéder à ton fichier. Quand je clique sur le fichier, au lieu d etre téléchargé, il s'ouvre dans le navigateur
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703 > heisenberg007 Messages postés 10 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 novembre 2015
19 oct. 2015 à 17:28
Re

Je ne sais que dire !! En principe lorsqu'on clique sur le lien on a le choix entre ouvrir (avec excel) ou telecharger

Au cas où tu ne trouves pas le moyen de l'ouvrir, voici sa constitution que tu pourras reproduire :
Une feuille nommée DONNEES avec de A à E tes 5 colonnes de données avec les titres de colonnes en ligne 1
Une feuille nommée SYNTHESE avec simplement dans les mêmes colonnes les mêmes titres de colonnes
La macro suivante mise dans un module (Faire ALT+F11 pour ouvrir l'éditeur VBA - Insertion - Module - copier-coller la macro)
Sub synthese()
Dim ligne1 As Long
'ligne dans SYNTHESE après laquelle commencer à copier données
ligne2 = 1
' dernière ligne remplie 1ere colonne de DONNEES
ligne1 = Sheets("DONNEES").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
' Boucle sur les lignes de la 2eme à la dernière
For n = 2 To ligne1
' nom du modele
modele = Sheets("DONNEES").Range("B" & n)
' si le modele n' existe pas déja dans la synthese (NB.SI renvoie 0)
' on incremente de 1 la ligne de recopie dans Synthese et ligneC prend la valeur de cette ligne
' sinon on recherche la ligne du modele et ligneC prend la valeur de cette ligne
If Application.WorksheetFunction.CountIf(Sheets("SYNTHESE").Range("B:B"), modele) = 0 Then ligne2 = ligne2 + 1: ligneC = ligne2 Else ligneC = Sheets("SYNTHESE").Columns(2).Find("*", , , xlWhole, xlByColumns, xlPrevious).Row
' recopie des données, en additionnant celles chiffrées et en concatenant les commentaires
With Sheets("SYNTHESE")
.Range("A" & ligneC) = Sheets("DONNEES").Range("A" & n)
.Range("B" & ligneC) = Sheets("DONNEES").Range("B" & n)
.Range("C" & ligneC) = .Range("C" & ligneC) + Sheets("DONNEES").Range("C" & n)
.Range("D" & ligneC) = .Range("D" & ligneC) + Sheets("DONNEES").Range("D" & n)
.Range("E" & ligneC) = .Range("E" & ligneC) & " " & Sheets("DONNEES").Range("E" & n)
End With
Next
End Sub


Pour lancer la macro ensuite depuis la feuille SYNTHESE alelr dans Onglet Developpeur Macros Selectionner Synthese et Exécuter

Cdlmnt
Via
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478 > heisenberg007 Messages postés 10 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 novembre 2015
Modifié par ozone_ le 19/10/2015 à 17:43
Tu fais clique droit > Enregistrer la cible du lien sous...

Et de cette façon tu auras le fichier entier et sans soucis d'ouverture.
0
heisenberg007 Messages postés 10 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 novembre 2015
19 oct. 2015 à 18:30
@ ozone: j'ai pu récupérer le fichier merci beaucoup.
@ via55 : Ton code fonctionne parfaitement, le seul souci est que quand les données sont placées aléatoirement dans le tableau DONNEES, la synthèse n'est erronée. Je partirai de ton code et l'adapter à mon besoin. Merci beaucoup pour ton aide.
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703 > heisenberg007 Messages postés 10 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 17 novembre 2015
19 oct. 2015 à 18:57
Désolé, mea culpa, il y avait une erreur dans une ligne dont je ne m'étais pas aperçue puisqu'en faisant l'essai avec les données dans l'ordre ça fonctionnait
La ligne rectifiée :
If Application.WorksheetFunction.CountIf(Sheets("SYNTHESE").Range("B:B"), modele) = 0 Then ligne2 = ligne2 + 1: ligneC = ligne2 Else ligneC = Sheets("SYNTHESE").Columns(2).Find(modele, , , xlWhole, xlByColumns, xlPrevious).Row

ligne dans laquelle après copie j'avais laissé le "*" (pour rechercher nimporte quoi) au lieu de le remplacer par modele !

Cdlmnt
Via
0