1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2013 Supression d'une ligne et de sa case a cocher

Discussion dans 'Forum Excel' démarrée par filiph79, 28 Janvier 2019.

  1. filiph79

    filiph79 XLDnaute Occasionnel

    Inscrit depuis le :
    16 Octobre 2007
    Messages :
    197
    "J'aime" reçus :
    2
    Habite à:
    Saint-Maxire
    Utilise:
    Excel 2007 (PC)
    Bonjour le forume

    Dans une liste excel j'ai inséré dans la colonne A une case à cocher de formulaire associée à une cellule pour chacune de mes lignes:
    Ex ligne 3, la case est associée a A3
    ligne 4, la case est associée a A4
    ligne 5, la case est associée a A5
    etc etc....

    Je souhaite créer une macro qui par 1 Bouton supprime automatiquement la ligne sur laquelle je suis + la case à cocher correspondante
    J'ai créé une variable me permettant de stocker le numéro de ligne

    NumLig = Activecell.row
    puis
    cells(numlig,1).entireRow.delete pour supprimer la ligne, mais je n'arrive pas a supprimer la case à Cocher correspondante
    j'ai vu que la case avait une propriété LinkedCell = "Ref Cellule"
    et souhaitait identifier la case de cette façon ,

    par exemple quelque chose comme

    checbox.linkedCell=cells(numlig,1) .delete

    Ou en balayant toutes les case de la feuille :

    With ActiveSheet
    For Each CheckBoxes In .CheckBoxes
    If CheckBoxes.linkedCell=cells(numlig,1) then CheckBoxes.linkedCell=cells(numlig,1).delete
    Next

    mas je n'y arrive pas,

    Avez vous une réponse ?

    cordialement
     
  2. Chargement...

    Discussions similaires - Supression ligne case Forum Date
    Supression ligne suivant 2 critères contenus dans cellules - amélioration code vitesse Forum Excel 27 Janvier 2019
    XL 2013 Supression d'une cellule doublon sur une ligne + decalage Forum Excel 2 Février 2017
    XL 2010 Ajout supression ligne dans fichiers TXT Forum Excel 22 Novembre 2016
    XL 2013 Supression de lignes qui ne commencent pas différents critéres Forum Excel 20 Avril 2016
    XL 2013 Supression d'une ligne dans un tableau selon une variable ( inputbox) Forum Excel 25 Octobre 2015

  3. Sylvain

    Sylvain XLDnaute Occasionnel

    Inscrit depuis le :
    21 Février 2005
    Messages :
    325
    "J'aime" reçus :
    4
    Sexe :
    Masculin
    Page d'accueil :
    Utilise:
    Excel 2013 (PC)
    Bonsoir,

    Une idée à tester.
    Code (Visual Basic):
    Option Explicit
    Option Compare Text
    Sub efface(ByVal adresse)
    '
    'Supprime les cases à cocher liées à la cellule adresse ($A$8 par exemple)
      Dim sh As Shape
      On Error Resume Next
      For Each sh In ActiveSheet.Shapes
        sh.Select
        If Selection.LinkedCell = adresse Then
          If Err.Number = 0 Then
            sh.Delete
          End If
        End If
        Err.Clear
      Next
      On Error GoTo 0
    End Sub
    Sub test()
      efface "$A$8"
    End Sub
     
     
  4. filiph79

    filiph79 XLDnaute Occasionnel

    Inscrit depuis le :
    16 Octobre 2007
    Messages :
    197
    "J'aime" reçus :
    2
    Habite à:
    Saint-Maxire
    Utilise:
    Excel 2007 (PC)
    Bonjour sylvain
    Merci pour ta réponse qui correspond à ce que je souhaite même si c'est un poil compliquer à la lecture du Code !!!!
    J'ai pu modifier le code pour supprimer la case à cocher en fonction de ma cellule active en écrivant ds la procédure Test :
    "$A$"& Activecell.Row
    et ajouter dans la procédure Efface Activecell.EntireRow.delete après sh.delete

    Pour comprendre le code que tu as écrit, j'ai ajouter quelques commentaires ds le code ci dessous, peux tu qd tu auras un peu de temps me confirmer si ils sont corrects et j'ai aussi quelques questions Complémentaires.

    Option
    Explicit Déclaration des variables obligatoires
    Option
    Compare Text ??? pour gérer le texte stocké dans adresse et la référence de la procédure SUB ?

    Sub efface(ByVal adresse) Début de la Procédure
    '
    'Supprime les cases à cocher liées à la cellule adresse ($A$8 par exemple)
    Dim sh As Shape

    On Déclare la variable Sh comme un objet Forme/Dessin ou objet OLE……

    Est-il possible de faire en sorte que cette variable ne concerne que les ChecBoxes. ?


    On Error Resume Next ‘Gestion de l’erreur, si il n’y a pas de « Shapes »dans la feuille on quitte la procédure

    For Each sh In ActiveSheet.Shapes ’Boucle permettant de balayer l’ensemble des objets présents dans la feuille

    sh.Select On sélectionne le 1er objet

    If Selection.LinkedCell = adresse Then On vérifie si la cellule liée de la forme correspond bien à la référence définie dans la procédure test

    If Err.Number = 0 Then

    sh.Delete SI il n’y a pas d’erreur on supprime l’objet

    End If
    End If
    Err.Clear Réinitialise l’erreur ?

    Next
    On Error GoTo 0
    End Sub Fin de la procédure



    Sub test()
    efface "$A$8" ‘Exécute la procédure Efface ave comme référence l’adresse « $A$8 »
    End Sub Fin de la procédure

    Questions :
    sub efface (Byval Adresse)
    Adresse permet d'exécuter la macro avec la référence saisie dans test mais techniquement cela correspond à quoi, Ce n'est pas une variable ? c'est un paramêtre ?
    Comme je déclenche macro à partir d'une forme automatique (Un "shape" donc) , ma forme est sélectionnée a la fin de macro, du coup je ne suis plus sur ma celluleActive.
    Peux ton limiter l'exécution du code aux checkBoxes et utiliser une variable as Checboxes (ce n'est pas dispo qd on saisit par exemple Dim Ch as ........
    Pourquoi faut il passer par une première Procédure test en demandant d'exécuter la procédure Sub efface() avec la référence de cellule identifier dans test.
    Dans mes premiers essais j'essayai de stocker dans une variable la référence à prendre en compte et d'utiliser celle ci pour effacer la case à cocher qui était liée a la référence en question......


    Voila.
    Merci encore pour ta solution proposée, elle me sert!!!, et au plaisir de te lire.
    cordialement Philippe
     
  5. Paf

    Paf XLDnaute Barbatruc

    Inscrit depuis le :
    1 Octobre 2012
    Messages :
    2971
    "J'aime" reçus :
    170
    Utilise:
    Excel 2003 (PC)
    bonjour,

    pour reprendre le code du post 1, on pourrait écrire:
    Code (Visual Basic):
    With ActiveSheet
    For Each cb In .CheckBoxes
          If cb.LinkedCell = Cells(numlig, 2).Address Then cb.Delete
    Next
    en prenant garde que les adresses de cellules liées soit du type $A$1 ou pas .

    une autre solution si les cases à cocher sont numérotées au N° de la ligne (en ligne 8 : case à cocher 8 , ce qui est peu probable...
    Code (Visual Basic):
    ActiveSheet.CheckBoxes("case à cocher " & numlig).Delete
    A+
     
    Dernière édition: 8 Février 2019
    filiph79 aime votre message.
  6. filiph79

    filiph79 XLDnaute Occasionnel

    Inscrit depuis le :
    16 Octobre 2007
    Messages :
    197
    "J'aime" reçus :
    2
    Habite à:
    Saint-Maxire
    Utilise:
    Excel 2007 (PC)
    Merci A vous PAF,
    Ta solution correspond à ce que j'avais imaginé pouvoir faire !!
    et Merci Aussi à toi Sylvain.
    cordialement
     
  7. filiph79

    filiph79 XLDnaute Occasionnel

    Inscrit depuis le :
    16 Octobre 2007
    Messages :
    197
    "J'aime" reçus :
    2
    Habite à:
    Saint-Maxire
    Utilise:
    Excel 2007 (PC)
    bonjour PAF, Je viens de tester ton code mais il me génère une erreur d'éxécution 1004
    Erreur définie par l'application ou par l'objet......

    Cordialement
     
  8. Paf

    Paf XLDnaute Barbatruc

    Inscrit depuis le :
    1 Octobre 2012
    Messages :
    2971
    "J'aime" reçus :
    170
    Utilise:
    Excel 2003 (PC)
    ce morceau de code doit être intégré au reste de ton code où la variable numlig est initialisée. je ne vois que ça qui pourrait poser souci.

    edit : Par sécurité, il faudrait modifier Cells en .Cells

    re edit : à moins que CheckBoxes ne fonctionne pas au delà de XL2003
     
    Dernière édition: 9 Février 2019
  9. filiph79

    filiph79 XLDnaute Occasionnel

    Inscrit depuis le :
    16 Octobre 2007
    Messages :
    197
    "J'aime" reçus :
    2
    Habite à:
    Saint-Maxire
    Utilise:
    Excel 2007 (PC)
    Bonjour PAf,
    Effectivement avec numlig initialisée, cela fonctionne parfaitement.
    Ayant fait évoluer mon fichier, j'ai maintenant un 2ème Case à cocher dans la colonne 3 et je ne vois pas comment supprimer cette case en suivant la 1ère.


    cordialement
     
  10. Paf

    Paf XLDnaute Barbatruc

    Inscrit depuis le :
    1 Octobre 2012
    Messages :
    2971
    "J'aime" reçus :
    170
    Utilise:
    Excel 2003 (PC)
    si cette seconde case à cocher possède également une cellule liée sur chaque ligne (en supposant colonne C),

    Code (Visual Basic):
    For Each cb In .CheckBoxes
          If cb.LinkedCell = Cells(numlig, 2).Address Then cb.Delete
          If cb.LinkedCell = Cells(numlig, 3).Address Then cb.Delete
    Next
    ou
    Code (Visual Basic):
    For Each cb In .CheckBoxes
          If cb.LinkedCell = Cells(numlig, 2).Address  Or cb.LinkedCell = Cells(numlig, 3).Address Then cb.Delete
    Next
     

Partager cette page