Grouper / Dissocier selon condition sous VBA

  • Initiateur de la discussion Initiateur de la discussion julien712
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

julien712

Guest
Bonjour

Je souhaite grouper des lignes selon une condition.
Je veux que excel me groupe la ou les cellules dont la valeur (semaine) est supérieures à la semaine en cours.
en PJ je vous donne un fichier d'exemple

Nous sommes en semaine 13, je veux donc que les lignes de 14 à 16 soit groupées (ou masquées).

Par contre si j'ouvre mon fichier un jour dans le semaine 14, je veux que les lignes de 15 à 16 (uniquement ces lignes) soit groupées (ou masquées)

Le tout sur VBA 🙂

Si possible pouvez vous me mettre un commentaire dans le code source pour savoir quelle manipulation est faite à chaque étape de la procédure... et ce afin d'acquérir de l'expérience sous VB

Merci bcp
 

Pièces jointes

Re : Grouper / Dissocier selon condition sous VBA

Bonjour julien712,

Je te propose ceci pour grouper les lignes, à insérer dans un module VBA. Ça devrait t'aider pour commencer.
Note que le numéro de semaine en cours n'est pas "automatique". L'utilisateur doit l'écrire. Quand cette partie sera automatisée, tu pourras mettre tout le code dans la procédure Workbook_Open.

Code:
Sub GroupesLignes()
Dim ws As Worksheet
Dim i As Integer
Dim LastRow As Integer
Dim SemaineEnCours As Variant

Application.ScreenUpdating = False

Set ws = ActiveSheet
LastRow = ActiveSheet.Range("A60000").End(xlUp).Row      'derniere ligne de la liste

'No de semaine (pourrait être automatisée selon la date en cours
SemaineEnCours = InputBox("Semaine en cours = ?") 'Format: S01, S02, ...

'..Enlever les groupes de lignes existants
ws.Rows("1:1000").Select        'Liste de 1000 lignes, à changer si plus
On Error Resume Next
For i = 1 To 7                  'il peut y avoir 7 groupes au max, on les enlève tous
    Rows.Ungroup
Next i

'..Groupes les lignes
For i = LastRow To 1 Step -1    'on part de la fin de la liste
    If Cells(i, 1).Value > SemaineEnCours Then
        Rows(i).Group           'on groupe la ligne
    End If
Next i

ActiveSheet.Cells(1, 1).Select  'pour enlever la sélection, on revient à la cellule A1
Application.ScreenUpdating = False
   
End Sub
 
Re : Grouper / Dissocier selon condition sous VBA

Merci bien je vais voir cela.
Par contre un petit détail : a la fin du code, tu met "Application.ScreenUpdating = False". Ne serais ce pas plutot ....= True" ?
 
Re : Grouper / Dissocier selon condition sous VBA

Désolé pour le retard mais je confirme tout d'abord que cela fonctionne très bien merci beaucoup
Je suis en train de l'adapter à mes classeurs excel.
Une autre question toujours sur le groupement de ligne.
Une fois que le code est exécuté, le groupement de ligne s'affiche avec la barre verticale.
Il faut que j’appuie sur le "-" pour faire disparaitre les lignes.

J'ai voulu connaitre le code VBA permettant de la faire (en mode graphique) mais aucun code ne se met.

Connaissez vous ce code ?
 

Pièces jointes

  • groupe.JPG
    groupe.JPG
    18.6 KB · Affichages: 365
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

L
Réponses
9
Affichages
1 K
LordMarshall
L
N
Réponses
6
Affichages
2 K
Navillus
N
F
Réponses
5
Affichages
2 K
Faranor
F
X
Réponses
31
Affichages
4 K
Xplorer
X
M
Réponses
10
Affichages
5 K
Maxou2803
M
K
Réponses
5
Affichages
2 K
kondabalo
K
S
Réponses
1
Affichages
946
Shark10c
S
N
Réponses
5
Affichages
3 K
Nicocotte125
N
C
Réponses
3
Affichages
2 K
claivier_58
C
Retour