Excel 2010 fusion de cellules dans colonne

Résolu/Fermé
JeanR - Modifié par JeanR le 4/09/2012 à 13:19
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 4 sept. 2012 à 15:47
Bonjour,
j'ai trouvé beaucoup de réponses similaires à mon problème sur le forum, mais aucune ne correspondant exactement. C'est pourquoi je viens quérir votre aide :)

Je souhaiterais que les cellules de ma colonne E soient fusionnées jusque chaque occurence (je sais que la fusion c'est le mal, mais je préfèrerais cette solution si possible), sachant que j'ai trouvé une solution qui marchait mais comme j'ai près de 40 000 lignes, ça fait planter Excel :/

Voila un exemple peut-être plus concret :
ABCDE
xxxx1
xxxx1
xxxx2
xxxx3
xxxx3
Avoir à la fin une fusion verticale des deux "1" et des deux "3" (sauf qu'il y aura 40 000 lignes ^^).
Merci d'avance pour votre aide, je m'excuse de ne pas maîtriser suffisamment ce logiciel, et j'ai conscience que ce sujet à été traité maintes fois !
Cordialement,
Jean R.

A voir également:

4 réponses

Bonjour,
d'abord merci de votre réponse !
Le fichiel est intégral, la manipulation ne sera effectivement effectuée qu'une seule fois. Seulement, Excel est effectivement obligatoire :/
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
4 sept. 2012 à 14:11
Bonjour,

Bon, je met quand même ma proposition :
Sub fusionner()
    Dim lig1 As Long, lig2 As Long
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    For lig1 = 2 To Cells(Rows.Count, 5).End(xlUp).Row
        lig2 = 0
        While Cells(lig1, 5) = Cells(lig1 + lig2, 5)
            lig2 = lig2 + 1
        Wend
        If lig2 > 0 Then
            Cells(lig1, 5).Resize(lig2, 1).Merge
            lig1 = lig1 + lig2
        End If
    Next lig1
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

https://www.cjoint.com/?BIeogFNaYE7

eric
1
Bonjour,
Merci beaucoup, j'ai testé et ça fonctionne plutôt bien !
Le processus semble plus léger (effectué en quelques secondes pour l'ensemble des lignes), seulement le résultat est imparfait (pas de cohérence dans les manquement à priori :/) au fil des lignes. En tout cas merci beaucoup ! :)
0
Cela n'explique pas tout, mais apparemment à chanque changement d'occurence, la fusion ne prend pas en compte le premier de la liste.
exemple :
2
3
3
3
seuls les deux derniers 3 seront fusionnés. Je ne sais pas si je suis bien clair..
Je ne suis pas sûr de comprendre l'intégralité de votre code, mais peut-être, pour une raison obscure à mes yeux, faut-il passer à Lig1- 1 lors du .merge ?
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 4/09/2012 à 14:53
Oui, j'avais fait une petite erreur :
Sub fusionner()  
    Dim lig1 As Long, lig2 As Long  
    Application.DisplayAlerts = False  
    Application.ScreenUpdating = False  
    For lig1 = 2 To Cells(Rows.Count, 5).End(xlUp).Row  
        lig2 = 0  
        While Cells(lig1, 5) = Cells(lig1 + lig2, 5)  
            lig2 = lig2 + 1  
        Wend  
        If lig2 > 0 Then  
            Cells(lig1, 5).Resize(lig2, 1).Merge  
            lig1 = lig1 + lig2 - 1  
        End If  
    Next lig1  
    Application.ScreenUpdating = True  
    Application.DisplayAlerts = True  
End Sub  

car le next lig1 fait +1

eric
0
super, merci beaucoup ! je teste de suite :)
0
E-X-T-R-A, merci infiniment ! Vous venez de me faire gagner un temps fou !!!
Bonne continuation à vous, c'est vraiment super !!
JeanR
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 4/09/2012 à 13:41
Bonjour,
Une solution existe sur Excel, elle est relativement compliquée à mettre en place et n'est pas très souple...
Si c'est un besoin ponctuel, passer par Access peut-être une bien meilleure solution par rapport au quotient temps/qualité...

Excel est obligatoire ? Est-ce un besoin ponctuel (à la limite, la manip via Access peut s'automatiser) ?

-------------------
Cordialement,
Clément
0
Finalement, la macro que j'avais trouvé et adapté (avec mon très très faible niveau) fonctionne si j'avance de 500 lignes en 500 lignes (probablement la faiblesse de puissance de mon pc), je vais donc répéter la macro 80 fois et ça ira (heureusement que je ne dois le faire qu'une fois ! ^^)
Merci encore pour votre temps et investissement,
Bonne continuation :)
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
4 sept. 2012 à 13:53
Par "Excel obligatoire", j'entendais "Est-ce que vous avez Access d'installé", parce qu'après Access on peut retourner les résultats sous Excel très facilement.

Cependant, si vous avez réussi à résoudre votre problème, ça n' a plus lieu d'être ;)
0
Pardonnez mon ignorance en ce cas ! Merci encore, bnone continuation !
0