1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| Sub mergeLines()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Dim nbLigne As Long
Dim j As Integer
Dim k As Integer
nbLigne = Range("B65536").End(xlUp).Row
j = 1 'j = variable de début de plage
For i = 1 To nbLigne + 1 'je rajoute +1 à nbLigne pour que le code considère qu'il y a une différence entre la dernière ligne et la dernière ligne + 1, afin de fusionner la fin si besoin.
If Range("Z" & i).Value = Range("Z" & i+1).Value Then
'on ne fait rien sinon se contenter de laisser monter i
Else
k = i 'k = variable de fin de plage (pas vraiment utile, on pourrait utiliser i, mais ça m'évite de modifier ton code ci-dessous)
if j <> k then 'on ne va pas fusionner des plages d'une ligne !
Range("A" & j & ":A" & k).Merge
Range("B" & j & ":B" & k).Merge
Range("C" & j & ":C" & k).Merge
Range("D" & j & ":D" & k).Merge
Range("E" & j & ":E" & k).Merge
Range("F" & j & ":F" & k).Merge
Range("G" & j & ":G" & k).Merge
Range("H" & j & ":H" & k).Merge
Range("I" & j & ":I" & k).Merge
Range("J" & j & ":J" & k).Merge
Range("K" & j & ":K" & k).Merge
Range("L" & j & ":L" & k).Merge
Range("M" & j & ":M" & k).Merge
Range("N" & j & ":N" & k).Merge
Range("O" & j & ":O" & k).Merge
Range("P" & j & ":P" & k).Merge
Range("Q" & j & ":Q" & k).Merge
Range("R" & j & ":R" & k).Merge
Range("S" & j & ":S" & k).Merge
Range("T" & j & ":T" & k).Merge
Range("U" & j & ":U" & k).Merge
Range("V" & j & ":V" & k).Merge
Range("W" & j & ":W" & k).Merge
Range("X" & j & ":X" & k).Merge
Range("Y" & j & ":Y" & k).Merge
Range("Z" & j & ":Z" & k).Merge
end if
j = i + 1 'on réinitialise j pour un début de nouvelle plage
End If
Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End Sub |
Partager