XL 2016 Adapter code VBA a un tableau et non colonne entière

Yücel

XLDnaute Junior
Bonjour,

Je souhaiterai adapter le code ci-dessous uniquement au tableau nommé "Tableau1" et non à toute la colonne "F"

VB:
Private Sub Worksheet_SelectionChange(ByVal target As Range)

    Application.ScreenUpdating = False
    Columns("F").ColumnWidth = 11.67
If Not Intersect(Range("F10:F1000"), target) Is Nothing And target.Count = 1 Then
    Columns(target.Column).ColumnWidth = 50
End If

End Sub

Merci pour votre aide.
 
Solution
Yucel, le forum

Ceci devrait correspondre à votre demande :
VB:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Derlig As String

Application.ScreenUpdating = False
Columns("F").ColumnWidth = 11.67

Derlig = Range("F" & Rows.Count).End(xlUp).Row

If Not Intersect(Range("F10:F" & Derlig), target) Is Nothing And target.Count = 1 Then
    Columns(target.Column).ColumnWidth = 50
End If

End Sub
@Phil69970

Yücel

XLDnaute Junior
Bonjour Phil69970,

Étonnant pourtant lorsque je clique sur le cellule F9 rien ne se passe car la macro ne se lance qu'à partir de la F10. Je voulais seulement que lorsque je clique sur la colonne F du tableau uniquement, que la colonne F s'élargisse. Car là tout fonctionne bien sauf que lorsque je clique sur la cellule F50 alors que mon tableau se termine à la cellule F30 et bien la colonne s'élargie.

il doit forcement y avoir une solution pour que la macro se lance uniquement pour le tableau.

Merci à vous.
 

Yücel

XLDnaute Junior
Bonsoir

Peut-on alors adapter la macro non pas pour : Range("F10:F1000") mais de F10 jusqu'à la dernière cellule non vide de la colonne F ??

VB:
Private Sub Worksheet_SelectionChange(ByVal target As Range)

    Application.ScreenUpdating = False
    Columns("F").ColumnWidth = 11.67
If Not Intersect(Range("F10:F1000"), target) Is Nothing And target.Count = 1 Then
    Columns(target.Column).ColumnWidth = 50
End If

End Sub


Merci pour votre précieuse aide.
 

Phil69970

XLDnaute Barbatruc
Yucel, le forum

Ceci devrait correspondre à votre demande :
VB:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim Derlig As String

Application.ScreenUpdating = False
Columns("F").ColumnWidth = 11.67

Derlig = Range("F" & Rows.Count).End(xlUp).Row

If Not Intersect(Range("F10:F" & Derlig), target) Is Nothing And target.Count = 1 Then
    Columns(target.Column).ColumnWidth = 50
End If

End Sub
@Phil69970
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Si j'ai bien compris le but recherché
Une autre façon de faire
VB:
Private Sub Worksheet_SelectionChange(ByVal T As Range)
If T.Column = 6 Then
If T.Count > 1 Then Exit Sub
Columns(T.Column).ColumnWidth = IIf(T.Row >= 10, 50, 11.67)
End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T