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 :

Gérer la feuille selectionnée dans méthode SelectionChange


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
    Consultant en Business Intelligence
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Par défaut Gérer la feuille selectionnée dans méthode SelectionChange
    Bonjour,

    Je souhaiterais avoir une informations sur la methode "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"

    Je souhaite savoir ou était positionné mon curseur précédent et je souhaite faire une action dans mon if si il respecte cette condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.PreviousSelections(2).Value = "" And Application.PreviousSelections(2).Column = 15 And Application.PreviousSelections(2).Offset(0, -1).Font.Bold = False Then
    Ca marche bien
    sauf que la méthode étant écris dans la feuille à chaque fois que je viens selectionnner pour la première fois une cellule dans la feuille ca fait bugger sur cette ligne car il ne trouve pas a mon avis la position précédente car il était sur une autre feuille de ce classeur.

    J'ai eut l'idée de rajouté comme condition dans mon "if" du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.PreviousSelections(2).Sheets ="feuilleSouhaitée"
    mais la méthode ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.PreviousSelections(2).Sheets
    ne marche pas.

    Quelqu'un aurait t-il une idée pour que lors de la premier selection d'une cellule sur ma feuilleSouhaitée la ligne ne bug pas ?
    ( Après qu'on n'a déja selectionner une fois sur cette feuille ca marche bien, c'est juste pour l'arrivée sur la feuille que ca bug)
    Ou sinon comment faire pour lancer la méthode dans la feuille uniquepent à la seconde selection de cellule ?

    Merci d'avance de votre aide

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bojour,

    Au niveau de thisWorkbook tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    PreviousSelections renvoyant un tableau représentant les 4 dernières Sélections (index 1 à 4), il suffit de tester l'existence de l'index 1

    met ton curseur sur le cette propriété, appuie sur pour obtenir l'aide en ligne, et regarde bien l'exemple de code proposé, tu trouveras ta réponse pour gérer l'erreur

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Par défaut
    Salut joe.levrai
    Je suis d'accord avec ta solution mais .... je n'arrive pas

    quand tu dis " il suffit de tester l'existence de l'index 1 " pourrais tu me guider un peu plus ?


    J'ai essayé plusieurs manière comme ci dessous mais sans résultat avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LBound(Application.PreviousSelections)& UBound(Application.PreviousSelections)
    pour avoir les index mais ca ne marche pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    On Error GoTo noSelections
    If LBound(Application.PreviousSelections) > 0 Then
     
     
    '....mon code
     
    Else
    noSelections:
    Exit Sub
     End If
     
     
     
    End Sub
    Merci a toi

    ps: Igloobel je ne vois pas où tu veux aller en mettant cela dans thisWorkbook ...

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Moi ce que je ne comprend pas, c'est que tes explications laissent à penser que le changement de sélection s'effectue au clic souris ou au changement via des touches clavier ?

    PreviousSelection n'est alimenté que dans des cas restreints et détaillés dans l'aide (utilisation de la zone de nom, utilisation de "Atteindre" etc...)

    es-tu sûr d'être dans le bon contexte pour utiliser ça ?


    Je n'ai jamais utilisé ça ... mais en faisant 20 secondes de tests je me suis vite rendu compte que mon tableau PreviousSelection restait totalement vide, sauf en passant par la zone de nom (et Atteindre)


    Peux-tu préciser un peu le contexte de ton classeur, et comment s'effectuent les changements de sélection ?

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pourquoi ne pas prendre les informations sur la sélection, dès qu'il y a sélection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Type Localisation
         Feuille as string
         adresse as string
    end type
    dim Laplace as localisation
    Laplace.feuille = activesheet.name
    Laplace.address = activecell.address
    même que pour te sauver du trouble, tu peux faire l'opération en double avec un type pour la localisation de départ et un autre pour la localisation d'arrivée et un peu de mises à jours dans le bon temps.

    "on n'est jamais si bien servi que par soi-même"

    Si tu ne veux pas utiliser un type défini par l'utilisateur tu as d'autres choix:

    -Quelques cellules dédiées sur une feuille cachée ou non
    -Un fichier texte
    -le registre
    -Un fichier .ini

Discussions similaires

  1. [VBA-E]Impression de feuilles selectionnées dans un "userform"
    Par gregoim dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/03/2007, 16h31
  2. Réponses: 4
    Dernier message: 14/11/2006, 17h12
  3. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02
  4. Réponses: 4
    Dernier message: 02/07/2004, 10h31
  5. [VB6]PB d'importation d'un feuille Excel dans une MSFlexGrid
    Par mystere l dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 20/04/2004, 15h59

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