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 :

Suppression d'une checkbox dans une cellule donnée


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Suppression d'une checkbox dans une cellule donnée
    Bonjour,

    dans mon fichier excel, j'ai créé une macro pour detruire telles cellules d'une ligne. Malheureusement, la checkbox se trouvant dans une des cellule à detruire n'est pas supprimé

    J'ai essayer avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.CheckBoxes.Select
    Selection.Delete
    Mais il ne connait pas

    Pouvez vous m'aider

    Merci par avance

    Cordialement

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 801
    Points
    3 801
    Par défaut
    Bonjour,

    Essaie de le faire avec l'enregistrement de macro.
    Tu lance l'enregistrement, puis tu fais ce que tu veux sous excel et ça transforme tes actions en macro.
    Comme ça tu auras tout le code pour le faire.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    je l'ai deja essayé mais il prend le numero de la checkbox et non la checkbox (quelle que soit son numero) de la case selectionnée

    En fait pour etre plus clair

    Voici la macro de création d'une ligne :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub Nouvelle_Ligne()
     
    Dim chk As CheckBox
    Dim vcell As Range
    Dim vrai As Range
     
    ActiveCell.Range("A1:H1").Select
    Selection.Insert Shift:=xlDown
    ActiveCell.Offset(-1, 1).Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A2"), Type:=xlFillDefault
    'ActiveCell.Range("A1:A2").Select
    ActiveCell.Offset(0, 3).Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A2"), Type:=xlFillDefault
    'ActiveCell.Range("A1:A2").Select
    ActiveCell.Offset(0, 1).Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A3"), Type:=xlFillDefault
    'ActiveCell.Range("A1:A3").Select
    ActiveCell.Offset(0, 1).Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A3"), Type:=xlFillDefault
    ActiveCell.Offset(0, -6).Select
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
     
    ActiveCell.Offset(0, 7).Select
    ' ActiveCell.Range("A1:A3").Select
     
     
    Application.ScreenUpdating = False
     
    For Each vcell In Selection
    vcell.Select
     
     
    Set chk = ActiveSheet.CheckBoxes.Add(30, 69, 0, 0)
     
    With chk
    .Text = ""
    .Value = xlOff
    .ShapeRange.Left = ActiveCell.Left
    .ShapeRange.Top = ActiveCell.Top
    .LinkedCell = ActiveCell.Range("P1").Address
    .Display3DShading = True
    End With
     
    Next
     
    With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$T$3:$T$33"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With
    ActiveCell.Range("A2").Select
    End Sub







    Et voici ma macro pour détruire une ligne

    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
    37
    38
    Sub Supprimer_ligne()
     
    Dim chk As CheckBox
    Dim vcell As Range
    '
     
    ActiveCell.Range("W1").Select
    ActiveCell.Delete
    ActiveCell.Offset(0, -22).Select
     
     
    ActiveCell.Range("H1").Select
     
    Application.ScreenUpdating = False
    For Each vcell In Selection
    vcell.Select
     
    chk.Select
     
    chk.Delete
     
     
     
     
    Next
    ActiveCell.Offset(0, -8).Select
     
    ActiveCell.Range("A1:H1").Select
    Selection.Delete Shift:=xlUp
    ActiveCell.Offset(-1, 5).Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A3"), Type:= _
    xlFillDefault
    ActiveCell.Range("A1:A3").Select
    ActiveCell.Range("A1").Select
    ActiveCell.Offset(1, 2).Select
     
     
    End Sub

    Dans la macro de creation de ligne, j'insere une checkbox dans une cellule.
    Je souhaiterais que quand je supprime cette ligne, la checkbox soit supprimée egalement.
    Et c'est la que le bas blesse ("en gras" dans la macro)


    Merci pour votre aide

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Il te suffit d'ajouter le critère Placement lors de la création de la CheckBox.

    Ce critère, disponible dans la rubrique "Format de contrôle" du menu contextuel, définit la manière dont réagit la CheckBox quand tu modifies ou supprimes des cellules :
    - déplacer et dimensionner avec les cellules (xlMoveAndSize)
    - déplacer sans dimensionner avec les cellules (xlMove)
    - ne pas déplacer ou dimensionner avec les cellules (xlFreeFloating)
    Par défaut et implicitement, c'est le 2e qui est actif. Pour pouvoir supprimer la CheckBox en même temps que la cellule, il faut que Placement soit paramétré en xlMoveAndSize.

    En ajoutant Placement comme ci-dessous, ça devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With chk
    .Text = ""
    .Value = xlOff
    .ShapeRange.Left = ActiveCell.Left
    .ShapeRange.Top = ActiveCell.Top
    .LinkedCell = ActiveCell.Range("P1").Address
    .Display3DShading = True
    .Placement = xlMoveAndSize
    End With
    Pense aux balises de code lorsque tu mets du code (voir posts d'ouskel'n'or épinglés en haut du forum...).

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci ca aurait pu etre cela mais la case est grisée

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Qu'entends-tu par :
    la case est grisée
    ?

  7. #7
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Lors de l'insertion de la CheckBox, attribue lui un nom en rapport avec la ligne dans laquelle elle va être insérée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub creation()
    Dim Cb As OLEObject
     
    Set Cb = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
     
    With Cb
        .Left = Range("A5").Left
        .Top = Range("A5").Top
        .Width = Range("A5").Width
        .Height = Range("A5").Height
        .Name = "CB" & Range("A5").Row '<-- attribution du nom
        .Object.Caption = ""
    End With
    End Sub
    Lors de la suppression cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub suppression()
    Dim LignSup As Integer
     
    LignSup = 5
     
    Rows(LignSup).Delete
    ActiveSheet.Shapes("CB" & LignSup).Delete
    End Sub

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par kantein Voir le message
    Qu'entends-tu par :
    ?

    La case : "deplacer et dimensionner avec les cellules" est grisés lors de la creation ou la modification d'une case a cocher formulaire

    est-ce ,pareil chez vous?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ca fonctionne sans le noms en utilisant le xlMoveAndSize
    Mais le probleme des boites a outils de controle c'est qu'il n'y a pas la fonction cellule liée que je souhaite utiliser et qui est presente dans les formulaires. Comment faire?

    Merci

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set chk = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=30, Top:=69, Width:=0, Height:=0)
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set chk = ActiveSheet.CheckBoxes.Add(30, 69, 0, 0)
    et tu pourras paramétrer la propriété Placement.

    [EDIT] Ben va falloir que je me mettes à taper plus vite...[/EDIT]

  11. #11
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Un conseil,

    Il faut éviter d'utiliser les contrôles de la barre de menus "Formulaire" mais de préférence utiliser les contrôles de la barre de menus "Boîte à outils contrôles" qui offrent beaucoup plus de possibilités de paramétrage.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par fring Voir le message
    Un conseil,

    Il faut éviter d'utiliser les contrôles de la barre de menus "Formulaire" mais de préférence utiliser les contrôles de la barre de menus "Boîte à outils contrôles" qui offrent beaucoup plus de possibilités de paramétrage.
    Merci pour vos conseils.
    Mais comment remplacer la fonction :"fonction cellule liée " des formulaires quand on utilise une boite a outil de controle

    Cordialement

  13. #13
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Clic droit sur la CheckBox --> propriété LinkedCell

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Faut-il que la cellule liée soit paramétrée par la macro ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. Réponses: 6
    Dernier message: 21/06/2012, 16h13
  3. Réponses: 3
    Dernier message: 25/03/2011, 18h29
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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