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 :

Se positionner sur une cellule spécifique à la sortie d'une autre cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut Se positionner sur une cellule spécifique à la sortie d'une autre cellule
    Bonjour,

    Je souhaiterias me repositionner sur une cellule définie après avoir quitter une autre cellule. Je m'explique:
    Imaginons que je me trouve sur la cellule A250 de ma feuille MAFEUILLE. Je pointe ensuite avec ma souris sur la cellule H4 qui est visible (car volets figés) et j'y entre une nouvelle donnée (ou que je ne change rien d'ailleurs).
    Je souhaite qu'à la sortie de la cellule H4, je me retrouve sur la cellule quittée juste avant (soit la A250 dans mon exemple).

    Merci de votre aide.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Peut être comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim RGprev As Range
    Dim RgAct As Range
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    RGprev.Select
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    Set RGprev = RgAct
    Set RgAct = Target
     
    End Sub
    Jérôme

  3. #3
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    jérôme, mais cette partie n'est pas traitée semble-t-il :

    (ou que je ne change rien d'ailleurs
    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    mais cette partie n'est pas traitée semble-t-il :
    En effet, mais comment capter aucun changement?
    Jérôme

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Je souhaite qu'à la sortie de la cellule H4 (sa cellule sélectionnée après celle d'origine)
    je pense qu'il faut se centrer là dessus, mais ToFind ne nous dit pas tout :

    Il faut un point de départ = référentiel et une façon d'en sortir

    pour étude, je me suis fixé en référentiel une plage nommée "toto"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Dim Cel1 As Range
    Dim Cel2 As Range
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Not Intersect(Target, Range("toto")) Is Nothing Then Set Cel1 = Target: Exit Sub
    If Cel1 Is Nothing Then Exit Sub 'tant que pas de clic initial dans référentiel => RAS
    If Cel2 Is Nothing Then Set Cel2 = Target
    If Cel2.Address <> Target.Address Then Cel1.Select: Set Cel2 = Nothing
     
    End Sub
    la sortie restera à définir.

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    Je vous remercie de votre engagement et des vos réflexions très pertinentes.
    mais ToFind ne nous dit pas tout :
    Que dois-je dire de plus?
    Je peux me trouver sur n'importe quelle cellule de la feuille (= cellule d'origine), je clique sur la cellule H4 pour y entrer une donnée (ou pour ne rien modifier), et à la sortie de H4, je souhaite me retrouver sur la cellule d'origine.
    Le code proposé jusqu'ici ne donne pas ce résultat.
    Je suppose qu'il faudra toujours introduire le code dans la feuille et non dans un module distinct?
    A bientôt.

  7. #7
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Citation Envoyé par ToFind Voir le message
    Je suppose qu'il faudra toujours introduire le code dans la feuille et non dans un module distinct?
    un effort ? ... le code comporte cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    Je confirme que l'évènement doit se trouver sur la feuille et non un module. Mais où est-il précisé que l'évènement doit être déclenché exclusivement à la sortie de la cellule H4?
    Bonne journée.

  9. #9
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    A mettre dans le module de la feuille.
    D'après l'exemple donné par Didier :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Dim Cel1 As Range
    Dim Cel2 As Range
     
    'd'après la proc de Didier, les deux variables Range servent d'intérupteur
    'marche arrêt
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        If Target.Count = 1 Then
     
            'évite l'erreur de la variable non initialisée
            On Error Resume Next
     
            'si ce n'est pas H4 :
            If Target.Address(0, 0) <> "H4" Then
     
                'on mémorise la cellule sélectionnée
                Set Cel1 = Target
     
                'on aiguille sur la cellule précédemment sélectionnée
                Cel2.Select
     
                'on mets à Nothing afin de permettre la sélection d'autre cellules
                Set Cel2 = Nothing
     
            'si c'est H4 :
            Else
     
                'on mémorise dans Cel2 la cellule précédemmenr sélectionnée
                Set Cel2 = Cel1
     
            End If
     
        End If
     
    End Sub
    Hervé.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    Bonjour à tous et merci de votre aide,

    Didier,
    Ta suggestion fonctionne en partie. En effet, lorsque je quitte la cellule H4 à l'aide des flèches gauche, droite ou vers le haut, cela fonctionne.
    Par contre, si je quitte avec la flèche vers le bas ou avec "enter", cela ne fonctionne pas. Le pointeur descend sur H5. Y a-t-il une explication? Peut-on y remédier?

    Guy

  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Si j'ai bien compris une autre proposition à tester
    Bien sûr à mettre dans le module de ta feuille
    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
    Option Explicit
    Dim CelPrec As String
    Dim Oui As Boolean
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$H$4" Then
        Oui = True
    Else
        If Oui Then
            Application.EnableEvents = False
            Range(CelPrec).Select
            Application.EnableEvents = True
        End If
        Oui = False
        CelPrec = Target.Address
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 45
    Points
    45
    Par défaut
    Bonsoir,

    Les propositions d'Hervé et de Mercatog fonctionnent de manière très instable. Parfois ok et parfois pas ok du tout.
    Je tourne en rond et ne comprends pas ce qui se passe...
    Je joins mon fichier test avec les 2 essais.
    Avez-vous une autre idée?

    Cordialement.
    Fichiers attachés Fichiers attachés

  13. #13
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Peut être comme ceci
    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
    24
    Option Explicit
    Dim CelPrec As String
    Dim Oui As Boolean
    Dim i As Integer 'Variable pour le test
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Address = "$H$4" Then
        Oui = True
    Else
        If Oui And CelPrec <> "" Then
            Application.EnableEvents = False
            Range(CelPrec).Select
            Application.EnableEvents = True
        Else
            'Les 2 lignes suivantes pour tester
            i = i + 1
            Target = "Cel mémo " & i
            'Fin test
            CelPrec = Target.Address
        End If
        Oui = False
    End If
    End Sub
    C'est vrai que la demande n'est pas assez claire (pour moi du moins)
    PS: J'ai ajouté les 2 lignes entre commentaires et la variable i pour le test sur les cellules mémorisées (la dernière) suite au clique.
    Le rappel de cette cellule intervient après la sortie de la cellule H4
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    C’est vrai qu’il y a un souci, il y a trois contributeurs (dont moi) qui, sans se concerter, ne comprennent rien à rien, ils pourraient faire plus d’efforts

    Citation Envoyé par ToFind
    Mais où est-il précisé que l'évènement doit être déclenché exclusivement à la sortie de la cellule H4?
    Citation Envoyé par Ormonth
    Il faut un point de départ = référentiel et une façon d'en sortir

    pour étude, je me suis fixé en référentiel une plage nommée "toto"


    donc, il suffisait de nommer H4 "toto"... en le mettant en dur, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Dim Cel1 As Range
    Dim Cel2 As Range
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Not Intersect(Target, Range("H4")) Is Nothing Then Set Cel1 = Target: Exit Sub
    If Cel1 Is Nothing Then Exit Sub 'tant que pas de clic initial dans référentiel => RAS
    If Cel2 Is Nothing Then Set Cel2 = Target
    If Cel2.Address <> Target.Address Then Cel1.Select: Set Cel2 = Nothing
     
    End Sub
    ce qui fonctionne chez moi.

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/02/2012, 17h23
  2. [XL-2003] Remplissage d'une cellule en fonction du contenu d'autres cellules.
    Par homer83140 dans le forum Excel
    Réponses: 27
    Dernier message: 13/01/2011, 16h39
  3. [XL-97] Changement valeur d'une cellule en fonction de valeurs d'autres cellules
    Par chubak62 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/01/2011, 10h21
  4. [Toutes versions] [Source] Se positionner sur un ID spécifique
    Par argyronet dans le forum Contribuez
    Réponses: 1
    Dernier message: 26/03/2010, 18h23
  5. Réponses: 4
    Dernier message: 13/06/2007, 17h42

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