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 :

Test si cellule fait partie d'un champ [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Je travaille sur classeur partagé, et donc je ne peux utiliser la protection / la déprotection des feuilles.

    J’ ai trouvé une ancienne discussion sur ce forum

    http://www.developpez.net/forums/d27...-utilisateurs/

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim CEL As Range
     
    Dim champimp_noms As Range
    Dim champimp_noms_comp As Range
    Dim premcell_noms As Range
     
    Select Case Application.UserName
    Case "FANFAN", "TOTO"
    Set champimp_noms = Range("grille_1")
    Set champimp_noms_comp = Range("grille_comp_1")
    Set premcell_noms = Range("déb_grille_1")
     
    Case else 
    Set champimp_noms = Range("grille_2")
    Set champimp_noms_comp = Range("grille_comp_2")
    Set premcell_noms = Range("déb_grille_2")
     
    End Select
    Je souhaite effectuer le test suivant
    Si Username = « FANFAN » et que l’on sélectionne une cellule hors du champ grille_1 alors la sélection se porte sur déb_grille_1

    Autrement dit :

    « ne fait pas partie du champ 1 » then Je bloque sur la syntaxe VBA de « ne fait pas partie du champ 1 »

    J'ai recherché sur le forum et le net la solution mais sans succès.

    Merci pour votre aide

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour,
    Tout d'abord je te recommande vivement d'utiliser les balise code pou encadrer tes codes est le rendre plus lisible
    un lien : http://www.developpez.net/forums/d57...ation-boutons/
    (il n'était pas d'oukel'n'or ce mini tuto?)

    Pour ta question, hé bien tu pourrais peut être nous dire ce que tu veux faire et ce qui ne fonctionne pas. Les chèvres se font rare pour pratiquer l'haruspicine.

    Edit : bon je suis arrivé avant ton nouveau message pour ta question

    Regarde laide sur els différent mot clef de ce test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not intersect(target,range("taplage")) is nothing then
    il faudra peut être enlever le not en fonction de ce que tu veux faire

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Test si une cellule fait (ne fait pas) partie d'un champ.
    Pardon, je crois avoir été clair

    Des champs sont alloués aux différents utilisateurs. Si l’utilisateur par exemple ici « FANFAN » sélectionne une cellule HORS du champ qui lui est alloué « grille_1 », alors la sélection se porte au début de ce champ, soit ici déb_grille_1. Ceci afin qu'il ne puisse pas sélectionner et modifier cette cellule appartenant à un autre champ.

    Je demande comment coder cette condition.

    Pour rappel : ce claseur est partagé. Il y a donc impossibilité de déprotéger puis de protéger une feuille de calcul.

    Merci.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Comme je te l'ai dit non?
    Tu nome des plages de cellule, c'est bien ca tes champs?

    Donc essaye d'adapter le teste ca devrais fonctionner sans souci. Si tu n'y arrive pas montre nous comment tu essayes de l'adapter

    Edit une solution peut être un début en tout cas
    Si on ne selectionne pas une cellule de la plage Bob la macro celectionne la première cellule de la plage Bob



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("Bob")) Is Nothing Then Range("Bob").Cells(1, 1).Select
    End Sub
    j'utiliserais même pour permetre la selection d'une plae dans la plage mais pas si elle "déborde"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not (Union(Target, Range("Bob")).Address = Range("Bob").Address) Then Range("Bob").Cells(1, 1).Select
    End Sub

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut Test si une cellule fait partie d'un champ(plage)
    Ta méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Intersect(Target, Range("Bob")) Is Nothing ...
    fonctionne bien.

    Merci Krovacs.

    (Il n'y aura pas besoin d'haruspicine, terme que je viens d'apprendre, entre autres)

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    J'adore le terme d'aruspicine, je l'ai découvert récement.
    par contre cette méthode a un inconvénient

    Si tu a la plage B2:C5 et que tu selectionne B1:B2 (pour coller par exemple) ca passe le teste alors que cela ne devrais pas.
    D'ou l'interet de la deuxième méthode

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

Discussions similaires

  1. Test si user fait parti d'un groupe
    Par piestoune dans le forum VBScript
    Réponses: 6
    Dernier message: 19/10/2012, 16h39
  2. [XL-2003] Tester si une cellule fait partie d'un Range
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/09/2009, 14h43
  3. Réponses: 9
    Dernier message: 29/07/2005, 17h03
  4. Tester si une String fait partie d'un tableau de String
    Par laloi dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/04/2005, 16h47
  5. récupérer la partie décimale d’un champ
    Par maouazzani dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/04/2004, 16h10

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