Come non detto! SOno una polla! 
ho fatto questa sub:
codice:
Public Sub ridimensionaColonnaDGW(ByVal idColonnaDaRidimensionare As Integer, ByVal mioDGW As DataGridView)
Dim altezzaTotaleRighe As Integer = 0
If mioDGW.Rows.Count > 0 Then
Dim miaRiga As DataGridViewRow = mioDGW.Rows(0)
Dim altezzaRiga As Integer = miaRiga.Height
miaRiga.Dispose()
For Each riga As DataGridViewRow In mioDGW.Rows
altezzaTotaleRighe += altezzaRiga
Next
End If
Dim larghezzaScroll As Integer = 17
'4 è il margine di sicurezza in pixel
Dim differenzaWidht As Integer = 4
For Each colonna As DataGridViewColumn In mioDGW.Columns
If colonna.Visible = True And colonna.Index <> idColonnaDaRidimensionare Then
differenzaWidht += colonna.Width
End If
Next
Dim newWidthColonna As Integer = mioDGW.Width - differenzaWidht
If altezzaTotaleRighe >= mioDGW.Height Then
'Scroll attive riduco un po la colonna
mioDGW.Columns(idColonnaDaRidimensionare).Width = newWidthColonna - larghezzaScroll
Else
'Scroll disattive
mioDGW.Columns(idColonnaDaRidimensionare).Width = newWidthColonna
End If
End Sub
Non l'ho collaudata ma credo funzionerà!