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   -
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.

1 réponse

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

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

    Cdlmnt
    Via
    0
    1. heisenberg007 Messages postés 12 Statut Membre
       
      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
    2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > heisenberg007 Messages postés 12 Statut Membre
       
      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
    3. ozone_ Messages postés 1823 Statut Membre 511 > heisenberg007 Messages postés 12 Statut Membre
       
      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
    4. heisenberg007 Messages postés 12 Statut Membre
       
      @ 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
    5. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > heisenberg007 Messages postés 12 Statut Membre
       
      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