Masquage de lignes

Bonjour

J'ai trouvé sur le forum une macro pour masquer et afficher les colonnes en focntion d'un critère, en l'occurence dans mon fichier un n° de semaine.

Par contre je ne parviens pas à trouver une macro adaptée à mon masquage de ligne.

Comme je n'y connais rien en VBA je ne sais pas coder ce qu'il me faut.

Je souhaiterais que dans mon onglet suivi les lignes CDI et interim ne s'affichent que quand il y a au moins une donnée sur la semaine par personne, et ce uniquement lorsque je fais un masquage de colonne.

En gros, quand j'affiche toutes les colonnes, toutes les lignes doivent être affichées.

Mais quand je masque les colonne, je ne dois voir que les personnes présentes sur la semaine choisie.

Sauriez vous m'aider?

15base-suivi-indiv.xlsm (836.12 Ko)

Salut Evolm,

Salut le Fofo,

Tu trouveras ci-joint ton fichier modifié avec les codes ci-dessous :

Option Explicit
Public Function NumSem(a As Range)
NumSem = DatePart("ww", a, 1, 1)
End Function
Sub HiddenTrue()
Dim ColG As String, ColD As String
Dim x As Long, y As Long, z As Long
For x = 7 To Cells(5, 10000).End(xlToLeft).Column
    If "S" & NumSem(Cells(5, x)) = Cells(1, 3) Then Exit For
Next
For y = x + 1 To Cells(5, 10000).End(xlToLeft).Column
    If "S" & NumSem(Cells(5, y)) <> Cells(1, 3) Then Exit For
Next
ColG = Split(Columns(x - 1).Address(ColumnAbsolute:=False), ":")(1)
Columns("F:" & ColG).EntireColumn.Hidden = True
ColG = Split(Columns(y).Address(ColumnAbsolute:=False), ":")(1)
ColD = Split(Columns(Cells(5, 10000).End(xlToLeft).Column + 1).Address(ColumnAbsolute:=False), ":")(1)
Columns(ColG & ":" & ColD).EntireColumn.Hidden = True
z = 6
While z < Range("E" & Rows.Count).End(xlUp).Row
    If Application.CountBlank(Range(Cells(z, x), Cells(z + 2, y - 1))) = Application.CountA(Range(Cells(z, x), Cells(z + 2, y - 1))) Then Rows(z & ":" & z + 2).EntireRow.Hidden = True
    z = z + 3
Wend
End Sub
Sub HiddenFalse()
ActiveSheet.Columns.Hidden = False
ActiveSheet.Rows.Hidden = False
End Sub

Voilà, donc sa masque les colonnes n'ayant pas le numéro de semaine recherché, et sa masque les lignes d'une personne si il n'a aucune donnée dans les colonnes de la semaine recherché.

Je te laisse tester et revenir vers nous

B'zou '3'

9pour-evolm.xlsm (792.79 Ko)

Génial, c'est exactement ce dont j'ai besoin.

Par contre, question bête, mais je ne parviens pas à l'intégrer à mon fichier.

J'ai crée un module2 dans mon fichier et copié collé le code dedans mais ca ne fonctionne pas.

Quelle est la procédure à faire pour pouvoir copier ton code dans mon fichier?

Cool si le code te plaît J'ai bien galéré xDDD

Quelle est la procédure à faire pour pouvoir copier ton code dans mon fichier?

Partons du principe que t'est un débutant en VBA hein ! Comme sa j’omets aucune procédure :

1 - Copier les trois bouts de code qui sont dans mon message précèdent.

2 - Aller sur ton fichier & Alt + F11 pour ouvrir l'éditeur VBA

3 - Créer un nouveau module ou en sélectionner un (sa change rien :p)

4 - Coller les codes

5 - Retourner sur la Feuil1 de ton fichier

6 - Clique droit sur l'un de tes boutons & "Affecter une macro"

7 - Choisir la macro correspondante au bouton

8 - Tester les boutons

Si sa fonctionne pas, c'est qu'il y a des références qui ont changées entre ton fichier Test et ton fichier original :p

Et là c'est embêtant !

Restant à ta dispo

Merci, je ne pensais pas qu'il fallait que j'affecte ta macro à mes boutons existants.

Ca marche impec!

Rechercher des sujets similaires à "masquage lignes"