Excel 2010 fusion de cellules dans colonne

Résolu
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.

4 réponses

  1. 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
    1. Contributeur
      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
      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
      2. 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
      3. Contributeur
        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
      4. super, merci beaucoup ! je teste de suite :)
        0
      5. 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
    2. 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
      1. 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
        1. 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
        2. Pardonnez mon ignorance en ce cas ! Merci encore, bnone continuation !
          0