Masquer des colonnes selon des références

Bonjour,

Je souhaite masquer des colonnes de mon onglet selon certaines références de colonnes qui fluctuent.

Voici le code que j'ai fait:

Sub essai_23()

Dim fin As Range, fin_page As Range

Set fin = Sheets("Hors pole").Range("B1", Sheets("Hors pole").Range("B1").End(xlToRight))
Set fin_page = Sheets("Hors pole").Range(Sheets("Hors pole").Cells(1, fin.Count + 12), Sheets("Hors pole").Cells(1, fin.Count + 12).End(xlToRight))

Sheets("Hors pole").Columns(fin.Count + 12 & ":" & fin_page.Count + 12).EntireColumn.Hidden = True

End Sub

En gros j'ai les numéros de première colonne et de dernière colonne qui peuvent fluctuées.

Je sais comment masquer lorsque j'ai des plages fixes (range("d:f")) par exemple mais pas avec des valeurs fluctuantes.

J'ai donc tenter ce code, qui ne semble pas marcher.

Merci d'avance pour votre aide

C'est bon j'ai trouvé,

Je mets le code au cas où cela puisse servir:

Sub essai_23()

Dim fin As Range, fin_page As Range

Set fin = Sheets("Hors pole").Range("B1", Sheets("Hors pole").Range("B1").End(xlToRight))
Set fin_page = Sheets("Hors pole").Range(Sheets("Hors pole").Cells(1, fin.Count + 12), Sheets("Hors pole").Cells(1, fin.Count + 12).End(xlToRight))

Sheets("Hors pole").Range(Sheets("Hors pole").Cells(1, fin.Count + 12), Sheets("Hors pole").Cells(1, fin_page.Count + 23)).EntireColumn.Hidden = True

Sheets("Hors pole").Rows("1:1").EntireColumn.Hidden = False

End Sub

Salut Marilo,

tant mieux si tu as trouvé! Bravo!

Mais, le code...

Si nous pouvions avoir un fichier-exemple et des explications claires quant à ton opération camouflage, nous pourrions quelque peu améliorer l'écriture du code...

Cela ne pourrait que t'aider à progresser en VBA et faciliter les mises à jour de tes codes...

A+

Bonjour curilis,

Du coup je vais continuer de sollicité ton aide, car mon code ne fonctionne pas parfaitement quand même.

Ci-après mon code:

Sub essai()

Dim fin_ligne As Range
Dim fin_colonne As Range
Dim page As Integer

page = 1

Do Until page > Sheets.Count

    Set fin_ligne = Sheets(page).Range("A1", Sheets(page).Range("A1").End(xlToRight))
    Set fin_colonne = Sheets(page).Range("A1", Sheets(page).Range("A1").End(xlDown))

    Sheets(page).Range(Sheets(page).Cells(1, fin_ligne.Count + 1), Sheets(page).Cells(1, Application.Columns.Count)).EntireColumn.Hidden = True
    Sheets(page).Range(Sheets(page).Cells(fin_colonne + 1, 1), Sheets(page).Cells(Application.Rows.Count, 1)).EntireRow.Hidden = True

page = page + 1

Loop

MsgBox "Traitement terminé"

End Sub

Et du coup voici un fichier joint en exemple.

Dans mon exemple, les colonnes se masquent bien mais pas les lignes, pourtant j'ai l'impression de faire la même chose. Si vous savez pourquoi...

8exemple.xlsm (17.97 Ko)

Salut Marilo,

Ai-je bien compris ce que tu veux faire, à savoir cacher les colonnes de données visibles ?

Si oui, dès lors que les colonnes sont cachées, crois-moi bien que les lignes le sont aussi jusqu'à concurrence de ces colonnes, bien sûr !

Dans ce cas, le code suivant, sur un double-clic sur la 'Feuil1', cache et "dé"cache les colonnes calculées.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim iCol%, sCol$
'
Cancel = True
'
For x = 1 To Sheets.Count
    With Sheets(x)
        iCol = .Cells(1, Columns.Count).End(xlToLeft).Column
        sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
        .Columns("A:" & sCol).Hidden = IIf(.Columns("A:" & sCol).Hidden = True, False, True)
    End With
Next
'
MsgBox "Traitement terminé!"
'
End Sub

Des explications ?

A+

3marilo.xlsm (19.28 Ko)
Rechercher des sujets similaires à "masquer colonnes references"