Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

masquer/afficher au fur et à mesure

10 réponses
Avatar
Greg
Bonjour (ou Re! car je suis assez présent ce soir...)

Pourriez vous m'aider à réaliser deux macro qui permettraient d'afficher
successivement des colonnes qui fonctionnent par 3: BCD, EFG, HIJ etc... et
une troisième macro qui permettrait de lancer l'impression (je m'explique
plus bas):

Au départ, toutes ces colonnes seraient masquées. Seules la colonne A serait
apparente. Il y a aurait un bouton qui permettrait d'afficher BCD, puis EFG,
puis HIJ etc... et une autre qui permettrait de revenir en arrière (si HIJ
est affiché, on revient sur EFG, puis BCD etc...). Autrement dit, la macro
masque les 3 colonnes visibles à côté de la colonne A et affiche les trois
suivantes ou précédentes.

Je souhaiterait également une macro qui permettrait de lancer les
impressions: colonne A+BCD, colonne A+EFG, colonne A+HIJ etc... la routine
s'arrêterait selon un nombre de colonnes (sans compter la colonne A) qui
serait écrit en cellule A1. Si le nombre qui est écrit en cellule A1 est 9,
il imprime successivement A+BCD, A+EFG puis A+HIJ. Si le nombre est 15, il
imprime en plus A+KLM et A+NOP etc....


Merci pour vos lumières

Greg

10 réponses

Avatar
Greg
Je comprendrais que la denière macro vous inspire moins....

Sauriez-vous m'aider au moins sur les deux premières?
Avatar
Corona
Bonsoir Greg,
Je ne sais pas si c'est la réponse à ta première question
http://www.cijoint.fr/cjlink.php?file=cj200912/cijKFq0zlx.xls
Philippe

Greg a écrit :
Bonjour (ou Re! car je suis assez présent ce soir...)

Pourriez vous m'aider à réaliser deux macro qui permettraient d'afficher
successivement des colonnes qui fonctionnent par 3: BCD, EFG, HIJ
etc... et une troisième macro qui permettrait de lancer l'impression
(je m'explique plus bas):

Au départ, toutes ces colonnes seraient masquées. Seules la colonne A
serait apparente. Il y a aurait un bouton qui permettrait d'afficher
BCD, puis EFG, puis HIJ etc... et une autre qui permettrait de revenir
en arrière (si HIJ est affiché, on revient sur EFG, puis BCD etc...).
Autrement dit, la macro masque les 3 colonnes visibles à côté de la
colonne A et affiche les trois suivantes ou précédentes.

Je souhaiterait également une macro qui permettrait de lancer les
impressions: colonne A+BCD, colonne A+EFG, colonne A+HIJ etc... la
routine s'arrêterait selon un nombre de colonnes (sans compter la
colonne A) qui serait écrit en cellule A1. Si le nombre qui est écrit en
cellule A1 est 9, il imprime successivement A+BCD, A+EFG puis A+HIJ. Si
le nombre est 15, il imprime en plus A+KLM et A+NOP etc....


Merci pour vos lumières

Greg


Avatar
Greg
Bonsoir et merci,

La proposition ressemble à ce que je voudrais.

En fait, il faut imaginer que BCD, EFG, HIJ etc..... jusque la colonne CM
sont masqués. Quand je clique sur BCD, les trois colonnes B-C-D
apparaissent à côté de la colonne A. Quand je clique ensuite sur WXY, BCD
disparait et on peut voir WXY à côté de la colonne A etc... Un accès tout
simple me conviendrait mais si je pouvais réver:

-------------


Concernant la présentation, l'idéal serait de pouvoir choisir dans une liste
déroulante et que les noms de la liste correspondent à une liste que
j'aurais mis en feuille 3 de A2 à A31:

Contenu de la cellule A2 (Greg): B-C-D
Contenu de la cellule A3 (Jacky): E-F-G
....
Contenu de la cellule A31(Frédo):CK-CL-CM

Pour être plus concrêt: s'il est écrit "Jacky" en cellule A3, feuille3, on
peut retrouver les colonnes EFG à côté de la colonne A si l'on clique sur
"Jacky" dans la liste déroulante qui lance la macro.

Voilà... j'espère étre clair. Sinon, j'essaierai de faire une PJ.

à plus

Greg
Avatar
Corona
Bonsoir Greg,
Si tu veux une liste, il suffit d'utiliser dans les formulaire la
"Liste déroulante" en lieu et place des "Case option" que j'ai utilisés
Cet objet renvoie la position dans la liste et tu reprends le même
code que j'ai utilisé pour "Case Option". Cette liste peut bien entendu
être alimentée par une plage nommée.
Il est également possible d'utiliser une fonction EQUIV (MATCH) pour
chercher le nom dans une colonne et ainsi connaître sa position et
masquer à partir de cette adresse.
Plusieurs solutions sont possible.
Philippe

Greg a écrit :
Bonsoir et merci,

La proposition ressemble à ce que je voudrais.

En fait, il faut imaginer que BCD, EFG, HIJ etc..... jusque la colonne
CM sont masqués. Quand je clique sur BCD, les trois colonnes B-C-D
apparaissent à côté de la colonne A. Quand je clique ensuite sur WXY,
BCD disparait et on peut voir WXY à côté de la colonne A etc... Un accès
tout simple me conviendrait mais si je pouvais réver:

-------------


Concernant la présentation, l'idéal serait de pouvoir choisir dans une
liste déroulante et que les noms de la liste correspondent à une liste
que j'aurais mis en feuille 3 de A2 à A31:

Contenu de la cellule A2 (Greg): B-C-D
Contenu de la cellule A3 (Jacky): E-F-G
.....
Contenu de la cellule A31(Frédo):CK-CL-CM

Pour être plus concrêt: s'il est écrit "Jacky" en cellule A3, feuille3,
on peut retrouver les colonnes EFG à côté de la colonne A si l'on clique
sur "Jacky" dans la liste déroulante qui lance la macro.

Voilà... j'espère étre clair. Sinon, j'essaierai de faire une PJ.

à plus

Greg


Avatar
Greg
Merci Philippe pour les explications. Malheureusement, mes petites
compétences dans Excel me rendent bien incapble de mettre ça en place....
Même avec beaucouip de bonne volonté!


En espérant qu'une bonne âme me donnera un coup de main... ou de pied dans
les fesses ;-)

Greg


"Corona" a écrit dans le message de
news:e$
Bonsoir Greg,
Si tu veux une liste, il suffit d'utiliser dans les formulaire la "Liste
déroulante" en lieu et place des "Case option" que j'ai utilisés
Cet objet renvoie la position dans la liste et tu reprends le même code
que j'ai utilisé pour "Case Option". Cette liste peut bien entendu être
alimentée par une plage nommée.
Il est également possible d'utiliser une fonction EQUIV (MATCH) pour
chercher le nom dans une colonne et ainsi connaître sa position et masquer
à partir de cette adresse.
Plusieurs solutions sont possible.
Philippe
Greg a écrit :
Bonsoir et merci,

La proposition ressemble à ce que je voudrais.

En fait, il faut imaginer que BCD, EFG, HIJ etc..... jusque la colonne CM
sont masqués. Quand je clique sur BCD, les trois colonnes B-C-D
apparaissent à côté de la colonne A. Quand je clique ensuite sur WXY,
BCD disparait et on peut voir WXY à côté de la colonne A etc... Un accès
tout simple me conviendrait mais si je pouvais réver:

-------------


Concernant la présentation, l'idéal serait de pouvoir choisir dans une
liste déroulante et que les noms de la liste correspondent à une liste
que j'aurais mis en feuille 3 de A2 à A31:

Contenu de la cellule A2 (Greg): B-C-D
Contenu de la cellule A3 (Jacky): E-F-G
.....
Contenu de la cellule A31(Frédo):CK-CL-CM

Pour être plus concrêt: s'il est écrit "Jacky" en cellule A3, feuille3,
on peut retrouver les colonnes EFG à côté de la colonne A si l'on clique
sur "Jacky" dans la liste déroulante qui lance la macro.

Voilà... j'espère étre clair. Sinon, j'essaierai de faire une PJ.

à plus

Greg




Avatar
Jacky
Bonjour,

Je propose cette piste
http://www.cijoint.fr/cjlink.php?file=cj200912/cijkGX4vpK.xls

--
Salutations
JJ


"Greg" a écrit dans le message de news:

Merci Philippe pour les explications. Malheureusement, mes petites
compétences dans Excel me rendent bien incapble de mettre ça en place....
Même avec beaucouip de bonne volonté!


En espérant qu'une bonne âme me donnera un coup de main... ou de pied dans
les fesses ;-)

Greg


"Corona" a écrit dans le message de
news:e$
Bonsoir Greg,
Si tu veux une liste, il suffit d'utiliser dans les formulaire la
"Liste déroulante" en lieu et place des "Case option" que j'ai utilisés
Cet objet renvoie la position dans la liste et tu reprends le même code
que j'ai utilisé pour "Case Option". Cette liste peut bien entendu être
alimentée par une plage nommée.
Il est également possible d'utiliser une fonction EQUIV (MATCH) pour
chercher le nom dans une colonne et ainsi connaître sa position et
masquer à partir de cette adresse.
Plusieurs solutions sont possible.
Philippe
Greg a écrit :
Bonsoir et merci,

La proposition ressemble à ce que je voudrais.

En fait, il faut imaginer que BCD, EFG, HIJ etc..... jusque la colonne
CM sont masqués. Quand je clique sur BCD, les trois colonnes B-C-D
apparaissent à côté de la colonne A. Quand je clique ensuite sur WXY,
BCD disparait et on peut voir WXY à côté de la colonne A etc... Un accès
tout simple me conviendrait mais si je pouvais réver:

-------------


Concernant la présentation, l'idéal serait de pouvoir choisir dans une
liste déroulante et que les noms de la liste correspondent à une liste
que j'aurais mis en feuille 3 de A2 à A31:

Contenu de la cellule A2 (Greg): B-C-D
Contenu de la cellule A3 (Jacky): E-F-G
.....
Contenu de la cellule A31(Frédo):CK-CL-CM

Pour être plus concrêt: s'il est écrit "Jacky" en cellule A3, feuille3,
on peut retrouver les colonnes EFG à côté de la colonne A si l'on clique
sur "Jacky" dans la liste déroulante qui lance la macro.

Voilà... j'espère étre clair. Sinon, j'essaierai de faire une PJ.

à plus

Greg







Avatar
Corona
Bonjour Greg,
Pour ta dernière question quant à l'impression
==> A placer en début du module où sont les procédures
d'Afficher/Masquer
Dim maPlage as range
==> A placer dans la procédure qui affiche les colonnes
' Calcul de la Plage à imprimer
Set maPlage = Range(Cells(1, NumColonneStart), Cells(30,
NumColonneStart+2))
' Donnera comme adresse $E$1:$G$30 si NumColonneStart = 4 et si les
lignes à imprimer vont de 1 à 30 − A adapter selon les besoins
ActiveSheet.PageSetup.PrintArea = maPlage.Address (Où maPlage.Address
représente l'adresse à imprimer)
Philippe



Greg a écrit :
Je comprendrais que la denière macro vous inspire moins....

Sauriez-vous m'aider au moins sur les deux premières?


Avatar
FS
Bonjour,

Une proposition sans liste. Dans la cellule A2 de la feuille qui
cache/affiche des colonnes, tu tapes la (ou les) lettre(s) d'une des 3
colonnes à afficher et elles s'affichent :

'================== Sub ColonnesAuChoix(UneColonne)
Dim i&, x&
If UneColonne = "" Then GoTo Erreur
Range("B1:CM1").EntireColumn.Hidden = True
i = Cells(1, UneColonne).Column
If i = 1 Or i > 91 Then GoTo Erreur
x = (Application.Match((i - 1) Mod 3, Array(1, 2, 0), 0) - 1) * -1
Cells(1, i + x).Resize(, 3).EntireColumn.Hidden = False
Exit Sub
Erreur:
Range("B1:CM1").EntireColumn.Hidden = False
End Sub
'====================
Procédure que tu peux appeler dans le module de code de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then
ColonnesAuChoix Target.Value
End If
End Sub

Un petit exemple ici :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijwvW9kVr.xls

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Greg a écrit :
Bonsoir et merci,

La proposition ressemble à ce que je voudrais.

En fait, il faut imaginer que BCD, EFG, HIJ etc..... jusque la colonne
CM sont masqués. Quand je clique sur BCD, les trois colonnes B-C-D
apparaissent à côté de la colonne A. Quand je clique ensuite sur WXY,
BCD disparait et on peut voir WXY à côté de la colonne A etc... Un accès
tout simple me conviendrait mais si je pouvais réver:

-------------


Concernant la présentation, l'idéal serait de pouvoir choisir dans une
liste déroulante et que les noms de la liste correspondent à une liste
que j'aurais mis en feuille 3 de A2 à A31:

Contenu de la cellule A2 (Greg): B-C-D
Contenu de la cellule A3 (Jacky): E-F-G
.....
Contenu de la cellule A31(Frédo):CK-CL-CM

Pour être plus concrêt: s'il est écrit "Jacky" en cellule A3, feuille3,
on peut retrouver les colonnes EFG à côté de la colonne A si l'on clique
sur "Jacky" dans la liste déroulante qui lance la macro.

Voilà... j'espère étre clair. Sinon, j'essaierai de faire une PJ.

à plus

Greg


Avatar
Greg
Merci beaucoup pour toutes vos propositions.

à bientôt

Greg

"FS" a écrit dans le message de
news:eGDcb$
Bonjour,

Une proposition sans liste. Dans la cellule A2 de la feuille qui
cache/affiche des colonnes, tu tapes la (ou les) lettre(s) d'une des 3
colonnes à afficher et elles s'affichent :

'================== > Sub ColonnesAuChoix(UneColonne)
Dim i&, x&
If UneColonne = "" Then GoTo Erreur
Range("B1:CM1").EntireColumn.Hidden = True
i = Cells(1, UneColonne).Column
If i = 1 Or i > 91 Then GoTo Erreur
x = (Application.Match((i - 1) Mod 3, Array(1, 2, 0), 0) - 1) * -1
Cells(1, i + x).Resize(, 3).EntireColumn.Hidden = False
Exit Sub
Erreur:
Range("B1:CM1").EntireColumn.Hidden = False
End Sub
'==================== >
Procédure que tu peux appeler dans le module de code de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then
ColonnesAuChoix Target.Value
End If
End Sub

Un petit exemple ici :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijwvW9kVr.xls

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Greg a écrit :
Bonsoir et merci,

La proposition ressemble à ce que je voudrais.

En fait, il faut imaginer que BCD, EFG, HIJ etc..... jusque la colonne CM
sont masqués. Quand je clique sur BCD, les trois colonnes B-C-D
apparaissent à côté de la colonne A. Quand je clique ensuite sur WXY,
BCD disparait et on peut voir WXY à côté de la colonne A etc... Un accès
tout simple me conviendrait mais si je pouvais réver:

-------------


Concernant la présentation, l'idéal serait de pouvoir choisir dans une
liste déroulante et que les noms de la liste correspondent à une liste
que j'aurais mis en feuille 3 de A2 à A31:

Contenu de la cellule A2 (Greg): B-C-D
Contenu de la cellule A3 (Jacky): E-F-G
.....
Contenu de la cellule A31(Frédo):CK-CL-CM

Pour être plus concrêt: s'il est écrit "Jacky" en cellule A3, feuille3,
on peut retrouver les colonnes EFG à côté de la colonne A si l'on clique
sur "Jacky" dans la liste déroulante qui lance la macro.

Voilà... j'espère étre clair. Sinon, j'essaierai de faire une PJ.

à plus

Greg




Avatar
Greg
Merci Philippe pour ta dernière remarque. Je vais tenter ça!

à plus

Greg

"Corona" a écrit dans le message de
news:
Bonjour Greg,
Pour ta dernière question quant à l'impression
==> A placer en début du module où sont les procédures
d'Afficher/Masquer
Dim maPlage as range
==> A placer dans la procédure qui affiche les colonnes
' Calcul de la Plage à imprimer
Set maPlage = Range(Cells(1, NumColonneStart), Cells(30,
NumColonneStart+2))
' Donnera comme adresse $E$1:$G$30 si NumColonneStart = 4 et si les
lignes à imprimer vont de 1 à 30 − A adapter selon les besoins
ActiveSheet.PageSetup.PrintArea = maPlage.Address (Où maPlage.Address
représente l'adresse à imprimer)
Philippe



Greg a écrit :
Je comprendrais que la denière macro vous inspire moins....

Sauriez-vous m'aider au moins sur les deux premières?