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 :

Effacer une ligne et ses boutons


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut Effacer une ligne et ses boutons
    Bonjour, j'ai fait une routine bien agréable qui me permet d'effacer une ligne.

    Je place le bouton au bout de la ligne et lorsque je le clique la ligne en question est supprimée.

    J'ai un problème:
    -Au bout de la ligne se trouve en fait 3 boutons; le bouton qui me permet de supprimer, un bouton qui sert à ajouter une ligne au dessous de celle-ci et un autre bouton servant à ajouter une ligne au-dessous mais formatée différemment.

    -Je sais comment supprimer la ligne ET supprimer le bouton de suppression MAIS pas les autres boutons. Donc la ligne se supprime, le bouton se supprime mais les deux autres bouton vont se loger sous les bouton de la ligne supérieure, créant plusieurs couches de boutons si je supprime plusieurs lignes.

    Voici le code que j'emploi:
    Vous remarquerez que je sélectionne la case située trois colonne plus loin que le bouton de supression et le loop un clearcontents mais ça ne suprimme pas les boutons. J'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    activecell.shapes.select
    selection.delete
    , marche pas non plus, donc voilà mon code:

    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
    Sub deleterow()
     
        Dim butrange As Range
        Dim startrange As Range
        Dim startcol As Long
     
        Set butrange = ActiveSheet.Buttons(Application.Caller).TopLeftCell
        Set wks = ActiveCell.Worksheet
        Set startrange = butrange.Offset(0, 3)
        startcol = startrange.Column
     
        startrange.Select
        Dim i As Integer
     
        For i = 1 To startcol
            Selection.ClearContents
            'Selection.Shapes.Select
            'Selection.Delete
                If ActiveCell.Column > 1 Then
                    ActiveCell.Offset(0, -1).Select
                End If
        Next i
     
        butrange.EntireRow.Delete
        'NomGraph = Application.Caller
        'ActiveSheet.Shapes(NomGraph).Delete
     
    End Sub
    à noter que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'NomGraph = Application.Caller
        'ActiveSheet.Shapes(NomGraph).Delete
    fonctionne mais j'aimerais une solution qui me permette de supprimer non seulement le bouton de supression masi également tout les boutons se trouvant sur cette ligne avant de supprimer la ligne.

    merci

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Pourquoi au lieu de mettre des tas de boutons ne mettrais-tu pas 3 cellules formatées spécifiques (couleur, valeur , nom etc...) en bout de ligne liées à un
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ou
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    - qui feraient ce que tu veux au double clic
    - qui disparaîtraient par définition à la suppression de la ligne
    - qui constitueraient un code plus léger

    ????

    à voir

    cordialement,

    Didier

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut
    Ormonth:
    Votre methode semble beaucoup plus sexy d'un point de vue de présentation, ce qui pour moi est assez important. Je trouve les boutons peu élégant mais c'est ce que je connais. Je n'ai aucune formation comme tous ceux qui apprenent par eux-même je me débrouille avec ce que je sais .

    Ceci dit, je ne comprend pas vraiment la méthode.
    Dans mon vba je sélectionne sheet1 (disons que c'est là que je veux mes cases formatées), puis je mets le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    et ensuite je met quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    entirerow.delete 
    end sub
    Désolé je suis assez noob donc je ne connais pas toutes les méthodes et celle-ci me semble assez bien, le code est dans la feuille et pas sur un bouton, et toutes les cellules formaté de façons xyz vont deleter la ligne (ou faire le script x) ou elles se trouvent si double-cliquées, c'est bien ça?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 49
    Par défaut
    Solution:

    J'ai trouvé, je comprend que ma méthode n'est pas chic car je crée et supprime des tas de boutons et ça c'est pas bien mais n'empêche, j'ai ici un code qui supprimera un ligne et tous les contrôles qui y sont situé, boutons ou autre. Ça ne peut qu'être pratique, c'est le "ultimate delete row" si vous voulez.

    Ormonth, ça ne change rien à ma demande, j'aimerais quand même comprendre votre méthode, je me dit que combiner l'aspect mise en page de la votre avec la possibilité de supprimer n'importe quel contrôle se trouvant sur la ligne serait parfais considérant les besoins que j'ai.

    alors voilà:

    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
    Sub deleterow()
     
        Dim butrange As Range
        Dim startrange As Range
        Dim startcol As Long
     
        Set butrange = ActiveSheet.Buttons(Application.Caller).TopLeftCell
        Set startrange = butrange.Offset(0, 3)
        startcol = startrange.Column
     
        startrange.Select
     
        Dim i As Integer
        For i = 1 To startcol
            Selection.ClearContents
               For Each myShape In ActiveSheet.Shapes
                   If Intersect(myShape.TopLeftCell, Selection) Is Nothing Then
                       'do nothing
                   Else
                       myShape.Delete
                   End If
               Next myShape
                If ActiveCell.Column > 1 Then
                    ActiveCell.Offset(0, -1).Select
                End If
        Next i
     
        butrange.EntireRow.Delete
     
    End Sub

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Bien que ton problème ne soit pas rigoureusement le même, tu devrais t'inspirer d'une réponse que j'ai faité récemment dans une autre discussion :
    http://www.developpez.net/forums/d84...ol-impression/

    Le mécanisme de base resterait le même

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    vite fait voici une ébauche du genre, tu peux chiader le graphisme, si tes lignes ont des longueurs variable ou autre, il suffit d'adapter selon ton contexte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 7 Then
        'peut-être un msgbox de confirmation
        Target.EntireRow.Delete
    End If
    End Sub
    End Sub


    Tu as tout ce qu'il faut dans les Tutos et FAQ Excel pour piloter ça

    cordialement,

    Didier

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

Discussions similaires

  1. Effacer une ligne avec bouton
    Par ptitepo dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/05/2008, 13h16
  2. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  3. Table paradox : Effacer une ligne entière
    Par James64 dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/10/2005, 14h11
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Effacer une ligne dans la table nat
    Par vbcasimir dans le forum Sécurité
    Réponses: 2
    Dernier message: 11/01/2004, 00h15

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