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 de lignes dont les cellules sont sélectionnées via vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Mai 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2016
    Messages : 32
    Par défaut Suppression de lignes dont les cellules sont sélectionnées via vba
    Bonjour,
    Je souhaite pouvoir supprimer des lignes dont des cellules sont sélectionnées.
    De base j’étais partie sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Selection.rows.Delete
    Mais quand je sélectionne un peu dans tous les sens et plus plusieurs cellule de la même ligne ça plante ou cela me fait un résultat aléatoire (voir ça me supprime des colonnes… ).
    J'ai ensuite essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim SEL as range
    Dim Asup as string 
     
    For each SEL in selection
            Asup = SEL.Row
            Union(Selection, Rows(Asup))).Select
    Next SEL
    Selection.Delete
    Ça ne marche toujours pas à chaque fois en fonction de ce que je sélectionne et en plus si je sélectionne une ligne entière par inattention le temps de traitement est super long vue que cela ajoute chaque cellule à la selection … (je ne sais pas comment ajouter la condition -> si déjà présent dans la sélection alors…).

    Si vous avez une solution pour supprimer les lignes dont on a sélectionner des cellules je suis preneur (n’importe quel ordre de selection , pas forcement dans la même colonne, plusieur cellule sélectionnable dans la même colonne)
    Là je galère un peu …

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.EntireRow.Delete
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Mai 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2016
    Messages : 32
    Par défaut
    Hello merci, j’avais essayé ce code et il plante aussi 😅.
    En fonction du type de sélection.

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur d'étude
    Inscrit en
    Juin 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur d'étude
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 563
    Par défaut
    Bonjour,

    Il faut juste adapter un peu le code qui vous a été fourni par Pierre Fauconnier. Votre code plante car vous demandez à VBA de supprimer plusieurs fois la même ligne.
    Essayez 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
    Option Explicit
     
    Public Sub SupprSel()
        Dim Rng As Variant, Cll As Range, Dct As Object, Addr As String
        Set Dct = CreateObject("Scripting.Dictionary")
        For Each Cll In Selection
            Addr = "'" & Cll.Parent.Name & "'!" & Cll.EntireRow.Address(External:=False)
            If Not Dct.exists(Addr) Then _
                Dct.Add Addr, Cll.EntireRow
        Next Cll
        For Each Rng In Dct.items
            Rng.Delete
        Next Rng
    End Sub
    Je n'ai fait des tests que pour le cas où les cellules sélectionnées sont toutes dans le classeur contenant la macro.

    Et au risque de poser une question naïve : avez-besoin de ces sélections ?

    Cdt

  5. #5
    Membre averti
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Mai 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2016
    Messages : 32
    Par défaut
    Citation Envoyé par Ben_L Voir le message
    Bonjour,

    Il faut juste adapter un peu le code qui vous a été fourni par Pierre Fauconnier. Votre code plante car vous demandez à VBA de supprimer plusieurs fois la même ligne.
    Essayez 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
    Option Explicit
     
    Public Sub SupprSel()
        Dim Rng As Variant, Cll As Range, Dct As Object, Addr As String
        Set Dct = CreateObject("Scripting.Dictionary")
        For Each Cll In Selection
            Addr = "'" & Cll.Parent.Name & "'!" & Cll.EntireRow.Address(External:=False)
            If Not Dct.exists(Addr) Then _
                Dct.Add Addr, Cll.EntireRow
        Next Cll
        For Each Rng In Dct.items
            Rng.Delete
        Next Rng
    End Sub
    Je n'ai fait des tests que pour le cas où les cellules sélectionnées sont toutes dans le classeur contenant la macro.

    Et au risque de poser une question naïve : avez-besoin de ces sélections ?

    Cdt
    Merci je vais essayer, non je n’ai pas besoin de sélectionner j’ai seulement besoin de supprimer les lignes.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Ben,

    Ne sachant quelle sélection pourrait être effectuée, les lignes de mes sélections ne se superposaient pas.

    Bien vu
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [LibreOffice][Tableur] Aligner des lignes dont les cellules sont identiques
    Par IED factory dans le forum OpenOffice & LibreOffice
    Réponses: 21
    Dernier message: 18/04/2018, 16h14
  2. [AC-2010] Création/Modification d'un état dont les champs sont variables - par VBA
    Par Ced06320 dans le forum VBA Access
    Réponses: 3
    Dernier message: 24/07/2015, 10h12
  3. [XL-2010] Suppression d'une ligne dont les cellules sont vides à partir d'une certaine colonne
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/04/2015, 13h54
  4. [MySQL] Sélection des lignes dont les associations sont dans une certaines liste
    Par collect dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/01/2015, 22h09
  5. Réponses: 4
    Dernier message: 21/12/2013, 16h47

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