re,
une petite variante de la macro pour vous démonstrer ce chaine de 255. Si on fait la chaine en 1 fois, sa longueur est 40.600, divisé par 255 = 160 boucles. Dans la macro précédent, j'avais pris >=245, donc elle aurait quelque boucles en plus, mais un boucle, c'est presque nihil.
Sub taille()
Application.ScreenUpdating = False
t = Timer
For i = 1 To Columns.Count Step 2
s = s & "," & Cells(1, i).Address(0, 0) 'adresse de chaque 2eme cellule
Next
s = Mid(s, 2) 'ignorer première virgule
l = Len(s)
Do While Len(s) > 0
cnt = cnt + 1 'compter le nombre de fois
i = Len(s) + 1
If i > 255 Then i = InStrRev(s, ",", 255) 'position de la dernière virgule <= charactère 255
s1 = Left(s, i - 1) 'cette chaine sans dernière virgule
Range(s1).EntireColumn.ColumnWidth = 3 '
s = Mid(s, i + 1) 'reste de la chaine après cette virgule
Loop
MsgBox "longueur de la chaine : " & Format(l, "#,###") & vbLf & cnt & " boucles" & vbLf & "prêt en " & Format(Timer - t, "0.00\s") & " = " & Format((Timer - t) / cnt * 1000, "0.0") & " millisec/boucle"
Application.ScreenUpdating = True
End Sub