Fusionner des lignes sous excels

Fermé
Yan - 16 juin 2010 à 13:07
ratikuss Messages postés 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 - 17 juin 2010 à 09:53
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 190 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 3 avril 2014 17
16 juin 2010 à 13:39
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 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 194
16 juin 2010 à 15:35
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 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 260
Modifié par ratikuss le 16/06/2010 à 15:43
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
je veux bien un coup de main t'as besoin de quoi ?
0
ratikuss Messages postés 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 260
17 juin 2010 à 09:02
à 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 2004 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 14 décembre 2016 260
17 juin 2010 à 09:53
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