VBA: Faire défiler automatiquement des colonnes suivant une valeur

Thibogratteleglobe

XLDnaute Nouveau
Bonjour à tous!

Je viens vers vous pour me donner un coup de main. Je suis vraiment novice de chez novice en code, VBA etc... Je suis un fidèle partisan des fonctions classiques et logiques ET, SI, OU, RECHERCHEV...! Par contre je vois bien qu'on ne fait pas tout avec, je me retrouve donc bloqué. Voici mon problème:

1/Sur mon fichier, j'ai mes premières colonnes qui sont figées. Suivant la date du jour en cellule "A1", je calcule le numéro de la semaine, le résultat s'affiche en "A10". Mes autres colonnes à droite comportent des dates, et le numéro de la semaine au dessus du premier jour de la semaine. Je souhaiterais donc faire défiler automatiquement mon tableau pour faire en sorte que la colonne qui sera affichée contre les colonne figées, soit celle correspondante au bon numéro de semaine.

2/Que toujours suivant la valeur de la semaine calculée, je souhaiterais que la zone d'impression se définisse automatiquement sur les colonnes correspondantes. Si le numéro de semaine calculé est "5", il faudrait que ça me définisse la zone d'impression correspondante aux colonnes figées de gauches (item généraux A1:C85) et aux colonnes regroupées sous la semaine "5" (CZ1:EA85).

Clairement je ne sais pas comment m'y prendre. J'ai bien vu plusieurs pages du forum traitant en partie du sujet mais c'est un peu du chinois pour moi...

Le seul truc que j'étais arrivé à faire c'est installer un bouton pour activer l'impression! Tout cela pour vous dire que j'imagine bien que trouverez une solution à ce problème, mais qu'il va falloir si possible détailler au maximum pour moi (par où commencer, le bouton, etc)... Comme on dit, je comprends vite, mais il faut m'expliquer longtemps!

Voilà, mon but est d'avoir au final un document de pointage facile à remplir et à mettre en page. Les futurs utilisateurs de ce documents ne sont pas forcément des mordus d'informatique, c'est pourquoi je me dois de trouver un truc qui leur facilite la vie.

Merci à vous tous en tout cas!
 

Pièces jointes

  • Exemple1.xlsx
    13.3 KB · Affichages: 82
  • Exemple1.xlsx
    13.3 KB · Affichages: 95
  • Exemple1.xlsx
    13.3 KB · Affichages: 91

Lolote83

XLDnaute Barbatruc
Re : VBA: Faire défiler automatiquement des colonnes suivant une valeur

Salut,
Voir ici en fichier joint si j'ai bien compris ta demande
@+ Lolote83
 

Pièces jointes

  • Copie de THIBOGRATTELEGLOBE - Définir zone impression.xlsm
    26.2 KB · Affichages: 170

Thibogratteleglobe

XLDnaute Nouveau
Re : VBA: Faire défiler automatiquement des colonnes suivant une valeur

Merci Lolote et BRAVO pour cette première solution!
Elle me permet en effet d'avoir à l'écran les bonnes colonnes! Je suis encore en train de déchiffrer un peu le code pour voir à correspondent toutes les inscriptions, mais en tout cas ça marche!
 

Thibogratteleglobe

XLDnaute Nouveau
Re : VBA: Faire défiler automatiquement des colonnes suivant une valeur

Après vérifications en ayant copié le code dans mon tableau définitif, la procédure fonctionne parfaitement jusqu'à la semaine 25 (comprise). Si j'inscris une date à partir de la semaine 26, j'ai une erreur dans la partie du code "zone d'impression".

J'ai essayé en remplaçant les "26" par "53" étant donné que mon tableau final comporte 53 semaines (fin du tableau à la colonne "BDK"), mais rien y fait.

Je joins dessous une impression d'écran du code.
Erreur code.jpg
 

job75

XLDnaute Barbatruc
Re : VBA: Faire défiler automatiquement des colonnes suivant une valeur

Bonjour Thibogratteleglobe, Lolote83,

Voyez le fichier joint avec la formule en A10 et cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Dim nsem, pas%, c As Range, i%
nsem = Val([A10].Text) 'numéro de semaine
pas = 4
'---recherche du n° de semaine en ligne 1---
Set c = [1:1].Find(nsem, , xlValues, xlWhole)
If Not c Is Nothing Then
  '---cadrage---
  Application.Goto c, True
  '---zone d'impression---
  i = 1
  While c(2, i) <> "" And Weekday(c(2, i)) > 1
    i = i + pas
  Wend
  Me.PageSetup.PrintArea = Range(c, c(2, i).MergeArea).EntireColumn.Address
End If
End Sub
La macro se lance quand on valide ou revalide A1.

Elle fait 2 choses : cadrer la bonne semaine et définir la zone d'impression.

Nota : je suis sur Excel 2003, convertissez le fichier en .xlsm pour créer toutes les semaines de l'année.

A+
 

Pièces jointes

  • Exemple(1).xls
    59 KB · Affichages: 85
  • Exemple(1).xls
    59 KB · Affichages: 109
  • Exemple(1).xls
    59 KB · Affichages: 105

Thibogratteleglobe

XLDnaute Nouveau
Re : VBA: Faire défiler automatiquement des colonnes suivant une valeur

Merci Job75, votre code marche nickel, pour toutes les semaines. J'ai modifié 2/3 trucs afin de rentrer manuellement le numéro de semaine en "A10" au final, et que le code vienne chercher cette valeur (au lieu de prendre en "A1").
Le seul petit "hic" est que j'ai un logo que je dois absolument faire apparaître sur mon document, et que lorsque je valide mon résultat (que ce soit en "A1" comme avant ou "A10" après ma modif), l'image se met à sauter/trembler! De quoi faire une crise d'épilepsie!!
J'imagine que c'est un problème lié à la macro? ou au format de l'image?
 

Thibogratteleglobe

XLDnaute Nouveau
Re : VBA: Faire défiler automatiquement des colonnes suivant une valeur

Bon, j'ai pu contourner mon problème d'image parkinsonienne en intégrant l'image de mon logo dans "l'en tête personnalisé", et non plus dans la feuille excel.

Merci à vous deux pour l'aide précieuse!

Comment passer le titre du sujet en "Résolu"?
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet