Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fusionner des cellules

awa123

XLDnaute Occasionnel
Bonjour,

j'aimerais fusionner les cellules identiques qui sont consécutives

voici le petit code sur lequel je fais mes test

Code:
    Sub test()
     
     

    Dim tableau(5) As Variant
     
     
    tableau(0) = "O11"
    tableau(1) = "O11"
    tableau(2) = "O11"
    tableau(3) = "O12"
    tableau(4) = "O12"

    For i = 0 To UBound(tableau)
     
     
     If tableau(i) <> "" Then
     
        Cells(3, 1 + i) = tableau(i)
     End If
     
    Next i

     
      End Sub


je vous joins mon fichier qui illustre ce que j'aimerais avoir


merci beaucoup
 

Pièces jointes

  • fusionner cellules.xlsm
    14.4 KB · Affichages: 41

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Fusionner des cellules

Bonjour awa123,

Un essai dans le fichier joint avec pour code:
VB:
Option Explicit

Sub testfusion()
Dim tableau(0 To 4), X, j&, j0&

tableau(0) = "O11"
tableau(1) = "O11"
tableau(2) = "O11"
tableau(3) = "O12"
tableau(4) = "O12"
Range(Cells(3, 1), Cells(3, UBound(tableau) + 1)).UnMerge

j0 = 0: j = j0
Do While j <= UBound(tableau)
  X = tableau(j0)
  Do While j <= UBound(tableau)
    If tableau(j) <> X Then Exit Do
    j = j + 1
  Loop
  j = j - 1
  Cells(3, j0 + 1) = X
  If j > j0 Then
    Application.DisplayAlerts = False
    Range(Cells(3, j0 + 1), Cells(3, j + 1)).Merge
    Application.DisplayAlerts = True
  End If
  Range(Cells(3, j0 + 1), Cells(3, j + 1)).HorizontalAlignment = xlCenter
  Range(Cells(3, j0 + 1), Cells(3, j + 1)).Borders.LineStyle = xlContinuous
  j0 = j + 1: j = j0
Loop
End Sub
 

Pièces jointes

  • fusionner cellules v1.xlsm
    16.6 KB · Affichages: 32
Dernière édition:

job75

XLDnaute Barbatruc
Re : Fusionner des cellules

Bonjour awa123, salut mapomme

Code:
Sub Fusionner_par_ligne()
Dim P As Range, col%, i&, j%
Set P = ActiveSheet.UsedRange
col = P.Columns.Count - 1
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To P.Rows.Count
  For j = col To 1 Step -1
    If P(i, j) <> "" And P(i, j) = P(i, j + 1) Then _
      P(i, j).Resize(, 2).Merge: P(i, j).HorizontalAlignment = xlCenter
  Next
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Fusionner par ligne(1).xls
    40.5 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re : Fusionner des cellules

Re,

S'il y a beaucoup de cellules à étudier ceci sera plus rapide :

Code:
Sub Fusionner_par_ligne()
Dim P As Range, t, col%, i&, j%
Set P = ActiveSheet.UsedRange
If P.Count = 1 Then Exit Sub
t = P 'matrice, plus rapide
col = UBound(t, 2) - 1
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To UBound(t)
  For j = col To 1 Step -1
    If t(i, j) <> "" And t(i, j) = t(i, j + 1) Then _
      P(i, j).Resize(, 2).Merge: P(i, j).HorizontalAlignment = xlCenter
  Next
Next
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Fusionner par ligne(2).xls
    40.5 KB · Affichages: 29

Discussions similaires

Réponses
4
Affichages
234
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…