Bonjour,
Je cherche à fusionner et centrer des cellules d’une même colonne sur plusieurs lignes en fonction de la valeur des cellules en colonne à partir de la ligne 7.
Par exemple, si [I14] = [I15] alors fusionner/centrer les deux cellules en colonne ainsi que en D, E J ; K et L de ces mêmes lignes. (Toujours en fonction de la valeur I)
Si [I28] = [I29] = [I30] alors .... identique que au dessus..
La plage de X lignes contient des lignes filtrées, qu’il ne faut pas prendre en compte.
Idem que certaines colonnes qui sont masqués (F, G , H)
J’ai essayé à partir du code suivant que j'ai essayé d'adapter.
	
	
	
	
	
		
Cependant le résultat obtenu ne me convient que partiellement.
La fusion ne dépend pas des valeurs en I mais dépend des valeurs par ligne et colonne. et ne s'applique pas a toutes les plages.
		
		
	
	
		
	
Si quelqu'un à une solution ..
Cordialement,
	
		
			
		
		
	
				
			Je cherche à fusionner et centrer des cellules d’une même colonne sur plusieurs lignes en fonction de la valeur des cellules en colonne à partir de la ligne 7.
Par exemple, si [I14] = [I15] alors fusionner/centrer les deux cellules en colonne ainsi que en D, E J ; K et L de ces mêmes lignes. (Toujours en fonction de la valeur I)
Si [I28] = [I29] = [I30] alors .... identique que au dessus..
La plage de X lignes contient des lignes filtrées, qu’il ne faut pas prendre en compte.
Idem que certaines colonnes qui sont masqués (F, G , H)
J’ai essayé à partir du code suivant que j'ai essayé d'adapter.
		VB:
	
	
	Sub Test_fusion()
     Nettoyer Range("I:J"), 1 ' Partie 1
     Nettoyer Range("K:L"), 1 ' Partie 2
     Fusionne Range("I7:L200"), 2, 1
    
End Sub
Sub Nettoyer(Plage As Range, Colonne_Ref As Integer)
Dim UsedRow As Integer
Dim R As Range
    With Plage
        UsedRow = ActiveSheet.UsedRange.Rows.Count
        Set R = .Columns(Colonne_Ref).Find("*", .Rows(UsedRow).Cells(1), , , , xlPrevious)
        Select Case True
        Case R Is Nothing:  ' rien
        Case R.Row + 1 = UsedRow: 'rien
        Case Else
            Lastcol = Plage.Column + .Columns.Count - 1
            Range(R.Offset(1), Cells(UsedRow, Lastcol)).Delete xlShiftUp
        End Select
    End With
End Sub
Sub Fusionne(Plage As Range, ParamArray Col() As Variant)
Dim Row As Integer, i As Integer
Dim Dc As String, Df As String
Application.DisplayAlerts = False
    With Plage
        Lastrow = .Rows.Count + Plage.Row
        Lastcol = .Columns.Count
        For i = 0 To UBound(Col)
            Dc = vbNullString
            For Row = 7 To Lastrow
                Debug.Print .Cells(Row, Col(i))
                If .Cells(Row, Col(i)) <> .Cells(Row - 1, Col(i)) Then
                    If Dc <> vbNullString And Not .Cells(Row, Col(i)).MergeCells Then
                        With Range(Dc, Df)
                            .Merge
                            .HorizontalAlignment = xlCenter
                            .VerticalAlignment = xlCenter
                        End With
                    End If
                    Dc = .Cells(Row, Col(i)).Address
                End If
                Df = .Cells(Row, Col(i)).Address
             Next
         Next
         .Cells(1, 1).Activate
    End With
End Sub
Sub show_Color()
    Debug.Print ActiveCell.Interior.Color
End Sub
	Cependant le résultat obtenu ne me convient que partiellement.
La fusion ne dépend pas des valeurs en I mais dépend des valeurs par ligne et colonne. et ne s'applique pas a toutes les plages.
Si quelqu'un à une solution ..
Cordialement,