IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Empecher la libération des volets [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Par défaut Empecher la libération des volets
    Bonjour,

    Je possède un document dans lequel j'aimerais bien empêcher la libération des volets car je veux que les deux premières lignes soient toujours visibles.
    La protection du classeur n'est pas une solution envisageable :/

    J'ai essayé différents moyens, notamment l'utilisation de ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If ActiveWindow.FreezePanes = False Then
      With ActiveWindow
      .SplitColumn = 0
      .SplitRow = 2
      End With
      ActiveWindow.FreezePanes = True
      End If
      End Sub
    Ce code permet de refiger les deux premières lignes lorsqu'un utilisateur libère les volets.
    Malheureusement, si l'utilisateur se trouvait déjà sur une des cellules des deux premières lignes et qu'il scrolle avant de cliquer sur une autre cellule alors les deux lignes figées ne sont plus les deux premières lignes de la feuille :S

    J'ai essayé un autre code trouvé dans un forum permettant de bloquer l'utilisation de la fonction libérer les volets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
     CommandBars(1).Controls(9).Controls(7).Enabled = False
    End Sub
    Mais ce code n'a pas l'air de fonctionner dans mon cas/je l'ai probablement mal utilisé car la fonction libérer les volets est toujours active :(

    Je sous ouvert à toute proposition permettant de résoudre mon problème.

    Par avance, merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut HEU
    bonjour
    je viens de tester et visiblement impossible disabler ce control

    il va te faloir passer par custom ui pour ce classeur peut etre que par xml on peut le rendre inactif a partir de 2007 bien sur si ta version excel est inferieur c'est walouh!!! je crois
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Problème de conception dans le code car confusion entre Figer les volets et Fractionner !

    Pour juste figer les volets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not ActiveWindow.FreezePanes Then [A3].Select: ActiveWindow.FreezePanes = True
    End Sub
    En option, ajouter une sauvegarde de la position de la cellule active puis la restaurer une fois les volets figés …

    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Par défaut
    Bonjour Marc-L,

    Tout d'abords merci du temps accordé à mon problème.
    J'ai essayé le code que tu as écrit malheureusement le problème est toujours le même, si l'utilisateur sélectionne une cellule située dans les deux premières lignes avant de libérer les volets puis de scroller et qu'enfin il sélectionne une autre cellule alors les lignes figées ne seront plus les deux premières lignes.
    La différence lorsque j'utilise ton code c'est que la cellule A3 est sélectionnée mais cela n'empêche pas le changement des lignes figées.

    Je pense que c'est pour pallier à ce problème que tu as ajouté:
    "En option, ajouter une sauvegarde de la position de la cellule active puis la restaurer une fois les volets figés …"

    Seulement je ne sais pas vraiment comment réaliser ça et surtout je doute de l'efficacité de cette solution étant donné qu'il est "trop tard" pour restaurer l'emplacement de la cellule une fois les volets figés.

    Pour tester j'ai essayé en rajoutant cette ligne de code:

    Après revérification, ta solution fonctionne lorsque l'utilisateur sélectionne une autre cellule présente dans les deux premières lignes.
    Cependant si l'utilisateur sélectionne une des cellules des deux premières lignes, libère les volets, scroll puis sélectionne une cellule n'étant pas dans les deux premières lignes alors les lignes figées ne sont plus les deux premières lignes.

    Peut-être qu'appliquer une restriction spécifique aux deux premières lignes pourrait être la/une solution?

    Etant novice sur excel je fais plus confiance à votre expertise qu'a la mienne mais je vais néanmoins continuer à creuser cette idée.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    si tu a pas besoins du ruban pendant l'utilisation
    on peut faire ceci:

    on affiche plein ecran (plus de ruban)
    on bloque le bouton fermer le plen ecran dans le nenu des cellules
    on bloque la touche esc qui le fait revenir
    on ajoute un bouton dans le menucell "ruban" et a son click
    il apelera une sub qui te proposera de rentrer un mot de passe pour tout réaficher
    sans ce mot de passe si la personne ne sais pas aller chercher dans le code et ben c'est walouh!!!
    donc si pas "toto" tout plein ecran
    voila tu l'aura compris le pot de passe c'est toto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub bloque()
       Application.OnKey "{ESCAPE}", ""
       With Application.CommandBars("cell")
            .FindControl(ID:=178).Enabled = False
            Set bout = .Controls.Add(Type:=msoControlButton)
            With bout
                .Enabled = True
                .Caption = " RUBAN"
                .OnAction = "debloque"
            End With
        End With
        With ActiveWindow: .SplitRow = 2: .FreezePanes = True: End With
        Application.DisplayFullScreen = True
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub debloque()
         Password = InputBox("Veuillez taper votre mot de passe pour retrouver le Ruban", "bloquage du ruban", Default)
     
       If Password = "toto" Then
        Application.CommandBars("cell").Reset
     
        Application.DisplayFullScreen = False
    End If
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 19
    Par défaut
    Bonjour Patricktoulon,

    C'est une solution peu conventionnelle auquelle je n'avais pas pensé mais qui fera parfaitement l'affaire

    Merci pour ton aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. libération des tableaux dynamiques
    Par franckgar dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2006, 20h49
  2. [HTML][CSS] Comment empecher l'application des styles
    Par ardi dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/03/2006, 11h56
  3. Réponses: 1
    Dernier message: 02/12/2004, 11h51
  4. Question simple sur la libération des objets
    Par gibet_b dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2004, 10h01
  5. [MFC] libération des objets GDI's
    Par Kevgeii dans le forum MFC
    Réponses: 5
    Dernier message: 01/02/2004, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo