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 :

Récupérer la sélection dans une feuille inactive


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut Récupérer la sélection dans une feuille inactive
    Bonjour,

    Je bute sur un problème idiot : comment récupérer le range de la sélection d’une feuille de calcul inactive.

    Le plus proche que j’ai trouvé est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaFeuilleInactive.UsedRange
    mais ceci me renvoie le range des dernières cellules modifiées, pas la sélection.

    Merci d’avance pour toute suggestion.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Saliut phdphd
    Une solution
    stocker la sélection de chaque feuille dans un tableau en variable globale avec le module ThisWorkBook.
    moi, je ferais un tableau 2 dimansion
    Tableau(1,x) = nom de l'onglet
    Tableau(2,X) = Adresse de la sélection
    avec mise à jour par Workbook_SheetSelectionChange()
    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut
    Merci Gorfael pour la suggestion.

    J'y avais effectivement pensé mais je trouvais que cela manquait d'élégance… Il doit bien y avoir moyen d'accéder directement à cette donnée, non ?Vu qu'Excel la stocke de toutes façons (puisque la sélection est retenue pour chaque feuille)…

    Mais si je ne trouve pas de moyen simple et direct, c'est effectivement la méthode que j'emploierai.

    Merci,

    phdphd

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut
    Bon, j'ai trouvé un autre contournement du problème, qui ne demande pas d'intervention d'une macro à chaque modificaction. Tout simplement : activer la feuille de calcul visée ^^

    J'aurais voulu l'éviter car ma macro est appelée justement par les évènements SheetActivate et SheetDeactivate, mais bon… il suffit de désactiver les évènements, n'est-ce-pas ? Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        Dim ScreenUpdatingInitialState As Boolean
        Dim EnableEventsInitialState As Boolean
        Dim KeepSelection As String
        Dim CurrentSheet As Sheet
     
        ScreenUpdatingInitialState = Application.ScreenUpdating
        Application.ScreenUpdating = False
        EnableEventsInitialState = Application.EnableEvents
        Application.EnableEvents = False
     
        CurrentSheet = ActiveSheet
        Sheets(DeactivatedSheet).Activate
        KeepSelection = Selection.AddressLocal
        CurrentSheet .Activate
     
        Application.EnableEvents = EnableEventsInitialState    
        Application.ScreenUpdating = ScreenUpdatingInitialState
    Voilà. Mais c'est quand même curieux et dommage que l'on ne puisse pas faire quelque chose comme LaFeuilleInactive.Selection

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut phdphd et le for home
    moi, j'utiliserai plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Option Explicit
    Dim Val_Ad() As String
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim x As Integer
    Dim Flg As Boolean
    On Error Resume Next
    x = UBound(Val_Ad, 2)
    If Err.Number = 9 Then ReDim Val_Ad(1 To 2, 0 To 0)
    On Error GoTo 0
    Flg = True
    For x = 0 To UBound(Val_Ad, 2)
        If Val_Ad(1, x) = Sh.Name Then
            Flg = False
            Exit For
        End If
    Next x
    If Flg Then
        ReDim Preserve Val_Ad(1 To 2, 0 To UBound(Val_Ad, 2) + 1)
        x = UBound(Val_Ad, 2)
    End If
    Val_Ad(1, x) = Sh.Name
    Val_Ad(2, x) = Target.Address(0, 0)
    End Sub
    je n'aime pas activer les feuilles sans raison.
    Mais chacun sa manière
    A+

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut
    Moi non plus je n'aime pas activer les feuilles sans raisons, surtout que malgré le Application.ScreenUpdating = False, cela flashe

    Mais je n'aime pas non plus avoir un code qui s'exécute à chaque changement de sélection… Mais ce sera peut-être plus élégant pour l'utilisateur -> je vais essayer.

    Merci !

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

Discussions similaires

  1. [Toutes versions] Imprimer une sélection dans une feuille avec choix imprimante et nb ex
    Par Nils78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/06/2013, 15h50
  2. Réponses: 7
    Dernier message: 14/04/2007, 17h25
  3. [VBA-E]tri/sélection dans une feuille
    Par philpommé dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/04/2006, 20h18
  4. Sélection de lignes dans une feuille Excel
    Par lerico dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 09h20
  5. Récupérer une sélection dans une page
    Par philippe30 dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2005, 19h02

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