Fusionner des lignes sous excels

Bonjour,

j'ai un tableau de 2000 lignes environs avec une dizaine de colonnes
il est du type :

/ Nom / Prénom / Date de naissance / informations divers ....

1/ X / Y / 01/01/1980 / aime le poulet
2/ X / Y / 01/01/1980 / vient dimanche
3/ A / B / 02/02/1982 / rien
4/C /D / / doit rappeler
4/C /D / 03/04/1980 /
...

j'aimerais obtenir automatiquement un tableau du type :

1/ X / Y / 01/01/1980 / aime le poulet - vient dimanche
2/ A / B / 02/02/1982 / rien
3/C /D / 03/04/1980 / doit rappeler
...

Je ne sais pas si c'est possible. Auriez vous une petite idée ?

5 réponses

  1. Normalement c'est impossible sous excel, mais il faut que quelqu'un qui s'y connaitrait en VB confirme.
    Je sais en revanche que sous acces c'est surement possible.
    0
    1. Contributeur
      Bonjour,
      Je ne sais pas si c'est possible. ...OUI.

      Auriez vous une petite idée ? mais avec 2000 lignes et dix colonnes ça risque de prendre un certain temps, c'est le moins que l'ont puisse dire.
      Il faut passer en revue (2000 x 10) cellules x (2000 x 10) soit 40 millions de possibilités !
      A+
      0
      1. Tu peux résoudre facilement ton problème de "redondance" de données avec un programme en VBA.
        Si tu le souhaite, je veux bien t'aider à concevoir ce programme.

        Le temps d'exécution du programme pourra être long (1 à 2 minutes) mais c'est toujours mieux que de le faire à la main ;-)
        0
        1. je veux bien un coup de main t'as besoin de quoi ?
          0
          1. à quoi correspond tes 1 2 3 4 4 ?
            et sinon connaitre le nom des colonnes de tes différentes valeurs =)
            0
        2. J'ai considéré que ton tableau commençait ligne 1 et que :
          colonne A = numero index
          colonne B = nom
          colonne C = prenom
          colonne D = date de naissance
          colonne E = divers

          Sub anti_redondance()
          
          nb_ligne = 2000
          
          ReDim numero(nb_ligne)
          ReDim nom(nb_ligne)
          ReDim prenom(nb_ligne)
          ReDim naissance(nb_ligne)
          ReDim divers(nb_ligne)
          ReDim ligne_a_supprimer(nb_ligne)
          
          For i = 1 To nb_ligne
          
                  numero(i) = Range("A" & i)
                  nom(i) = Range("B" & i)
                  prenom(i) = Range("C" & i)
                 naissance(i) = Range("D" & i)
                 divers(i) = Range("E" & i)
                 ligne_a_supprimer(i) = 0
          Next i
          
          
          For x = 1 To nb_ligne
              
              For y = 1 To nb_ligne
              
                  If Range("B" & x) = nom(y) And Range("C" & x) = prenom(y) And Range("A" & x) <> numero(y) Then
                      
                          If naissance(y) <> "" Then
                              temp_naissance = naissance(y)
                          End If
                          
                          temp_divers = divers(y)
                          
                          ligne_a_supprimer(y) = 1
              
                          For n = 1 To nb_ligne
                              
                              If Range("B" & n) = nom(y) And Range("C" & n) = prenom(y) And Range("E" & n) <> divers(y) Then
                                  If naissance(y) <> "" Then
                                      Range("D" & n) = naissance(y)
                                  End If
                                  
                                  Range("E" & n) = divers(y) & "  " & divers(n)
                                  
                              End If
                              
                          Next n
                      
                      
                  End If
                  
              
              Next y
              
          Next x
          
          
          
          For i = 1 To nb_ligne
              If ligne_a_supprimer(i) = 1 Then
                  
                  Rows(i + 1).Select
                  Selection.Delete Shift:=xlUp
              End If
          Next i
          
          
          End Sub
          


          Voilà =) ça à l'air de fonctionner de mon coté, par contre le mieux serait de rajouter un bout de code qui trouve automatiquement le nombre de ligne dans ton tableau.
          0