Masquage de lignes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
evolm
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 22
Inscrit le : 14 août 2018
Version d'Excel : 2010

Message par evolm » 14 décembre 2018, 09:36

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?
base suivi indiv.xlsm
(836.12 Kio) Téléchargé 8 fois
Chaque difficulté rencontrée est l'occasion d'un nouveau progrès
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'141
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 14 décembre 2018, 16:19

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'
Pour Evolm.xlsm
(792.79 Kio) Téléchargé 4 fois
1 membre du forum aime ce message.
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
Avatar du membre
evolm
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 22
Inscrit le : 14 août 2018
Version d'Excel : 2010

Message par evolm » 14 décembre 2018, 17:24

Génial, c'est exactement ce dont j'ai besoin. :sp:
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?
Chaque difficulté rencontrée est l'occasion d'un nouveau progrès
Avatar du membre
Juice
Membre impliqué
Membre impliqué
Messages : 1'141
Appréciations reçues : 102
Inscrit le : 28 novembre 2017
Version d'Excel : Microsoft Excel 2010

Message par Juice » 14 décembre 2018, 17:57

Cool si le code te plaît :D J'ai bien galéré xDDD
evolm a écrit :
14 décembre 2018, 17:24
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
Dans l'incapacité de continuer à vous aidez sur vos fichiers, je vous prie de bien vouloir m'excuser et vous invite à ouvrir un nouveau sujet pour reprendre vos problèmes avec un membre actif du Forum.

En espérant revenir très vite :)
Avatar du membre
evolm
Membre fidèle
Membre fidèle
Messages : 293
Appréciations reçues : 22
Inscrit le : 14 août 2018
Version d'Excel : 2010

Message par evolm » 17 décembre 2018, 10:27

Merci, je ne pensais pas qu'il fallait que j'affecte ta macro à mes boutons existants.
Ca marche impec!
Chaque difficulté rencontrée est l'occasion d'un nouveau progrès
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message