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 :

Cocher des cellules après clique [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut Cocher des cellules après clique
    Bonjour,
    Voilà je chercher à "cocher" une cellule.

    Je m'explique, je souhaite pouvoir faire en sorte que l'utilisateur ne puisse faire que cocher ou décocher une cellule (mettre un "X" ou l'enlever)

    J'ai ce code pour le faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Not Application.Intersect(Target, Range("A2:D2")) Is Nothing Then 'modifie ton tableau
    If Target.Value = "" Then
    Target.Value ="X"
    Else
    Target.Value = ""
    End If
    End If
    End Sub
    Cependant la façon dont est construit mon fichier rend la chose un plus difficile.(cf PJ)

    C'est sur le range de selection que je me casse la tête. Est-il possible que l'un d'entre vous m'aide? (Je pense qu'il faut créer des "noms")

    PJ:
    la partie A est crée par copie de la zone A (ajouter activité => bouton non visible)
    la partie B est crée par copie de la zone B (ajouter application)

    Merci
    Fichiers attachés Fichiers attachés

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    la partie A est crée par copie de la zone A (ajouter activité => bouton non visible)
    la partie B est crée par copie de la zone B (ajouter application)
    est ce que ce sont les copies qui doivent déclencher le code?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Justement je ne sais pas trop comment faire.
    Pour le moment j'ai deux boutons pour lancer mes copies (ajouter une activité ou application).
    Et j'aimerais que dans le tableau que ca crée je puisse cocher ou non les cellules (et revenir dessus après)

    Donc je pense que la réponse est non les copies ne déclenchent pas le code.
    Le code est déclenché lorsque l'on est situé dans le "tableau" et uniquement dans ce cas là (d'où surement l'utilisation de "nom").

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Pour connaitre la plage de saisie en dynamique (lignes et colonnes variables)

    E2 étant ici la première cellule (en haut a gauche de la plage) => à modifier par bonne adresse qui restera inchangée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Lettre As String
     
    'Lettre de la dernière colonne
    Lettre = Split(Sheets(1).Cells(1, Rows("1").End(xlToRight).Column).Address, "$")(1)
     
    MsgBox Range("E2:" & Lettre & Range("A:A").End(xlDown).Row).Address
    NB : on peut evidemment le faire en une seule ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E2:" & Split(Sheets(1).Cells(1, Rows("1").End(xlToRight).Column).Address, "$")(1)& Range("A:A").End(xlDown).Row).Address

  5. #5
    Expert éminent 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
    Par défaut
    Bonjour
    Pour définir la zone de travail à partir du nombres d'applications et d'activités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LastLig As Long
    Dim LastCol As Integer
     
    LastLig = Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row                                         'A: Numéros applications en colonne A
    LastCol = Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column                                 '1: libélés activité en ligne 1
    If Not Intersect(Target, Range(Cells(5, 6), Cells(LastLig, LastCol))) Is Nothing Then
        If Target.Count = 1 Then Target.Value = IIf(Target.Value <> "", "", "X")
    End If
    '6: Activités à partir de la colonne F
    '5: Applications à partir de la ligne 5
    End Sub

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Bonjour
    Pour définir la zone de travail à partir du nombres d'applications et d'activités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LastLig As Long
    Dim LastCol As Integer
     
    LastLig = Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row                                         'A: Numéros applications en colonne A
    LastCol = Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column                                 '1: libélés activité en ligne 1
    If Not Intersect(Target, Range(Cells(5, 6), Cells(LastLig, LastCol))) Is Nothing Then
        If Target.Count = 1 Then Target.Value = IIf(Target.Value <> "", "", "X")
    End If
    '6: Activités à partir de la colonne F
    '5: Applications à partir de la ligne 5
    End Sub
    C'est parfait!!!!!!!
    Merci
    Il est vrai que je ne sais pas trop encore gérer les intersect.

    Bonne journée

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

Discussions similaires

  1. [XL-2003] Copier des cellules après un filtrage
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 02/06/2011, 00h25
  2. Positionnement des cellules apres action
    Par papy_polo67 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/04/2010, 22h43
  3. Comment effacer des cellule après modification d'une cellule
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2009, 08h51
  4. déselectionner des cellules après un copier coller
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/06/2008, 17h45
  5. [VBA-E] afficher des données apres saisie dans cellule
    Par user0505 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2006, 14h04

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