Fusionner des lignes sous excels

Yan -  
ratikuss Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -
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. Manny78 Messages postés 209 Statut Membre 17
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. ratikuss Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   262
     
    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
  4. Yan
     
    je veux bien un coup de main t'as besoin de quoi ?
    0
    1. ratikuss Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   262
       
      à quoi correspond tes 1 2 3 4 4 ?
      et sinon connaitre le nom des colonnes de tes différentes valeurs =)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ratikuss Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   262
     
    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