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 :

case à cocher [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut case à cocher
    Bonjour,

    J'ai toute une colonne de case à cocher et j'aimerais savoir quel code il faut utiliser pour que si je coche une case bien précise je me retrouve sur une cellule bien particulière.

    Exemple, si je coche une case à cocher je me retrouve en P5

    Vous allez peut-etre trouver ça ridicule, car je commence le VBA mais, j'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CheckBox1_Click()
    If Target.CheckBox1 = True Then Range (P4)
    End Sub
    ça ne marche pas. Pouvez-vous m'aider ?

    Et j'aurais une autre question :

    quand on redimensionne les lignes, les cases à cocher ne suivent pas et ne se retrouvent plus sur la ligne ou on les a mise. N'y a t-il pas une solution pour qu'une case à cocher appartienne à une cellule en particulier ?

    Merci encore

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    J'ai réussis à trouver une solution pour la moitié de mon problème, je vous le donne. Un jour un membre du forum m'avait aidé sur un autre problème, je m'en suis servi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O10")) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&HA8) -> case vide
            'Chr$(&HFD) -> case annulée
            If Target.Value = Chr$(&HFE) Then
                Target.Value = Chr$(&HA8)
            Else
                Target.Value = Chr$(&HFE)
            End If
            Cancel = True
        End If
    End Sub
    avec les wingdingd on arrive donc à faire des cases à cocher qui dépende d'une cellule mais je ne sais pas comment répondre à ma prmière question :
    si je coche ma cellule O4 par exemple, je voudrais que le curseur aille en P4

    Merci

  3. #3
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    tu peux faire 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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O10")) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&HA8) -> case vide
            'Chr$(&HFD) -> case annulée
            If Target.Value = Chr$(&HFE) Then
                Target.Value = Chr$(&HA8)
                Target.Offset(0, 1).Select
            Else
                Target.Value = Chr$(&HFE)
            End If
            Cancel = True
        End If
    End Sub

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    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_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O10")) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&H72) -> case vide
            'Chr$(&H72) -> case annulée
            If Target.Value = Chr$(&HFE) Then
             Target.Value = Chr$(&H72)
                Target.Offset(0, 1).Select
            Else
                Target.Value = Chr$(&HFE)
            End If
            Cancel = True
        End If
    End Sub
    je te renvoie mon code complet car ça ne marche pas, j'ai juste remplacé A8 par H72 pour que les cases décoché est le même aspect que les cases non coché, ce qui change un peu. Est-ce que ça agit sur ton code ?

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    pas vraiment

    mais j'avais inversé l'ordre surtout
    il suffit de lui dire de passer la selection une case à gauche de la case à cocher

    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_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O10")) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&H72) -> case vide
            'Chr$(&H72) -> case annulée
            If Target.Value = Chr$(&HFE) Then
             Target.Value = Chr$(&H72)
            Else
                Target.Value = Chr$(&HFE)
                Target.Offset(0, 1).Select
            End If
            Cancel = True
        End If
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    merci beaucoup, ça marche.

    Par contre j'aurais deux questions : J'ai mis mon code de O2 à O10 pour faire le test mais comment fait on pour dire de O2 à O......... c'est à dire à l'infini pour que je puisse continuer à saisir. Est-ce que tu me suis ?

    Ensuite, comment on aurait fait si la colonne de destination n'avait pas été juste à côté, à droite mais plus loin, on peut mettre un nombre de case à droite ou bien un n° de colonne ? En fait j'essaie de comprendre ta ligne de code : c'est quoi (0,1)

  7. #7
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Range("O:O")) Is Nothing Then
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Columns("O:O")) Is Nothing Then
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, columns(15)) Is Nothing Then
    ...

    alors ofsset représente un décalage par rapport à la cellule (ici "Target", mais cela mourrait etre "Range("A1")" par exemple

    donc pour décaler de 3 colonne on écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    target.offset(0,3).select
    ou de 3 lignes vers le bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    target.offset(3,0).select
    ou 5 colonnes vers la gauche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    target.offset(0,-5).select

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    Citation Envoyé par mayekeul Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Range("O:O")) Is Nothing Then
    si je veux que ça ne commence qu'à O2, j'ai essayé de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Range("O2:O")) Is Nothing Then
    mais ça ne marche pas.

  9. #9
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    non ça ne marchera pas comme cela

    tu devrais plutot faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Not Intersect(Target, Range("O2:O65536").end(xldown)) Is Nothing Then

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    je te remercie beaucoup de toutes ces explications. Je viens cependant d'essayer, ça ne marche pas : le code donne :
    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_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O65536").End(xlDown)) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&H72) -> case vide
            'Chr$(&H72) -> case annulée
            If Target.Value = Chr$(&HFE) Then
             Target.Value = Chr$(&H72)
            Else
                Target.Value = Chr$(&HFE)
                Target.Offset(0, 1).Select
            End If
            Cancel = True
        End If
    End Sub
    et en ce qui concerne le offset, si j'ai bien compris, le premier chiffre dans la parenthèse concerne les lignes et le deuxième les colonnes
    chiffre positif = nombre de colonne à se déplacer vers la droite ou nombre de ligne à se déplacer vers le bas
    chiffre négatif = nombre de colonne à se déplacer vers la gauche ou nombre de ligne à se déplacer vers le haut

    Si j'ai bien compris, ça va beaucoup me servir ça, merci beaucoup

  11. #11
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    tu as bien compris
    et de rien

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    excuse moi je viens de modifier mon post car ça ne marche plus.

    les cases ne se coches plus

  13. #13
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    que se passe t'il avec ça?

    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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O65536").End(xlDown)) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&H72) -> case vide
            'Chr$(&H72) -> case annulée
            MsgBox Target.Value
            If Target.Value = Chr$(&HFE) Then
                Target.Value = Chr$(&H72)
            Else
                Target.Value = Chr$(&HFE)
                Target.Offset(0, 1).Select
            End If
            Cancel = True
            MsgBox Target.Value
        End If
    End Sub
    edit: problemes de copier collé
    milles excuses
    voici le bon code
    et remille excuse pour l'erreur
    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_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range(Range("O2"), Range("O65536").End(xlDown))) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&H72) -> case vide
            'Chr$(&H72) -> case annulée
            If Target.Value = Chr$(&HFE) Then
                Target.Value = Chr$(&H72)
            Else
                Target.Value = Chr$(&HFE)
                Target.Offset(0, 1).Select
            End If
            Cancel = True
        End If
    End Sub

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    désolé les cases ne se coche toujours pas

    apparemmnt c'est la ligne qu'on a inséré en dernier qui pose problème
    il vaut peut-être tout simplement mettre un chiffre énormé pour être sur de ne jamais être embêté et c'est tout. Par exemple :
    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_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
        If Not Intersect(Target, Range("O2:O65536")) Is Nothing Then
            'Chr$(&HFE) -> case cochée
            'Chr$(&H72) -> case vide
            'Chr$(&H72) -> case annulée
            If Target.Value = Chr$(&HFE) Then
             Target.Value = Chr$(&H72)
            Else
                Target.Value = Chr$(&HFE)
                Target.Offset(0, 1).Select
            End If
            Cancel = True
        End If
    End Sub
    et là ça marche, j'ai juste supprimé : ok avec l'édit de ton précédent poste ça marche

    merci beaucoup pour ta patience encore une fois

  15. #15
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    regarde le message précédent, j'ai corrigé!

    j'avais été trop vite en besogne, sorry!

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 249
    Par défaut
    merci c'est bon, décidément nos postes se croisent

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

Discussions similaires

  1. [MIGRATION] champ de type "case à cocher"
    Par The_Nail dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 10/05/2011, 12h07
  2. Case à cocher dans une requête
    Par kloss dans le forum Access
    Réponses: 6
    Dernier message: 14/10/2004, 12h44
  3. Récupérer toutes les cases à cocher
    Par psyco2604 dans le forum ASP
    Réponses: 7
    Dernier message: 14/10/2004, 11h54
  4. Activer cases à cocher
    Par schnito dans le forum MFC
    Réponses: 4
    Dernier message: 24/01/2004, 17h07
  5. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 18h07

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