MACRO pour afficher et masquer un nombre variable de colonnes selon un critère donné.

Guizmox

XLDnaute Nouveau
Bonjour,

Je fais de nouveau appel à votre aide aujourd'hui car je bloque dans un projet.

La lecture de mon premier problème (qui à été résolu par vos soins avec brio) est essentiel (je pense) pour pouvoir comprendre ce que je cherche à faire maintenant. Voici le lien :
https://www.excel-downloads.com/thr...s-groupes-de-colonnes-progressivement.166540/

J'ai déjà posé ma question à la fin de la page présentée en lien, mais je la copie/colle ici :
"Je viens de nouveau à vous, dans la continuité de mon précédent blocage.
J'ai bien avancé dans mon projet depuis, et je souhaite automatiser encore plus l'utilisation de mon tableau.
Ainsi, je cherche une macro qui permette, lorsque l'on clique sur le bouton "mise en page" (en haut à gauche), d'afficher le premier ensemble de colonnes vides (et ce, où que l'on soit dans le tableau).

Ce n'est pas très clair comme ça, mais en se basant sur mon exemple, voila ce que je voudrais faire.

A un moment donné, les colonnes affichées sont :
-Les trois colonnes grises à gauche (qui restent fixes)
-Les quatre colonnes en date du 01/01/2011
-Les quatre colonnes en date du 02/01/2011

Après avoir cliqué sur le bouton, je voudrais qu'il y ait systématiquement :
-Les trois colonnes grises à gauche (qui restent fixes)
-Les dernières quatre colonnes remplies de données (ici, en date du 04/01/2011)
-Les quatre colonnes qui suivent les quatre dernières remplies (ici, elles seraient en date du 05/01/2011)

Bien sûr, au fil du temps les colonnes se remplieront et la dernière colonne non vide ne restera pas en date du 04/01/2011. Les critères qui importent sont vraiment d'afficher les trois colonnes fixes, les quatre dernières remplies, et les quatre premières non-remplies.

Pour pimenter la partie, la macro doit pouvoir fonctionner même si les deux groupes de 4 colonnes "mobiles" visibles avant de cliquer sur le bouton sont situées après :) plus à droite que le point d'arrivée) dans le tableau."


D'avance grand merci à ceux qui pourront résoudre ce problème, qui ne doit pas être évident!
Je mets en pièce jointe le fichier servant d'illustration à mes propos.

Guizmox
 

Pièces jointes

  • test-v2.xls
    74.5 KB · Affichages: 74
  • test-v2.xls
    74.5 KB · Affichages: 85
  • test-v2.xls
    74.5 KB · Affichages: 87

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : MACRO pour afficher et masquer un nombre variable de colonnes selon un critère d

Bonjour Guizmox,

avec ces codes:
Code:
Public Sub SuivantOk()
Application.ScreenUpdating = False
colonne = Range("IV2").End(xlToLeft).Column - 1
For i = 4 To colonne
Cells(1, i).Select
Selection.EntireColumn.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub

Public Sub Precedent()
Columns("C:IV").EntireColumn.Hidden = False
End Sub
à+
Philippe
 

Pièces jointes

  • 111.xls
    72 KB · Affichages: 90
  • 111.xls
    72 KB · Affichages: 89
  • 111.xls
    72 KB · Affichages: 103

Guizmox

XLDnaute Nouveau
Re : MACRO pour afficher et masquer un nombre variable de colonnes selon un critère d

Merci Philippe, je pense que tu tiens le bon bout ^^.
Cependant, ton code ne répond pas vraiment à mon problème car :

-d'une part je compte garder les boutons "précédent" et "suivant" avec les macros qui leur sont déjà attribués. La nouvelle macro est pour le bouton "mise en page". Mais à ce niveau rien de bien dérangeant! =)

-d'autre part, je perds toute la mise en page d'origine (seulement 2 x 4 colonnes "mobiles" qui sont visibles à la fois, en plus des trois fixes).

En me penchant sur ton code, j'ai compris que tu avais parfaitement répondu à ce que j'ai demandé dans le titre de mon sujet, mais mon problème est finalement bien plus complexe que ça. En effet, ce qu'il manque à ton code, c'est de quoi masquer également toutes les colonnes situées après les quatre premières non-remplies.

De plus, les boutons "précédent" et "suivant" doivent aussi rester fonctionnels tels quels, même après avoir fais tourner ta macro.

Bon courage!

Guizmox
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : MACRO pour afficher et masquer un nombre variable de colonnes selon un critère d

Re,
En effet, ce qu'il manque à ton code, c'est de quoi masquer également toutes les colonnes situées après les quatre premières non-remplies.
pour cela, remplace le code par:
Code:
Public Sub SuivantOk()
Application.ScreenUpdating = False
colonne = Range("IV2").End(xlToLeft).Column - 1
For i = 4 To colonne
Cells(1, i).Select
Selection.EntireColumn.Hidden = True
Next i
For i = colonne + 9 To 256
Cells(1, i).Select
Selection.EntireColumn.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub
à+
Philippe

Edit, je viens de remarquer que tu as ouvert deux fils de discussion sur le même sujet, je n'ai pas trop le temps pour tout regarder
 

Guizmox

XLDnaute Nouveau
Re : MACRO pour afficher et masquer un nombre variable de colonnes selon un critère d

Re!

Encore une fois merci à toi, je vois qu'on approche de la solution mais (arf il est chiant ce perpétuel "mais"!) il reste encore un (tout petit?) problème...

Ton code marche a merveille, mais seulement à condition que toutes les colonnes aient préalablement été démasquées.
Avec mes médiocres talents en VBA, j'ai bien tenté ceci :

Sub misenpage()

Application.ScreenUpdating = False

'afficher toutes les colonnes
Columns("A:IV").Select
Selection.EntireColumn.Hidden = False

'masquer les colonnes inutiles avant la selection
colonne = Range("IV2").End(xlToLeft).Column - 1
For i = 4 To colonne
Cells(1, i).Select
Selection.EntireColumn.Hidden = True
Next i

'masquer les colonnes inutiles après la selection
For i = colonne + 9 To 256
Cells(1, i).Select
Selection.EntireColumn.Hidden = True
Next i

Application.ScreenUpdating = True

End Sub

Ca semble finir par répondre à mon problème, d'après mes essais... Est-ce correct?

Guizmox
 

Guizmox

XLDnaute Nouveau
Re : MACRO pour afficher et masquer un nombre variable de colonnes selon un critère d

A priori, une fois inséré dans mon projet, ça fonctionne sans faute avec mon petit ajout.

Je te remercie mille fois Philippe!!! Tu n'imagines pas l'épine que tu m'as retiré du pied!

Bon week-end!

Guizmox
 

Discussions similaires

Réponses
2
Affichages
158

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 157
dernier inscrit
youma