Masquage conditionnel ou boucle

bonjour, j'essaie de constituer un planning qui soit proprement présenté pour imiter les logiciels dédiés. L'entreprise dans laquelle je suis ne veut pas investir et jusqu'à maintenant tout est fait par du copier coller qui est non seulement source d'erreurs mais en plus est très demandeur de temps.

Pour le moment je suis dans la construction de la trame où je souhaite faire apparaître les dates sur une feuille (1feuille=1mois) et j'essaie de faire un code propre de façon à masquer les colonnes sous condition.

pour les mois de moins de 31 jours (la trame de base étant maximale) je souhaite faire disparaître les colonnes contenant la suite du mois. J'ai essayé le mode conditionnel, il ne fonctionne pas très bien mais je pense aussi que le mode boucle typé "pour toute date dépassant le mois de référence masquer les colonnes correspondant".

Je souhaiterai avoir de l'aide parce que dans tous les cas je n'obtiens pas le résultat escompté.

Par avance merci!

Bonsoir, proposition en PJ.

Si les dates en AD6:AF6 ne font pas partie du même mois, on les masque. En AD6 :

=SI(AC6<>"";SI(MOIS(AC6)=MOIS(AC6+1);AC6+1;"");"")

La ligne qui contient le numéro des jours reprend la valeur de la date au-dessus.

Le code VBA :

Private Sub Worksheet_Change(ByVal Target As Range)
    'Colonnes
    Application.ScreenUpdating = False
    Dim plage As Range
    Set plage = Range("AD6:AF6")
    For Each c In plage
        If c.Value = "" Then
            c.EntireColumn.Hidden = True
        Else
            c.EntireColumn.Hidden = False
        End If
    Next c
End Sub

Pour les lignes, faut voir ce que tu veux.

8planningtype.xlsm (27.15 Ko)

Merci Oyobrans!

Ca marche trop bien!

J'ai vraiment du mal à comprendre le fonctionnement de cette boucle For ... en même temps je ne suis pas un expert en VBA...

Pour ce qui est de la condition

oyobrans a écrit :

=SI(AC6<>"";SI(MOIS(AC6)=MOIS(AC6+1);AC6+1;"");"")

ce n'est pas applicable à mon cas parce que j'ai construit le tableur en faisant glisser donc l'incrémentation ne fonctionnerait pas si?

Il faut juste appliquer la formule sur la plage AD6:AF6. La macro fait en sorte que si une date n'est pas inscrite (la cellule est vide grâce à la formule), la colonne soit masquée.

J'ai tout compris! merci beaucoup!!!

Rechercher des sujets similaires à "masquage conditionnel boucle"