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à!