Microsoft 365 Liste déroulante et macro

pumpkin14

XLDnaute Nouveau
Bonjour !

Je travaille actuellement sur la mise en place d'un planning pour l'année prochaine et je coince sur une manipulation....comme vous pourrez le voir dans mon fichier, j'ai créé une liste déroulante avec les mois concernés par le calendrier.

Mon souhait serait que, lorsque je choisis un mois dans la liste déroulante, je puisse être renvoyée directement dans la cellule correspondante à celui-ci.

Est-ce que ce serait possible sans passer par une vba mais une macro toute simple ?

Je vous remercie pour votre aide !! o_O;)
 

Pièces jointes

  • PROJET PLANNING .xlsm
    103.6 KB · Affichages: 16

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour
Est-ce que ce serait possible sans passer par une vba mais une macro toute simple ?

VBA = MACRO :)

Dans le fichier joint, j'ai changé votre liste de formulaire par un liste ActiveX (onglet développeur/bouton/insérer/Contrôle ActiveX), plus manipulable qu'un contrôle de formulaire.

Sa cellule liée est Feui4!B1 (nommée Mois_Choisit) qui permet avec une mise en forme conditionnelle de changer la couleur de fond de l'entête du mois choisit (dans le fichier, un gris plus clair)

Dans le code de la feuille (click-droit sur le nom de la feuille puis 'Visualiser le code') vous trouverez ce code qui s'occupe du déplacement vers le mois choisit :
VB:
Private Sub cbxListeMois_Click()
    If cbxListeMois.ListIndex > -1 Then Application.Goto Range("A4").Offset(, cbxListeMois.ListIndex * 12), True
End Sub

Et comme je me suis dis que vous voudriez peut-être que votre liste de mois vous suive, vous trouverez également cette procédure qui se déclenche sur sélection dans la feuille et se charge de placer la liste au bon endroit :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Cells(2, (Int(Target.Column / 12) * 12) + 2)
        cbxListeMois.Left = .Left
        cbxListeMois.Top = .Top
    End With
End Sub

J'ai également figer les volets au niveau de la ligne 7 pour que les entêtes soient toujours visible lorsque vous vous déplacer vers le bas.

cordialement

Cordialement
 

Pièces jointes

  • PROJET PLANNING.xlsm
    115 KB · Affichages: 12
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour
Est-ce que ce serait possible sans passer par une vba mais une macro toute simple ?
heu.... si il y a macro il y a VBA

il n'y a pas de macro sans VBA

donc avec du vba
a chaque fois que tu choisi dans la combo ça scroll vers le tableau mois choisi
ton tableau se trouve ainsi a gauche de l'application dans la fenêtre
et la combo suit
la combo et rempli a l'open du workbook et ou si tu ajoute des tableau et cela dynamiquement
ta 2d feuille n'est alors plus nécessaire
 

Pièces jointes

  • PROJET PLANNING .xlsm
    108.8 KB · Affichages: 10
Dernière édition:

pumpkin14

XLDnaute Nouveau
Bonjour à vous,

Un grand merci pour votre aide, j y regarde dans la soirée.

Et désolée pour la gaffe macro/vba je suis d accord avec vous mais bon, vue l heure du post je pense que je commençais à déconnecter (et voilà le travail😊).

Encore merci! Bonne journée.
 

patricktoulon

XLDnaute Barbatruc
Bonjour M12
bien que j’adhère pas trop au principe qui est sans conteste très lourd visiblement
pour tes index en col B feuil4
met ceci dans les ligne en B et étends la formule vers le bas
=EQUIV(A3;Agenda!$A$4:$EV$4;0)

comme ça si il y a des modif sur Agenda y a pas a y revenir les index seront a jour
chez moi j'ai quand même un souci de refresh et de de doublement de combobox momentanée il faut que je clique 2 fois sur le dropbouton pour que la combo marche et le spectre disparaisse

apres pour l'event change de la combo tu peux faire comme ca
c'est plus simple
VB:
Private Sub ComboBox1_Change()
Dim Col&
 Col = Feuil4.Cells(ComboBox1.ListIndex + [mois].Row, 2)
    With Sheets("Agenda")
        Application.ScreenUpdating = False
        .Columns("A:EM").Hidden = True
        Cells(1, Col).Resize(, 10).EntireColumn.Hidden = False
        Application.ScreenUpdating = True
        Range("A1").Select
    End With
End Sub

mais bon le refresh cause des problème quand même
un simple scroll aurait fait l'affaire
VB:
Private Sub ComboBox1_Change()
Dim Col&
 Col = Feuil4.Cells(ComboBox1.ListIndex + [mois].Row, 2)
   ActiveWindow.ScrollColumn = Col
ComboBox1.Left = Cells(1, Col).Left
End Sub
 

Pièces jointes

  • PROJET PLANNING M12 recover by pat.xlsm
    110.3 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 158
Messages
2 085 829
Membres
102 994
dernier inscrit
snoopy70