Impression automatique et masquage colonnes

Messages postés
4
Date d'inscription
mardi 28 mai 2019
Statut
Membre
Dernière intervention
1 juin 2019
- - Dernière réponse : via55
Messages postés
11192
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2019
- 1 juin 2019 à 09:15
Bonjour,

Bonjour,

N'ayant pas trouvé de solution je me tourne vers le forum,

Je joint un fichier d'exemple pour plus de détails aux explications ci dessous:
(ce n'est jamais très clair !)

Chaque jours j'imprime plusieurs onglets de la façon suivante:
Liste de produit +Jour 1 (date du jour) et quantités

ce qui correspond au cellules B1:E9 que je sélectionne pour impression ( imprimer la sélection)

J'ai une macro qui masque la journée de la veille
du coup le l'en demain je me retrouve avec les colonnes B1:H9 à imprimer.

Je dois donc sélectionner les feuilles avec contrôle, mettre ma sélection en surbrillance et imprimer la sélection.

Comment automatiqer cette selection qui chaque jours ne peux rester au même emplacement car des colonnes sont masqués ?

J'ai raisonné dans ce sens :

Si cellule (xx) = "date voulue"
alors sélection cellules correspondante
impression sélection

A voir selon vos idées !

https://www.cjoint.com/c/IECkYgPJwmj

Merci d'avance pour votre aide.


Très bonne journée


Configuration: Windows / Chrome 74.0.3729.169
Afficher la suite 

4 réponses

Messages postés
11192
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2019
1452
0
Merci
Bonjour

Tu peux par macro faire masquer toutes les colonnes qui ne correspondent pas à la date du jour
Sub masquer()
'dernière colonne remplie en ligne 2 de la feuille
col = ActiveSheet.Rows(2).Find("*", , , , xlByRows, xlPrevious).Column
'boucle sur les colonnes de 3eme à derniere par pas de 3
For n = 3 To col Step 3
'si la date dans la colonne <> date du jour on masque ma colonne et les 2 suivantes
If Cells(1, n) <> Date Then
Columns(n).Hidden = True
Columns(n + 1).Hidden = True
Columns(n + 2).Hidden = True
End If
Next
End Sub

Cdlmnt
Via
Elryk
Messages postés
4
Date d'inscription
mardi 28 mai 2019
Statut
Membre
Dernière intervention
1 juin 2019
-
Bonjour Via,

Merci pour ta réponse,

effectivement ça fonctionne!

En revanche sur mon 2ème fichier, je n'ai pas réussi à intégrer le code pour 2 raisons:

1- il est structuré légèrement différent.
2- je dois afficher cette fois la date du lendemain


Voici la structure de mon fichier:



Les dates sont également présente dans la première ligne sur toutes les colonnes (problèmes avec cellules fusionnés !)

Grâce à toi j'y suis presque !
Commenter la réponse de via55
Messages postés
98
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
28 mai 2019
6
0
Merci
Si tu t'ajoute une macro d'impression qui masque les date supérieur aussi ça t'éviterais de faire une sélection et permettrais d'imprimer ton ficher sans problème
Elryk
Messages postés
4
Date d'inscription
mardi 28 mai 2019
Statut
Membre
Dernière intervention
1 juin 2019
-
Bonjour Juer31,

La réponse de Via est exactement la même que toi, je n'ai plus qu'a en conclure que ça sera la meilleur solution,

Comme je le disais en réponse à Via, il me reste quelques détails à apporter, avec votre aide bien sûr !

Merci !
Commenter la réponse de juer31
Messages postés
4
Date d'inscription
mardi 28 mai 2019
Statut
Membre
Dernière intervention
1 juin 2019
0
Merci
Bonjour,

Je fais un petit UP ,

sur le message suivant, j'essaye d'adapter le code à 2 colonnes mais sans succès !

Bonjour Via,

Merci pour ta réponse,

effectivement ça fonctionne!

En revanche sur mon 2ème fichier, je n'ai pas réussi à intégrer le code pour 2 raisons:

1- il est structuré légèrement différent.
2- je dois afficher cette fois la date du lendemain


Voici la structure de mon fichier:




Les dates sont également présente dans la première ligne sur toutes les colonnes (problèmes avec cellules fusionnés !)

J'ai tenté de modifié les lignes

For n = 3 To col Step 3 (en 2 to col Step2)
'si la date dans la colonne <> date du jour on masque ma colonne et les 2 suivantes
If Cells(1, n) <> Date Then (pas trouvé pour placé "today+1")
Columns(n).Hidden = True
Columns(n + 1).Hidden = True
Columns(n + 2).Hidden = True


Merci encore.
Commenter la réponse de Elryk
Messages postés
11192
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2019
1452
0
Merci
Bonjour Elryk

For n = 2 to col step 2 devrait être bon
Date + 1 doit donner la date du lendemain

Avec 2 colonnes par date tu n'as plus besoin de Columns(n + 2).Hidden = True

Les cellules fusionnées sont toujours un problème pour les formules et les macros , il faut les éviter à tout prix et les remplacer avantageusement par une mise en forme; dans ton cas tu défusionnes puis sélectionnes les cellules C2:D2 puis clic droit Format de cellules - Alignement - Horizontal - Centré sur plusieurs colonnes

Cdlmnt
Via
Commenter la réponse de via55