Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL pour MAC Créer des index pour déplacement rapide sur la même feuille

CM1090

XLDnaute Nouveau
Bonjour,
Je souhaiterais créer des index pour accéder rapidement à des colonnes sur la même feuille (calendrier) :
Mon calendrier va de 2022 à 2032 (colonnes). Je souhaiterais pouvoir accéder en 2022 comme en 2032 ou 2028 (janvier semble être le bon début pour chaque année) sans avoir à faire défiler toutes les colonnes !
J'ai créé des macros par année (méthode qui fonctionne mais que je trouve très lourde). Les boutons d'accès sont dans les colonnes A à D (figées), le calendrier démarrant à la colonne F en 2022.
Je sais qu'il existe d'autres solutions comme l'escalier horizontal (mode développeur); celui-ci ne me plaît pas trop.
J'ai déjà vu des systèmes de "tabulation", mais je ne maîtrise pas trop le sujet .
Merci de m'éclairer sur la (ou les) façon(s) de procéder.
Christophe
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Mon calendrier va de 2022 à 2032 (colonnes). Je souhaiterais pouvoir accéder en 2022 comme en 2032 ou 2028
[l'instant Nostradamus]
En 2032, Excel sera un vieux souvenir.
En 2028, l'informatique sera revenue aux tablettes d'argile.
[/l'instant Nostradamus]

@CM1090
Mais pour le présent, je plussoie!
Fais péter, le fichier exemple
 

Staple1600

XLDnaute Barbatruc
Re

J'ai ouvert le fichier
Je n'aurais pas dû.

Car un cri d'effroi est sorti d'en dedans de moi.
(Quand j'ai vu les 25 modules dans le projet VBA )

[Pour infos]
Dans le module2, il y a un intru
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$K$8" Then copie (Target)
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Un dernier conseil (pour la route)
Je dois partir quérir quelques nourritures et boissons
Eviter autant que faire se peut les Select et Activate
Exemple: une de tes macros sans Select
VB:
Sub Delta()
' Delta Macro | Calcul Delta devis-facture
With Range("V11")
    .FormulaR1C1 = "=IF(RC[-4],RC[-4]-RC[-1],0)"
    .NumberFormat = "#,##0.00 [$CHF-fr-CH];[Red]-#,##0.00 [$CHF-fr-CH];""Pas de facture !"";@"
End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Ca y je me suis ressaisi
J'ai bu deux verveines corsées

Mais c'est plus simple quand le fichier exemple ne contient que le nécessaire pour illustrer le problème rencontré.

A présent, je laisse mes petits camarades de jeu prendre le relais

(Faut que j'aille aux commissions, avec mon petit caddie à roulettes)
Oui c'est ma part du colibri pour la planète.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à @CM1090 ,
Bonsoir @Lolote83, @Staple1600 (parti faire ses commissions), @Hasco (déjà couché) ,

Un fichier simplifié et remanié car une présentation du calendrier qui ne me convenait pas :
  • tous les modules ont été supprimés (fichier plus concis et suffisant pour répondre à la demande)
  • le calendrier a été un peu réorganisé pour qu'au niveau de chaque colonne on voit précisément l'année, le mois, le type de jour et le numéro du jour ainsi que le numéro de semaine.
  • des MFC (for peu) colorent les en-têtes du calendrier de telle sorte que chacun des blocs (année / mois / semaine) ait une couleur différente du bloc adjacent
Le principe : à partir de l'année et du mois, on calcule le décalage à faire par rapport à la colonne de base K.

L'année sera saisie à la main (2 ou 4 chiffres) ou sélectionnée dans la liste déroulante (2 ou 4 chiffres)
Le mois sera saisi à la main (de 1 à 12) ou sélectionné dans la liste déroulante.

Le code dans le module de la feuille est :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d
   If Not Intersect(Target, Range("i3:i4")) Is Nothing Then
      d = DateSerial(2000 + (Range("i3") Mod 100), Range("i4"), 1) - Range("k11")
      If d >= 0 Then Application.Goto Range("k1").Offset(, d), True
   End If
End Sub
 

Pièces jointes

  • CM1090- Calendrier- v1a.xlsm
    49.1 KB · Affichages: 3
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…