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

  • Votes
  • Date
  • Date décroissante
  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.
    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+
      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 ;-)
        1. je veux bien un coup de main t'as besoin de quoi ?
          1. à quoi correspond tes 1 2 3 4 4 ?
            et sinon connaitre le nom des colonnes de tes différentes valeurs =)
        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.