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

Comment repérer le nom de la vue active avec VBA

11 réponses
Avatar
Emile63
Bonjour a tous,
Je souhaite imprimer dans le pied de page de mon impression courante,
"la vue" qui =E9tait s=E9l=E9ctionn=E9e lors de l'impression.
Pour commencer, je n'arrive pas a la rep=E9rer..
Je suis en train de broder autour de ceci:

Sub ListeVue()
Dim MaVue As String
MaVue =3D ActiveSheet.CustomViews.Name
End Sub

Je vous remercie d'avance pour votre aide et conseils,
tr=E8s cordialement,

Emile

10 réponses

1 2
Avatar
isabelle
bonjour Emile,

Sub Macro1()
x = Selection.Address
For Each cv In ActiveWorkbook.CustomViews
cv.Show
y = Selection.Address
If x = y Then MsgBox cv.Name
Next
End Sub

isabelle

Emile63 a écrit :
Bonjour a tous,
Je souhaite imprimer dans le pied de page de mon impression courante,
"la vue" qui était séléctionnée lors de l'impression.
Pour commencer, je n'arrive pas a la repérer..
Je suis en train de broder autour de ceci:

Sub ListeVue()
Dim MaVue As String
MaVue = ActiveSheet.CustomViews.Name
End Sub

Je vous remercie d'avance pour votre aide et conseils,
très cordialement,

Emile



Avatar
Emile63
On 15 ene, 02:49, isabelle wrote:
bonjour Emile,

Sub Macro1()
x = Selection.Address
For Each cv In ActiveWorkbook.CustomViews
cv.Show
y = Selection.Address
If x = y Then MsgBox cv.Name
Next
End Sub

isabelle

Emile63 a écrit :



> Bonjour a tous,
> Je souhaite imprimer dans le pied de page de mon impression courante,
> "la vue" qui était séléctionnée lors de l'impression.
> Pour commencer, je n'arrive pas a la repérer..
> Je suis en train de broder autour de ceci:

> Sub ListeVue()
> Dim MaVue As String
>     MaVue = ActiveSheet.CustomViews.Name
> End Sub

> Je vous remercie d'avance pour votre aide et conseils,
> très cordialement,



Bonjour à tous,
Bonjour Isabelle et merci pour ton aide.
J'ai testé ta proposition, malheureusement ça ne répond pas comme je
le souhaitais... :-(
En effet, cette boucle passe en revue et active l'une après l'autre
(cv.Show ), toutes les vues du classeur.
Alors que moi je souhaite trouver le "Nom" de la vue active à ce
moment là.
J'ai l'impression que c'est la variable de "Selection.address" qui
provoque le problème.
- Est-ce qu'elle ne devrait pas garder le "Nom" de la vue, au lieu de
l'adresse de la cellule ($A$1)?
Cordialement,
Emile
Avatar
michdenis
Le modèle objet d'excel n'a pas défini une façon simple d'obtenir ce que
tu désires.

Cependant, lorsque l'on décide de définir une vue personnalisée, on veut
déterminer un certain nombre de caractéristiques que l'on désire conserver
pour des fins de visualisation future ou pour l'impression.

Ces caractéristiques peuvent être :

- Largeurs des colonnes, hauteur des lignes, certaines lignes masquées ou non,
- présence du quadrillage ou pas, des sauts de page, cellules sélectionnées,
- taille et position des fenêtres, partage de la fenêtre, volets figés,
- résultats de filtres pour les listes de données
- Définition d'une zone d'impression et autres paramètres d'impression.

Il s'agit d'identifier une seule caractéristique propre à chacune des vues
personnalisées que l'on a créé et utilisé une procédure générale pour
tester quelle caractéristique particulière est affichée dans la feuille
active au moment où on désire obtenir le nom de la feuille.

Résumé : Une caractéristique -> un nom d'une vue personnalisée
si la caractéristique est affichée -> on sait de quelle vue personnalisée il s'agit.








"Emile63" a écrit dans le message de groupe de discussion :

Bonjour a tous,
Je souhaite imprimer dans le pied de page de mon impression courante,
"la vue" qui était séléctionnée lors de l'impression.
Pour commencer, je n'arrive pas a la repérer..
Je suis en train de broder autour de ceci:

Sub ListeVue()
Dim MaVue As String
MaVue = ActiveSheet.CustomViews.Name
End Sub

Je vous remercie d'avance pour votre aide et conseils,
très cordialement,

Emile
Avatar
Modeste
Bonsour® "Michel" ;o)))
Bonne année !!! Meilleurs voeux à tous !!!

Le modèle objet d'excel n'a pas défini une façon simple d'obtenir ce
que tu désires.

Cependant, lorsque l'on décide de définir une vue personnalisée, on
veut déterminer un certain nombre de caractéristiques que l'on désire
conserver pour des fins de visualisation future ou pour l'impression.



;o))) autre bizarrerie....
Sub Aff_vues()
Dim Vue As CustomView

With ActiveWorkbook
If .CustomViews.Count < 1 Then
MsgBox "Pas de vues personnalisées", _
vbExclamation, _
.Name
Exit Sub
Else
For Each Vue In .CustomViews
Vue.Show
MsgBox "Vue : " & Vue.Name, _
vbInformation, _
"Affichages personnalisés de " & .Name
Next
End If
End With
End Sub

lorsque l'on utilise le gestionnaire de vue, il n'y a pas retour automatique à l'affichage courant de l'utilisateur... :-(

il est alors prudent de définir egalement la vue courante d'utilisation (qui peut etre déja une mise en forme élaborée de l'affichage dit "normal")

;o)))
@+
Avatar
michdenis
| lorsque l'on utilise le gestionnaire de vue, il n'y a pas retour
| automatique à l'affichage courant de| l'utilisateur... :-(

Effectivement Modeste... tu fais bien de le rappeler !
Avatar
Emile63
On 15 ene, 14:27, "michdenis" wrote:
| lorsque l'on utilise le gestionnaire de vue, il n'y a pas retour
| automatique à l'affichage courant de| l'utilisateur... :-(

Effectivement Modeste... tu fais bien de le rappeler !



Merci a vous, Michel et Modeste, pour votre aide.

J'ai sur un onglet une grande feuille de données qui présente des
caractéristiques de machines dans les colonne (env. 35) et les données
de ces caractéristiques par utilisateur (env. 100 lignes)
Impossible a visualiser ou imprimer correctement ma feuille. :-(
J'ai donc opté pour créer des vues qui masquent les colonnes inutiles
en fonction du sujet.
Ces vues ont des noms, comme: Caractéristiques des machines,
Utilisateurs etc.. (7 vues)
--------------------------------------------------------------------------- ---
Noms | Marque | Os | Software | etc... ->30
--------------------------------------------------------------------------- ---
Pierre | Toshiba | Win95 | Office |
Paul | Dell | Win98 | StarOffice |
Marie | HP | Win XP| OpenOffice|

L'idée que je recherchais, était d'imprimer en pied de page le nom de
la vue a laquelle correspond l'impression (lorsque ces impressions
passent par les mains de non-initiés..)

Mais, j'avoue qu'à la lecture de l'explication de Michel, je perds un
peu espoir de trouver une solution... Simple!
Je ne vois pas a quelle caractéristique "unique" par vue, je pourrais
me référer.
A moins que je me place sur les dernières colonnes (256ème) - qui sont
inutilisées - et que je les masques succèssivement en modifiant dans
ce sens mes 7 vues actuelles.
Toutefois je vois pas bien comment appliquer ce contrôle.
Je crois qu' il va me falloir de l'apirine en quantité ;-) et un bon
coup de main :-)
Merci encore pour vos idées,

Emile
Avatar
isabelle
bonjour Emile,

dans ce cas pourquoi ne pas nommer les différentes plages ?

Sub Macro1()
ActiveSheet.PageSetup.CenterFooter = Names(Selection.Name.Index).Name
Selection.PrintOut Copies:=1, Collate:=True
End Sub

isabelle

Emile63 a écrit :
On 15 ene, 14:27, "michdenis" wrote:

| lorsque l'on utilise le gestionnaire de vue, il n'y a pas retour
| automatique à l'affichage courant de| l'utilisateur... :-(

Effectivement Modeste... tu fais bien de le rappeler !




Merci a vous, Michel et Modeste, pour votre aide.

J'ai sur un onglet une grande feuille de données qui présente des
caractéristiques de machines dans les colonne (env. 35) et les données
de ces caractéristiques par utilisateur (env. 100 lignes)
Impossible a visualiser ou imprimer correctement ma feuille. :-(
J'ai donc opté pour créer des vues qui masquent les colonnes inutiles
en fonction du sujet.
Ces vues ont des noms, comme: Caractéristiques des machines,
Utilisateurs etc.. (7 vues)
------------------------------------------------------------------------------
Noms | Marque | Os | Software | etc... ->30
------------------------------------------------------------------------------
Pierre | Toshiba | Win95 | Office |
Paul | Dell | Win98 | StarOffice |
Marie | HP | Win XP| OpenOffice|

L'idée que je recherchais, était d'imprimer en pied de page le nom de
la vue a laquelle correspond l'impression (lorsque ces impressions
passent par les mains de non-initiés..)

Mais, j'avoue qu'à la lecture de l'explication de Michel, je perds un
peu espoir de trouver une solution... Simple!
Je ne vois pas a quelle caractéristique "unique" par vue, je pourrais
me référer.
A moins que je me place sur les dernières colonnes (256ème) - qui sont
inutilisées - et que je les masques succèssivement en modifiant dans
ce sens mes 7 vues actuelles.
Toutefois je vois pas bien comment appliquer ce contrôle.
Je crois qu' il va me falloir de l'apirine en quantité ;-) et un bon
coup de main :-)
Merci encore pour vos idées,

Emile




Avatar
Emile63
Bonjour a tous et merci pour vos idées et pour votre aide. ;-)
Grâce a vos idées j'ai résolu mon problème,
certes c'est pas joli-joli, et je pense que les puristes deraient
passer leurs chemin,
mais ça fonctionne comme je le souhaitais.. :-)
------------------
Sub Aff_vues()
Dim Vue As CustomView, MaVue As String
Dim tableau_Noms(1 To 10) As String
On Error Resume Next
With ActiveWorkbook
If .CustomViews.Count < 1 Then
MsgBox "Pas de vues personnalisées", _
vbExclamation, _
.Name
Exit Sub
Else
For Each Vue In .CustomViews
x = x + 1
tableau_Noms(x) = Vue.Name
Next
End If
End With
If Columns("IV:IV").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(1) ' Ma vue 1
If Columns("IU:IU").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(2) ' Ma vue 2
If Columns("IT:IT").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(3) ' Ma vue 3
If Columns("IS:IS").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(4) ' Ma vue 4
If Columns("IR:IR").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(5) ' Ma vue 5
If Columns("IQ:IQ").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(6) ' Ma vue 6
If Columns("IP:IP").EntireColumn.Hidden = True Then
MaVue = tableau_Noms
(7)
' Ma vue 7
Else: MaVue = "Ceci n'est pas une vue personalisée"
End If
Call imprime_vue_avec_nom(MaVue)
End Sub
Sub imprime_vue_avec_nom(MaVue As String)
Application.ScreenUpdating = False
ActiveSheet.PageSetup.CenterHeader = "&""Verdana""&16" & "Vue
parsonalisée: " & MaVue ' Nom de la vue
ActiveWindow.SelectedSheets.PrintPreview
Application.ScreenUpdating = True
End Sub



Cordialement,
Emile
Avatar
michdenis
En supposant que le nom de tes vues et la caractéristique
que tu leur as associé est statique, ceci aurait été suffisant ...

Je te suggère de faire référence à une feuille particulière pour
tes conditions. CustomViews est une propriété du classeur
cependant, une vue est une caractéristique d'une feuille.

Que tes 7 vues appartiennent à une feuille ou à des feuilles
différentes, je te suggère fortement d'associer chacune des
caractéristiques de chaque vue à la feuille qui lui convient.

Au lieu d'utiliser Worksheets("NomDeLaFeuille", il est préférable
d'utiliser le nom de l'objet Feuille dans l'éditeur de code.

Si ta proc
'------------------------------------
Sub Aff_vues()

With Worksheets("NomDeTaFeuille")
If .Columns("IV:IV").EntireColumn.Hidden = True Then
MaVue = "SonNom1"
ElseIf .Columns("IU:IU").EntireColumn.Hidden = True Then
MaVue = "SonNom2"
ElseIf .Columns("IT:IT").EntireColumn.Hidden = True Then
MaVue = "SomNom3"
ElseIf .Columns("IS:IS").EntireColumn.Hidden = True Then
MaVue = "SomNom4"
ElseIf .Columns("IR:IR").EntireColumn.Hidden = True Then
MaVue = "SomNom5"
ElseIf .Columns("IQ:IQ").EntireColumn.Hidden = True Then
MaVue = "SomNom6"
ElseIf .Columns("IP:IP").EntireColumn.Hidden = True Then
MaVue = "SomNom7"
Else: MaVue = "Ceci n'est pas une vue personalisée"
End If
Call imprime_vue_avec_nom(MaVue)
End Sub
'------------------------------------




"Emile63" a écrit dans le message de groupe de discussion :

Bonjour a tous et merci pour vos idées et pour votre aide. ;-)
Grâce a vos idées j'ai résolu mon problème,
certes c'est pas joli-joli, et je pense que les puristes deraient
passer leurs chemin,
mais ça fonctionne comme je le souhaitais.. :-)
------------------
Sub Aff_vues()
Dim Vue As CustomView, MaVue As String
Dim tableau_Noms(1 To 10) As String
On Error Resume Next
With ActiveWorkbook
If .CustomViews.Count < 1 Then
MsgBox "Pas de vues personnalisées", _
vbExclamation, _
.Name
Exit Sub
Else
For Each Vue In .CustomViews
x = x + 1
tableau_Noms(x) = Vue.Name
Next
End If
End With
If Columns("IV:IV").EntireColumn.Hidden = True Then MaVue tableau_Noms(1) ' Ma vue 1
If Columns("IU:IU").EntireColumn.Hidden = True Then MaVue tableau_Noms(2) ' Ma vue 2
If Columns("IT:IT").EntireColumn.Hidden = True Then MaVue tableau_Noms(3) ' Ma vue 3
If Columns("IS:IS").EntireColumn.Hidden = True Then MaVue tableau_Noms(4) ' Ma vue 4
If Columns("IR:IR").EntireColumn.Hidden = True Then MaVue tableau_Noms(5) ' Ma vue 5
If Columns("IQ:IQ").EntireColumn.Hidden = True Then MaVue tableau_Noms(6) ' Ma vue 6
If Columns("IP:IP").EntireColumn.Hidden = True Then
MaVue = tableau_Noms
(7)
' Ma vue 7
Else: MaVue = "Ceci n'est pas une vue personalisée"
End If
Call imprime_vue_avec_nom(MaVue)
End Sub
Sub imprime_vue_avec_nom(MaVue As String)
Application.ScreenUpdating = False
ActiveSheet.PageSetup.CenterHeader = "&""Verdana""&16" & "Vue
parsonalisée: " & MaVue ' Nom de la vue
ActiveWindow.SelectedSheets.PrintPreview
Application.ScreenUpdating = True
End Sub



Cordialement,
Emile
Avatar
Emile63
On 16 ene, 13:52, "michdenis" wrote:
En supposant que le nom de tes vues et la caractéristique
que tu leur as associé est statique, ceci aurait été suffisant ...

Je te suggère de faire référence à une feuille particulière pou r
tes conditions. CustomViews est une propriété du classeur
cependant, une vue est une caractéristique d'une feuille.

Que tes 7 vues appartiennent à une feuille ou à des feuilles
différentes, je te suggère fortement d'associer chacune des
caractéristiques de chaque vue à la feuille qui lui convient.

Au lieu d'utiliser Worksheets("NomDeLaFeuille", il est préférable
d'utiliser le nom de l'objet Feuille dans l'éditeur de code.

Si ta proc
'------------------------------------
Sub Aff_vues()

With Worksheets("NomDeTaFeuille")
    If .Columns("IV:IV").EntireColumn.Hidden = True Then
        MaVue = "SonNom1"
    ElseIf .Columns("IU:IU").EntireColumn.Hidden = True Then
        MaVue = "SonNom2"
    ElseIf .Columns("IT:IT").EntireColumn.Hidden = True Then
        MaVue = "SomNom3"
    ElseIf .Columns("IS:IS").EntireColumn.Hidden = True Then
        MaVue = "SomNom4"
    ElseIf .Columns("IR:IR").EntireColumn.Hidden = True Then
        MaVue = "SomNom5"
    ElseIf .Columns("IQ:IQ").EntireColumn.Hidden = True Then
        MaVue = "SomNom6"
    ElseIf .Columns("IP:IP").EntireColumn.Hidden = True Then
        MaVue = "SomNom7"
    Else: MaVue = "Ceci n'est pas une vue personalisée"
End If
Call imprime_vue_avec_nom(MaVue)
End Sub
'------------------------------------

"Emile63" a écrit dans le message de groupe de d iscussion :

Bonjour a tous et merci pour vos idées et pour votre aide.  ;-)
Grâce a vos idées j'ai résolu mon problème,
certes c'est pas joli-joli, et je pense que les puristes deraient
passer leurs chemin,
mais ça fonctionne comme je le souhaitais..    :-)
------------------
Sub Aff_vues()
    Dim Vue As CustomView, MaVue As String
    Dim tableau_Noms(1 To 10) As String
    On Error Resume Next
    With ActiveWorkbook
        If .CustomViews.Count < 1 Then
            MsgBox "Pas de vues personnalisées", _
            vbExclamation, _
            .Name
            Exit Sub
        Else
              For Each Vue In .CustomViews
                x = x + 1
                tableau_Noms(x) = Vue.Name
            Next
        End If
    End With
    If Columns("IV:IV").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(1) '  Ma vue 1
    If Columns("IU:IU").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(2) '  Ma vue 2
    If Columns("IT:IT").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(3) '  Ma vue 3
    If Columns("IS:IS").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(4) '  Ma vue 4
    If Columns("IR:IR").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(5) '  Ma vue 5
    If Columns("IQ:IQ").EntireColumn.Hidden = True Then MaVue =
tableau_Noms(6) '  Ma vue 6
    If Columns("IP:IP").EntireColumn.Hidden = True Then
       MaVue = tableau_Noms
(7)
' Ma vue 7
    Else: MaVue = "Ceci n'est pas une vue personalisée"
    End If
     Call imprime_vue_avec_nom(MaVue)
End Sub
Sub imprime_vue_avec_nom(MaVue As String)
    Application.ScreenUpdating = False
    ActiveSheet.PageSetup.CenterHeader = "&""Verdana""&16" & "Vue
parsonalisée: " & MaVue ' Nom de la vue
    ActiveWindow.SelectedSheets.PrintPreview
    Application.ScreenUpdating = True
End Sub

Cordialement,
Emile



Merci Michel pour cette précision, je vais en tenir compte et
l'appliquer. ;-)

Tres cordialement,

Emile
1 2