Récupérer numéro de la troisième colonne visible à l'écran

Bonjour

J'ai un planning avec les dates dans les colonnes à partir de la colonne E, les colonne de A à D sont Nom, Prenom, Num, Autre

Donc mes dates commencent en colonne E (01/01/2021), F (02/01/2021), G(03/01/2021)....

J'ai masqué les colonnes A et C, donc mes 2 premières colonne affichées à l'écran sont les colonnes B et D.

Mais je n'affiche que les dates comprise entre le lundi de la semaine en cours et 60 jours après la date du jour.

Donc pour le 06/05/2021, ma troisième colonne affiché après la colonne B et D est la colonne EC.

Comment récupérer svp le numéro de cette troisième colonne?

c14

Pour récupérer la dernière colonne, j'utilise

DerCol = .Cells(55, .Columns.Count).End(xlToLeft).Column

qui récupère la dernière colonne affichée (malgré que les colonnes correspondant aux dates > 60 jours de la date en cours sont masquées en fin de feuille), c'est donc parfait.

Je vous remercie de votre aide

Cordialement

Bonjour,

peut-être ainsi : (si, comme cela semble être le cas, ta cellule D55 est bien vide)

Dim PremColVisi As Long
PremColVisi = Range("D55").End(xlToRight).Column
Sub setCol3Hidden()
Dim sh As Worksheet
Set sh = ActiveWorkbook.Sheets("Feuil1")
sh.Range("C:C").EntireColumn.Hidden = True
End Sub
Sub cnt()
Dim arr As Variant
Dim sh As Worksheet
Dim n As Integer
n = 1
Set sh = ActiveWorkbook.Sheets("Feuil1")
arr = CountVisibleColumns(sh.Range("A:G"), n)
If arr(1) = Empty Then
 MsgBox "no empty columns"
Else
 MsgBox "Nth hidden column " & arr(n)
End If
End Sub
Function CountVisibleColumns(rgRange As Range, nth As Integer) As Variant
Dim arrCols()
Dim iCol
ReDim arrCols(0)
Dim colCount As Integer
colCount = rgRange.Columns.count
iCol = 1
CountVisibleColumns = 0
'For Each Col In rgRange.Columns
Do
    If rgRange.Columns(iCol).Hidden = True Then
    'If Col.EntireColumn.Hidden = False Then
        CountVisibleColumns = CountVisibleColumns + 1
        ReDim Preserve arrCols(UBound(arrCols) + 1)
        arrCols(UBound(arrCols)) = iCol
        If nth = UBound(arrCols) Then CountVisibleColumns = arrCols: Exit Function
    End If
    iCol = iCol + 1
Loop Until iCol = colCount - 1
CountVisibleColumns = arrCols
End Function

Bonsoir Sylvainpyc, Le Forum,

Par un moyen tout simple.

Tu utilises la formule =JOURS(datefin;datedébut)+5.

Où ta date de fin est le 06/05/2021 et ta date de début le 01/01/2021.

A laquelle tu ajoutes 5 puisque tu ne commence pas en colonne A mais en colonne E.

Ainsi si ta date de fin est le 07/01/2021 tu auras une différence de 6 jours + 5 = 11. Soit colonne K (11ième colonne)

Tu peux mettre ta date de fin en cellule D54. Et la formule en D55.

Re-,

En prenant l'angle différemment...(la première colonne visible après la colonne D contient la date du lundi de la semaine en cours)

Dim PremColVisi As Long
PremColVisi = Application.Match(CLng(Date - Weekday(Date, vbMonday) + 1), Rows(55), 0)
'Date - Weekday(Date, vbMonday) + 1 donne le premier lundi de la semaine en cours
'transformé en Long, nous permet d'utiliser l'équivalent VBA de le fonction Equiv

Merci beaucoup pour toutes ces réponses

Dim PremColVisi As Long
PremColVisi = Range("D55").End(xlToRight).Column

ce code répond exactement à ce que je recherche.

Bonne journée à tous

Cordialement

Rechercher des sujets similaires à "recuperer numero troisieme colonne visible ecran"