Bouton de déplacement

Fermé
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 - 2 janv. 2013 à 22:38
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 - 5 janv. 2013 à 19:53
Bonjour, Bonsoir,
J'ai un tableau assez haut (950 lignes) reprenant un planning annuel à raison de 15 lignes pour chaque semaine, avec les différents pointages, compte d'heures, etc.
Je voudrais apposer tout en haut, visible à l'ouverture, un bouton d'appel me permettant de me déplacer verticalement en appelant la semaine S, ou le lundi correspondant, sans avoir à cliquer +++ pour atteindre la semaine que je veux consulter.
Je saurais faire sur Access mais pas sur Excel.
Merci de votre aide



9 réponses

cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
2 janv. 2013 à 22:51
Bonsoir,

Est-ce que la date apparaît dans la colonne A, par exemple?

@ te relire
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
2 janv. 2013 à 23:03
J'admire la rapidité de ta réponse à ma demande. Bravo!

Meilleurs voeux.

En l'occurrence les noms de semaine sont bien dans la colonne A, mais sous forme calculée (="Semaine "&NO.SEMAINE(B2;1) , B2 étant bien sûr le lundi. Egalement les jours figurent sur 3 colonnes fusionnées.
Cela étant dit, peu importe la place exacte du bouton par rapport à ces 4 colonnes. Si par ailleurs, dans le choix proposé, je pouvais avoir 2 colonnes (semaine et date du lundi) ce n'en serait que mieux, parce qu'on ne sais pas forcément à quoi correspond la semaine 15 ou 21.
0
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
2 janv. 2013 à 23:18
Re-,

Je suppose que dans ton planning, tu as quelques dates.....

Ne connaissant pas la structure de ton fichier, tu peux figer les volets, pour garder les 2 premières lignes, par exemple.

Puis, il suffit de chercher la date du jour en ouvrant le fichier, et on scrolle automatiquement.

Mais pour cela, il faut qu'on cherche la date du jour dans ton planning...

PS, en VBA, afin d'obtenir la date du lundi de la semaine en cours, tu peux l'obtenir ainsi :

Lun = Evaluate(Date * 1 & "-(WEEKDAY(" & Date * 1 & ",2)-1)")


Tu obtiens un nombre (c'est ainsi qu'Excel considère les dates)

Pour la recherche dans la colonne A, et y aller en "scrollant", tu peux essayer ainsi :

Lig = Application.Match(Lun, Columns(1), 0)
Application.Goto Cells(Lig, 1), True


N'oublie pas de définir les variables "Lig" et "Lun" en "Long"

Dim Lig As Long, Lun As Long


Bon courage
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 2/01/2013 à 23:45
Bonsoir à tous,

une autre proposition :
Private Sub BtnSemaine_Click()  
    Dim sem As Long, c As Range  
    sem = CLng(Application.InputBox("N° de la semaine désirée", "Semaine", Type:=1))  
    Set c = [A:A].Find("Semaine " & sem, LookIn:=xlValues, lookat:=xlWhole)  
    If Not c Is Nothing Then c.Select  
End Sub 

https://www.cjoint.com/c/CAcxPcDmDTF
Tu peux modifier pour contrôler si c'est une saisie de date, contrôler et calculer le n° de semaine avec la fonction plus bas.

Cependant je ferais 2 remarques :

- si ton calendrier peut être à cheval sur 2 années il faut l'année en plus du n° de semaine: "Semaine 2013-1"

- no.semaine(date;1) est erroné pour l'europe qui utilise le système de semaine ISO.
Sur 2010 on peut utiliser no.semaine(date;21), ou pour être compatible toutes versions utiliser une des nombreuses formules du web. Par exemple :
=ENT((A2-SOMME(MOD(DATE(ANNEE(A2-MOD(A2-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)

ou bien te faire une fonction personnalisée en vba puisque tu es parti pour en avoir dans ton classeur :
Function NoSemaineISO(Date1) As Integer  
    NoSemaineISO = DatePart("ww", Date1, vbMonday, vbFirstFourDays)  
End Function


eric


Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cousinhub29 Messages postés 985 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 janvier 2025 349
2 janv. 2013 à 23:47
Hi, Eric :)

Plutôt que .Select, ne vaut-il mieux pas remplacer par un Goto?

Et merci pour l'info (21) pour 2010 (en plus, je l'ai, mais je n'y avais jamais utilisé cette fonction, pour le moment....)

bonne soirée
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 3/01/2013 à 00:35
Plutôt que .Select, ne vaut-il mieux pas remplacer par un Goto?
On peut aussi oui, on aura ainsi les 15 lignes toujours visibles.
Dans ce cas remplacer par :
If Not c Is Nothing Then Application.Goto c, True

Tous mes voeux pour 2013 :-)

eric
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
3 janv. 2013 à 00:29
Re Bonsoir, et Meilleurs Voeux à tous,
Je vais être obligé de faire des choix puisque vous m'envoyez plusieurs propositions en même temps.
Pour ce qui est du comptage des semaines, Eric, je reprendrai donc ton idée parce que je n'était pas satisfait du système standard de Excel qui passe de la semaine 53 à la semaine 2 directement. Dans les anciennes versions j'ai le souvenir qu'on pouvais choisir le mode de comptage mais je ne l'ai pas retrouvé.
Le bouton est tout à fait ce que je voulais, mais du coup je vais voir à bidouiller une liste de choix adjacente qui me permette de sauter l'étape de la boite de dialogue.
CousinHub, tu ne seras pas en reste parce que je retiens ton idée de scroll immédiat sur la semaine en cours, quitte à avoir un 2ème bouton "SemaineCourante". Et je testerai ton code.

Le bouton dont je parles, vient en complément de la proposition que j'ai envoyé hier à Cathy62142 (SOS PLEASE calcul de pointage) . : https://www.cjoint.com/?3Adax39neHD
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
3 janv. 2013 à 11:51
Bonjour,

exemple avec liste déroulante affichant n°semaine et date du lundi :
https://www.cjoint.com/c/CAdlYbUGyJS

eric
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
4 janv. 2013 à 01:49
Merci à tous deux, CousinHub et Eriic,
votre aide m'a été d'un grand secours et très précieuse. Grâce à vos solutions et suggestions, le résultat est meilleur que ce que j'avais en vue.
Bonne continuation. J'aurais sans doute d'autres questions à propos des déplacements et des boite de dialogue dans Excel que je ne maîtrise absolument pas.
Bonne nuit.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
4 janv. 2013 à 12:29
Bonjour,

J'ai vu ton dernier fichier et j'ai qcq suggestions.
- Tu peux utiliser la fonction personnalisée NoSemaineISO() sur la feuille pour avoir des n° corrects.
- vu que tu as choisi la saisie de la semaine sur la feuille tu peux utiliser l'évènement Change pour le détecter et te passer du bouton.
- on ne pourra jamais demander la semaine 2 de 2014, ça sera toujours la première 2013-2 qui sera choisie vu que l'année ne figure pas dans le n° de semaine.

eric
0
Tessel75 Messages postés 192 Date d'inscription lundi 17 décembre 2012 Statut Membre Dernière intervention 19 janvier 2013 22
5 janv. 2013 à 19:53
Bonsoir,
Merci Eric de t'être intéressé à ma proposition pour Cathy.
Tu as complètement raison d'insister sur l'équation de la semaine, elle ne plaisait pas vraiment, je l'ai donc changé en reprenant ta formule. Mais en fait je l'avais, ta formule, déjà utilisé dans le code du bouton mais effectivement j'avais négligé la page elle-même. Voila, c'est corrigé.
En même temps, le fait que la différence entre les années ne puisse pas être faite n'est pas très important compte tenu de ce que l'objet principal est le compte des heures avec un pointage assez strict. J'avais préféré me concentré sur ces formules-là. Et du coup, je me dis qu'il vaut mieux ne pas dépasser la 53ème semaine et entamer une nouvelle année que de déborder comme avec un calendrier.
Enfin, je me permets de te faire remarquer qu'en réalité la cellule qui reçoit le N° de la semaine demandée, peut recevoir également les dates puisque généralement on ne connait pas ce N°. De la même façon, je me suis débrouillé pour que l'absence de donnée dans cette cellule corresponde à "aujourdhui()", ce qui aboutit à ce que, pour retrouver la semaine du jour, il suffise de cliquer sur le bouton sans rien faire d'autre.
Maintenant, plutôt satisfait du résultat et après avoir corrigé les équations des comptes d'heures qui étaient défaillantes, je crois que le mieux serait l'ennemi du bien; aussi je préfère le laisser tel.
Cela dit, je ne manquerai pas à l'avenir de demander de profiter de tes connaissances.
0