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

Contribuez Discussion :

suppression d'une ligne sélectionnée [XL-2007]


Sujet :

Contribuez

  1. #1
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut suppression d'une ligne sélectionnée
    bonjour a tous
    voici un code qui permet de supprimer une ligne précise après avoir cliquer dans la cell de la ligne concerné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
    15
    16
    17
    18
    19
    20
    21
    Private Sub CommandButton2_Click()
    Dim Msg, Style, Title
    If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION SUPRESSION ACTIVEE") = vbOK Then ' Définit le message.
    'récupère le n° de la ligne
    maligne = ActiveCell.Row
    'nomme la variable "cel1" avec la référence de la cellule , "b4" par exemple
    cel1 = "B" & maligne
    cel2 = "P" & maligne
    'nomme "cel1" la cellule, "b4" par exemple
    Range(cel1).Name = "cel1"
    Range(cel2).Name = "cel2"
    'sélectionne les cellules à supprimer (exemple b4:P4) => et  remonte les cellules d'1 cran cad b5.P65536 en b4.h65535
    'et ajoute la 65536 vide, mais attention à cette formule, car si il y a des donnees à droite ou à gauche, en a4 ou
    'au delà de P4, dans notre exemple, elles ne bougent pas
    Range("cel1:cel2").Delete Shift:=xlUp
    ActiveWorkbook.Names("cel1").Delete     'supprime le nom "cel1"
    ActiveWorkbook.Names("cel2").Delete
    Else    ' L'utilisateur a choisi Non.
        MsgBox "suppression annulée" ' Effectue une action.quitter"
        End If
    End Sub
    bien sûr il faudra ajuster le nombre et la quantité de colonne concerné par la suppression

    bon courage

    Pascal

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il serait bon de revoir ton code, car il est loin d'être académique.

    Tu déclares trois variables (Dim Msg, Style, Title) que tu n'utilises pas et qui de plus n'étaient pas typés.

    Tu utilises des variables que tu ne déclares pas : maligne, cel1 et cel2.

    De plus ton code n'est pas indenté pour offrir une meilleur visibilité de lecture.

    Philippe

  3. #3
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut
    bonsoir Philippe
    avec mes excuses j'ai mis le code d'essai que j'ai fait voici le bon qui ressemble comme 2 goute d'eau a l'autre
    que veux tu dire par "indenté"
    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
    Private Sub CommandButton2_Click()
    Dim maligne, cel1, cel2 As String
    If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION A L'OUBLI") = vbOK Then ' Définit le message.
    'récupère le n° de la ligne
    maligne = ActiveCell.Row
    'nomme la variable "cel1" avec la référence de la cellule , "b4" par exemple
    cel1 = "B" & maligne
    cel2 = "P" & maligne
    'nomme "cel1" la cellule, "b4" par exemple
    Range(cel1).Name = "cel1"
    Range(cel2).Name = "cel2"
    'sélectionne les cellules à supprimer (exemple b4:P4) => et  remonte les cellules d'1 cran cad b5.P65536 en b4.h65535
    'et ajoute la 65536 vide, mais attention à cette formule, car si il y a des donnees à droite ou à gauche, en a4 ou
    'au delà de P4, dans notre exemple, elles ne bougent pas
    Range("cel1:cel2").Delete Shift:=xlUp
    ActiveWorkbook.Names("cel1").Delete     'supprime le nom "cel1"
    ActiveWorkbook.Names("cel2").Delete
    Else    ' L'utilisateur a choisi Non.
        MsgBox "suppression annulée" ' Effectue une action.quitter"
        End If
    End Sub
    voila qui fonctionne mieux
    cordialement

    Pascal

  4. #4
    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
    Citation Envoyé par grisan29 Voir le message
    que veux tu dire par "indenté"
    Indenté = insérer des retraits dans le code afin de pouvoir plus facilement déceler le début et la fin des différentes opérations, par exemple :
    Code sans indentation : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For x = 1 to 5
    If blabla & x = "..." Then
    With Sheets(1)
    .Range("A1") = "OK"
    End With
    End If
    Next

    Code avec indentation : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For x = 1 to 5
        If blabla & x = "..." Then
            With Sheets(1)
                .Range("A1") = "OK"
            End With
        End If
    Next

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut puré de zut
    bonjour grizan

    tu poste le code que j'avais a moitié corrigé

    tu devrais poster le dernier que je t'ai envoyé par mail

    effectivement si tu a regardé le dernier code que je t'ai envoyé j'avais supprimé tout ce qui n'était pas utilisé comme fring te la suggéré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton2_Click()
    Dim maligne As Long
    'Définit le message.
    If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION A L'OUBLI") = vbOK Then ' 'récupère le n° de la ligne
    maligne = ActiveCell.Row
    Rows(maligne & ":" & maligne).Delete Shift:=xlUp
    Else    ' L'utilisateur a choisi Non.
        MsgBox "suppression annulée" ' Effectue une action.quitter"
        End If
    End Sub
    çà a du mal a rentrer

    suggestion du jour:
    encore une fois je ne saurais que trop te conseiller de nettoyer tes codes quand tu est arrivé a une formule satisfaisante

    au plaisir

  6. #6
    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
    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maligne = ActiveCell.Row
    Rows(maligne & ":" & maligne).Delete Shift:=xlUp
    Peut se résumer à : Rows(ActiveCell.Row).Delete

  7. #7
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.EntireRow.Delete

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour fring et mercatog

    oui effectivement

    je suis le premier partisan pour la réduction de code les deux sont bien mais faut -il encore quelles soit comprises quoi que la les expressions sont relativement explicites

    c'est ce que j'essaie d'expliquer a grizan (l'importance du nettoyage du code
    surtout en cas d'échange)



    bien que dans le cas de grizan

    on pourrais garder la variable"maligne"

    et faire qu'une seule macro pour monter descendre ou supprimer la ligne
    avec simplement un "select case" ça réduirais encore plus le code

    au plaisir

  9. #9
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut
    bonjour a vous

    voici le code que Patrick m'a posté qui fonctionne bien sauf si c'est la ligne du bas qui est supprimée car la suppression supprime également la bordure basse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim maligne As Long
    If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "SUPPRESSION IRREVERSIBLE") = vbOK Then ' Définit le message.
    'récupère le n° de la ligne
    ActiveCell.EntireRow.Delete 'merci Mercatog
    Else    ' L'utilisateur a choisi Non.
        MsgBox "suppression annulée" ' Effectue une action.quitter"
        End If
    Bonne soirée

    cordialement

    Pascal

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour grizan


    ca n'est pas mon code ca
    moi je n'ai pas utilisé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.EntireRow.Delete 'merci Mercatog
    sinon la variables maligne sert a rien

    et j'ai preciser dans une de mes reponses precedantes que cette variable pourrais servir plus tard pour remettre le cadre autour des celules par exemple

    cela dit la solution de mercatog est plus que bien


    au plaisir

  11. #11
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut
    bonjour a vous tous

    voici donc avec retard le code que Patrick m'avait compresser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    Dim Msg, Style, Title
    If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION A L'OUBLI") = vbOK Then ' Définit le message.
    'récupère le n° de la ligne
    maligne = ActiveCell.Row
    Rows(maligne & ":" & maligne).Delete Shift:=xlUp
    Else    ' L'utilisateur a choisi Non.
        MsgBox "suppression annulée" ' Effectue une action.quitter"
        End If
    End Sub
    voila ce qui m'apprendra de poster un code modifié apres le premier reçu

    cordialement

    Pascal

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

Discussions similaires

  1. [XL-2007] suppression d'une ligne sélectionnée mais?
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/04/2012, 08h11
  2. [Debutant][JTable] Suppression d'une ligne
    Par seiryujay dans le forum Composants
    Réponses: 7
    Dernier message: 03/08/2005, 17h15
  3. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  4. Réponses: 6
    Dernier message: 04/03/2004, 09h35
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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