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 :

Utilisation de Target.Adress(0, 0) [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 146
    Par défaut Utilisation de Target.Adress(0, 0)
    Bonjour,

    Je ne parviens pas a récupérer l'adresse de la cellule pointée...
    Seul le premier test sur C2 est actif..

    Ce que je cherche à faire :
    Empecher de marquer dans C2 ou D2, lorsque A2 ou B2 est déjà écrit
    (L'inverse sera aussi à programmer : Si C2 ou D2 sont écrits , pas de pointage possible des cellules A2 et B2)
    Plus clair :
    - Possible d'écrire dans cellules vertes SI AUCUNES des cellules jaunes sont écrites
    et
    - Possible d'écrire dans cellules jaunes SI AUCUNES des cellules vertes sont écrites
    Nom : Tablo.jpg
Affichages : 494
Taille : 6,6 Ko

    Mes quelques lignes :
    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
    Private Sub Worksheet_selectionChange(ByVal Target As Range)
     
    If Target.Address(0, 0) = "C2" Or Target.Address(0, 0) = "d2" Then
     
     
        For Each Cell In Range("a2:b2")
     
            If Not Cell = "" Then
                MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                Range("A1").Select
            End If
     
        Next Cell
     
    End If
    Que dois-je faire ?
    Merci !

  2. #2
    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,

    la propriété Address est par défaut en coordonnées absolues, il faut donc paramétrer en relatif ou ne pas oublier d'annoter les coordonnées avec le $

    une proposition parmi des dizaines, au moyen d'un Select Case
    on pourrait factoriser pour n'utiliser qu'un seul test pour l'ensemble des cas, cependant on perd en souplesse s'il faut à l'avenir user d'un comportement différent en fonction du cas.

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
        Select Case Target.Address
            Case "$C$2", "$D$2"
                If Range("A2") <> "" Or Range("B2") <> "" Then
                    MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                    Range("A1").Select
                End If
            Case "$A$2", "$B$2"
                If Range("C2") <> "" Or Range("D2") <> "" Then
                    MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                    Range("A1").Select
                End If
        End Select
    Application.EnableEvents = True
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 146
    Par défaut
    Bonjour M.Levrai,

    Merci pour votre réponse rapide et claire.

    Je m'aperçoit que, en ne voulant pas trop "exagérer" dans ma demande, j'ai été un peu trop réducteur...

    Votre proposition ne va pas pouvoir s'appliquer a ma finalité qui est bien de pouvoir traiter les colonnes précédemment définies , mais sur les lignes 2 à 378 d'un tableau ..
    Pardon !

    Max.

  4. #4
    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
    On peut rajouter un premier test sur les lignes, et ensuite jouer sur les propriétés Row et Column de Target pour gérer la position des tests


    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
     
    If Target.Row > 1 And Target.Row < 379 Then
        Select Case Target.Column
            Case 3, 4
                If Cells(Target.Row, 1) <> "" Or Cells(Target.Row, 2) <> "" Then
                    MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                    Range("A1").Select
                End If
            Case 1, 2
                If Cells(Target.Row, 3) <> "" Or Cells(Target.Row, 4) <> "" Then
                    MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                    Range("A1").Select
                End If
        End Select
    End If
    Application.EnableEvents = True
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 146
    Par défaut
    Merci.
    ... Que manquerait-il ?
    Mess = "Sub ou Fct non définie"
    Nom : Mess.jpg
Affichages : 481
Taille : 29,8 Ko

  6. #6
    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
    A part une difficulté à compiler sur des cellules non préfixées par leur feuille, je ne vois pas.

    Chez moi tout est bien fonctionnel

    essaye 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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
     
    If Target.Row > 1 And Target.Row < 379 Then
        With ActiveSheet
            Select Case Target.Column
                Case 3, 4
                    If .Cells(Target.Row, 1) <> "" Or .Cells(Target.Row, 2) <> "" Then
                        MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                        .Range("A1").Select
                    End If
                Case 1, 2
                    If .Cells(Target.Row, 3) <> "" Or .Cells(Target.Row, 4) <> "" Then
                        MsgBox "ERREUR !  Le mouvement du jour ne peut etre que d'une seule personne !"
                        .Range("A1").Select
                    End If
            End Select
        End With
    End If
    Application.EnableEvents = True
    End Sub

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Citation Envoyé par max60fr Voir le message
    Merci.
    ... Que manquerait-il ?
    Mess = "Sub ou Fct non définie"
    Vérifie que tu n'as pas de fautes de frappe qui trainent.

    Nous montrer le message d'erreur, c'est bien mais ...
    L'IDE te montre aussi la ligne de code fautive, et nous apporter cette information c'est mieux !

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

Discussions similaires

  1. comment utiliser le target vers un div
    Par la_lvlouche dans le forum Balisage (X)HTML et validation W3C
    Réponses: 19
    Dernier message: 24/02/2011, 09h22
  2. Utilisation Carnet d'adresse partagé avec VBA
    Par rstephane dans le forum VBA Outlook
    Réponses: 7
    Dernier message: 27/05/2008, 13h37
  3. Utilisation de l'adresse d'un objet temporaire
    Par coyotte507 dans le forum C++
    Réponses: 6
    Dernier message: 20/04/2008, 00h58
  4. utiliser carnet d'adresse outlook excel vba
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/07/2007, 17h43
  5. Utiliser des target Ant
    Par Razgriz dans le forum NetBeans
    Réponses: 2
    Dernier message: 22/12/2006, 14h12

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