XL 2019 VBA PLANNING Aller à la colonne du lundi de la semaine en cours

blaise14

XLDnaute Nouveau
Bonjour à tous,

Je viens de m'inscrire sur ce forum où j'ai déjà réussi à trouver la moitié de mon bonheur avec le formule ci-dessous:

Sub sem_encours()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = Date Then
ActiveWindow.ScrollColumn = cellule.Column
End If
Next cellule
End Sub

Mon objectif est de naviguer dans un planning et pouvoir revenir au lundi de la semaine en cours avec une macro.
Et idéalement aller au samedi de la semaine qui suit ainsi que 2 semaines après ci possible.o_O
A l'heure actuelle, je n'arrive qu'a aller à la date du jour avec le code ci-dessus.
Merci de votre aide ;)
 
Solution
Re

Et en bonus, une version light
VB:
Sub Aller_Lundi_SemaineENCOURS_Light()
Dim R As Range: Set R = Sheets("PERSONNEL").Range("C7:NI7")
Application.Goto Cells(7, 2 + Application.Match(CLng(DateAdd("d", 1 - Weekday(Date, 2), Date)), R, 0)), -1
End Sub

Staple1600

XLDnaute Barbatruc
Re

Et pour coller à ce que tu veux
(ma façon de faire)
VB:
Sub Aller_Lundi_SemaineENCOURS()
Dim Rng As Range: Set Rng = Sheets("PERSONNEL").Range("C7:NI7")
Lundi = DateAdd("d", 1 - Weekday(Date, vbMonday), Date)
With Application
.Goto Cells(7, 2 + .Match(CLng(Lundi), Rng, 0)), True
End With
End Sub
 

blaise14

XLDnaute Nouveau
Merci beaucoup !

J'ai pas trop compris le fond et la forme de la formule mais ça marche !!! :)
( en même temps j'utilise VBA depuis seulement 2 jours et j'avais jamais entré une ligne de code ailleurs auparavant...)
Ci dessous ce que j'ai appliqué et qui fonctionne si jamais ça peut intéresser quelqu'un d'autre

Sub sem_encours()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = DateAdd("d", 1 - Weekday(Date, vbMonday), Date) Then
ActiveWindow.ScrollColumn = cellule.Column
End If
Next cellule
End Sub

Et pour le lundi de la semaine qui suit j'ai simplement ajouté un +7
Sub sem_suiv()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = DateAdd("d", 1 - Weekday(Date, vbMonday), Date) Then
ActiveWindow.ScrollColumn = cellule.Column + 7
End If
Next cellule
End Sub

Merci beaucoup Staple1600 - ta réponse était tellement rapide que j'ai même pas eu le temps de m'énerver :cool:
 

Staple1600

XLDnaute Barbatruc
Re

Et en bonus, une version light
VB:
Sub Aller_Lundi_SemaineENCOURS_Light()
Dim R As Range: Set R = Sheets("PERSONNEL").Range("C7:NI7")
Application.Goto Cells(7, 2 + Application.Match(CLng(DateAdd("d", 1 - Weekday(Date, 2), Date)), R, 0)), -1
End Sub
 

Fredo P.

XLDnaute Nouveau
Bonjour à tous,

Je viens de m'inscrire sur ce forum où j'ai déjà réussi à trouver la moitié de mon bonheur avec le formule ci-dessous:

Sub sem_encours()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = Date Then
ActiveWindow.ScrollColumn = cellule.Column
End If
Next cellule
End Sub

Mon objectif est de naviguer dans un planning et pouvoir revenir au lundi de la semaine en cours avec une macro.
Et idéalement aller au samedi de la semaine qui suit ainsi que 2 semaines après ci possible.o_O
A l'heure actuelle, je n'arrive qu'a aller à la date du jour avec le code ci-dessus.
Merci de votre aide ;)
Bonjour à tous,

Je viens de m'inscrire sur ce forum où j'ai déjà réussi à trouver la moitié de mon bonheur avec le formule ci-dessous:

Sub sem_encours()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = Date Then
ActiveWindow.ScrollColumn = cellule.Column
End If
Next cellule
End Sub

Mon objectif est de naviguer dans un planning et pouvoir revenir au lundi de la semaine en cours avec une macro.
Et idéalement aller au samedi de la semaine qui suit ainsi que 2 semaines après ci possible.o_O
A l'heure actuelle, je n'arrive qu'a aller à la date du jour avec le code ci-dessus.
Merci de votre aide ;)

Application.goto reference:=Worksheets("X").cells(z,y)
FP

Bonjour à tous,

Je viens de m'inscrire sur ce forum où j'ai déjà réussi à trouver la moitié de mon bonheur avec le formule ci-dessous:

Sub sem_encours()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = Date Then
ActiveWindow.ScrollColumn = cellule.Column
End If
Next cellule
End Sub

Mon objectif est de naviguer dans un planning et pouvoir revenir au lundi de la semaine en cours avec une macro.
Et idéalement aller au samedi de la semaine qui suit ainsi que 2 semaines après ci possible.o_O
A l'heure actuelle, je n'arrive qu'a aller à la date du jour avec le code ci-dessus.
Merci de votre aide ;)
 

blaise14

XLDnaute Nouveau
Bonsoir,
J'ai un dernier besoin pour finaliser mon planning.
Toujours en lien avec la demande précédente.
Etant donné que j'ai besoin d’accéder (uniquement pour le consulter en lecture seule) au planning en question depuis un smartphone et qu'il n'est pas capable de gérer vba je me retrouve à l'ouverture du planning au premier jour de l'année.

J'ai donc pensé à la solution suivante lors de la fermeture du classeur je souhaite masquer les colonnes de de la colonne du premier jour de l'année ("J") jusqu'au dimanche de la semaine précédente.

Peut on m'aider ??? Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Pour masquer des colonnes, il faut du VBA
A la rigueur une MFC pourrait masquer le contenu des cellules, mais cela te mènera pas à la semaine en cours.

Maintenant, une suggestion en passant.
Si ton planning doit être utilisé sur un smartphone, pourquoi ne pas utiliser les applis qui font cela très bien sur le Playstore ou autre ?
 

Kaytilou

XLDnaute Nouveau
Merci beaucoup !

J'ai pas trop compris le fond et la forme de la formule mais ça marche !!! :)
( en même temps j'utilise VBA depuis seulement 2 jours et j'avais jamais entré une ligne de code ailleurs auparavant...)
Ci dessous ce que j'ai appliqué et qui fonctionne si jamais ça peut intéresser quelqu'un d'autre

Sub sem_encours()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = DateAdd("d", 1 - Weekday(Date, vbMonday), Date) Then
ActiveWindow.ScrollColumn = cellule.Column
End If
Next cellule
End Sub

Et pour le lundi de la semaine qui suit j'ai simplement ajouté un +7
Sub sem_suiv()
Dim cellule As Range
For Each cellule In Sheets("PERSONNEL").Range("C7:NI7")
If cellule = DateAdd("d", 1 - Weekday(Date, vbMonday), Date) Then
ActiveWindow.ScrollColumn = cellule.Column + 7
End If
Next cellule
End Sub

Merci beaucoup Staple1600 - ta réponse était tellement rapide que j'ai même pas eu le temps de m'énerver :cool:
Ils fonctionnent tous ;) merci

Bonjour Blaise
Votre macro me plait et m'intrigue. Comment avez vous organisé votre tableau excel. Possible de le partager car je cherche à faire un planning et je suis à la recherche d'idée.
Je vous remercie par avance
 

blaise14

XLDnaute Nouveau
Bonsoir

Pour masquer des colonnes, il faut du VBA
A la rigueur une MFC pourrait masquer le contenu des cellules, mais cela te mènera pas à la semaine en cours.

Maintenant, une suggestion en passant.
Si ton planning doit être utilisé sur un smartphone, pourquoi ne pas utiliser les applis qui font cela très bien sur le Playstore ou autre ?

En fait c'est un planning chantier que je partage avec mes équipes sur le terrain. Du coup moi seul peut apporter des modifs dessus. Quand j'y fait des modifs, je suis sur PC donc j'ai VBA. Et c'est bien un code VBA qui me manque pour masquer les colonnes.
Je 'utilise pas d'app préfaites parce qu'il est bien plus confortabale d'avoir un outil adapté à mon besoins uniquement sans fonction inutiles...
Merci d'avance parce que pour l'instant je me casse les dents à trouver ce code...
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV