Synthétisé un tableau Excel
Résolu
heisenberg007
Messages postés
12
Statut
Membre
-
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
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.
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.
1 réponse
-
Bonjour
Un exemple par macro, à adapter à tes besoins
http://www.cjoint.com/c/EJtpkSK1Ell
Cdlmnt
Via
-
-
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 -
-
-
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
-