Aide Excel, lignes différement renseignées...

Diegoms Messages postés 10 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Comment faire ça sur Excel ? J'ai dans une liste disons cinqu colonnes :

Chanson Artiste Compagnie code Droits

C'est pour faire une liste de chansons et voir si on a les droits d'exploitation etc. C'est pas important de le savoir.

Ce que je veux faire c'est avoir tous les colonnes remplies. C'est à dire les 5 pour chaque chanson. le probleme est que j'ai des chansons en double ou en triple mais que parfois les doublons n'ont pas les mêmes colonnes repmplies. Alors pour une même chanson on peut avoir :

Chanson Artiste Compagnie Code Droits

Let it be Beatles Sony
Let it be Sony 12547
Let it be Beatles 12547 Oui

VOILA. Je voudrais avoir seulement UNE REFERENCE PAR CHANSON. Comment faire cela de manière automatique (ou semi automatique) puisque ma liste comprend 7000 references.

MERCI infiniment

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    pour tenter de t'apporter une solution, met un extrait de ton classeur (enV. 100lignes maxi) sur:
    http://cijoint.fr/et colles le lien proposé dans ton message
    0
  2. Diegoms Messages postés 10 Statut Membre 1
     
    Bonjour,

    Je n'ai pas le droit de montrer le fichier, mais j'ai crée un fichier semblable avec just 3 references. Merci de ton aide :

    http://www.cijoint.fr/cjlink.php?file=cj201005/cij0IBqJcY.xls

    :)
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bien reçu ton classeur, merci !

      ca ne va pas être évident,
      sur quelle colonne se base-t-on, c'est à dire où il y a t il un identifiant unique ?

      le titre? non, car on peut avoir plusieurs artistes. par ex: "satisfaction" par les cailloux mais aussi Otis Redding, et autres... et le titre par le m^me groupe peut être enregistré dans plusieurs maisons (rupture contrat)

      donc, si on a un identifiant unique: OK sinon sur quelles concaténations de données ?
      Enfin où restitue t-on tout çà ?
      0
  3. diego
     
    Salut, merci de ton aide, desolé de pas avoir repondu plus tôt.

    En fait le titre sera unique, JE SAIS, qu'il n'y a pas deux titres qui se repetent. Et si non le code 1 est unique aussi. On a TOUJOURS le titre mais pas toujours les autres elements.

    L'ideal serait de sussprimer les doubles et triples dans le fichier pour ne garder qu'un seul fichier, c'est à dire restituer dans le même fichier.

    Les concatenations je n'ai pas compris. Mais ce que je veux c'est juste remplir le plus possible chaque entrée avec les infos des differentes lignes, pour avoir un titre une seule fois avec le plus d'info possibles.

    Merci
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      Excuse le retard mais des orages violents dans mon coin m'obligent à éteindre l'ordi de temps en temps

      essaies cette macro avec restitution en feuille 2

      Sub titres()
      Dim derlig As Integer, cptr As Integer
      Dim coll As Collection
      Dim tablo
      Dim titre As String, nbre_titre As Integer, lig As Integer, cptr_lig As Integer, cptr_tab As Byte
      
      derlig = Range("J20000").End(xlUp).Row
      'liste titres uniques
      Set coll = New Collection
      For cptr = 2 To derlig
      On Error Resume Next
          coll.Add Cells(cptr, 10).Value, CStr(Cells(cptr, 10).Value)
      Next
      
      ReDim tablo(1 To coll.Count, 1 To 14)
      
      For cptr = 1 To coll.Count
          'nombre occurence du titre en cours
          titre = coll(cptr)
          nbre_titre = Application.CountIf(Range("J2:J20000"), titre)
         
          'trouve les lignes des occurences du titre
           lig = 1
          For cptr_lig = 1 To nbre_titre
              lig = Columns(10).Find(titre, Cells(lig, 10)).Row
              'remplissage du tableau
              For cptr_tab = 1 To 14
                  If Cells(lig, cptr_tab) <> "" Then tablo(cptr, cptr_tab) = Cells(lig, cptr_tab)
              Next
          Next
      Next
      
      'restitution du tableau en feuille2
      Application.ScreenUpdating = False
      With Sheets(2)
       .Range("A2:N20000").Clear
       .Range("A2").Resize(coll.Count, 14) = tablo
       .Range("A2:N" & coll.Count + 1).Borders.Weight = xlThin
      End With
      
      Set Collection = Nothing
      End Sub
      
      0
  4. Diego
     
    Mon ami, je te remercie enormement de ton aide. Mais en fait je n'ai jamais utilisé un e macro. Je pense que je peux y arriver, car je me connait pas mal en ordinateurs, mais si tu peux m'expliquer rapidement. En fait il faut que je colle ton code quelque part dans Excel, n'est pas ????

    Je vais essayer de chercher mais si tu peux me donner des indices...

    Merci :)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. madeliocustom Messages postés 42 Statut Membre 13
     
    Bonsoir Diego,

    1 - va dans la barre de menu : Outils > Macro > Visual Basic Editor.
    2 - l'editeur visual basic s'ouvre et la tu y copie-colles le code.
    3 - pour executer la macro : tu vas dans Outils > Macro > Macros... et tu selectionnes la macro (en l'occurence "titres") et ca fait le job !

    Precaution : enregistre tout de meme une version de sauvegarde de ton listing avant tout ca et ne joue la macro que sur le fichier copie au cas ou elle ne ferait pas exactement ce que tu souhaites !

    A+
    Madelio
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      entre l'étape 1 et 2 insertion- module !
      0