Fusionner des lignes sous excels

Yan -  
ratikuss Messages postés 2296 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

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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
ratikuss Messages postés 2296 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
Yan
 
je veux bien un coup de main t'as besoin de quoi ?
0
ratikuss Messages postés 2296 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ratikuss Messages postés 2296 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