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 entre deux colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Juin 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Juin 2016
    Messages : 7
    Par défaut Suppression de lignes entre deux colonnes
    Bonjour,

    Je m'excuse de reposter la question sur une nouvelle discussion ( je l'avais déjà posté sous un sujet de 2015 mais visiblement ce n'était pas la meilleure chose à faire )

    Le sujet en question : http://www.developpez.net/forums/d15...s-range-donne/


    J'ai voulu utilisé le code présent dans le sujet ci-dessus mais le problème est qu'il supprime la ligne entière. Or, j'ai des donnés supplémentaires ( tcd ou autres tableaux dans des colonnes voisines mais sur ces mêmes lignes) que je souhaite garder.

    J'ai crée ce code :

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub supprimer()
     
    Dim cell As Range
     
    For Each cell In Range(Cells(7, 6), Cells(7, 6).End(xlDown)).Cells
        If cell.Value = "" Then Range(cell, cell.End(xlToRight)).Delete
    Next cell
     
    End Sub
    La limite étant qu'il ne s'applique pas à l'ensemble des lignes de mon "tableau" et en cliquant sur exécuter plusieurs fois la macro, celle-ci ne marche plus dès qu'il y a deux cellules "pleines" qui se suivent.

    Un petit extrait :

    Nom : extrait_excel.JPG
Affichages : 303
Taille : 18,2 Ko

    Si quelqu'un peut m'aiguiller, ce serait super sympa

    Merci !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Le End(xlDown) pose souvent problème, en particulier quand on risque d'avoir une ligne vide juste après celle du début de la recherche.
    C'est pourquoi on préconise plutôt de chercher les fin de liste en partant du bas avec un End(xlUp).

    De même, ton End(xlToRight) me semble étrange puisque la cellule sur laquelle tu fais débuter la recherche est supposée vide.

    Peux-tu expliquer plus précisément ce que tu souhaites faire ?
    Est-ce que tu souhaites éliminer toutes les lignes vides mêlées aux ligne pleines dans une zone données ?

  3. #3
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Juin 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Juin 2016
    Messages : 7
    Par défaut
    J'utilise, sûrement à tort, le xL right pour que la macro supprime également les cellules à droite de celle qui est vide.

    Ce que j'aimerais faire, c'est ceci :

    Après 2 exécutions de la macro actuelle,

    Nom : Etape 1.PNG
Affichages : 332
Taille : 12,7 Ko


    Plus deux autres,

    Nom : Etape 2.PNG
Affichages : 332
Taille : 13,1 Ko


    Et deux autres ( là où je suis actuellement bloquée),

    Nom : Etape 3.PNG
Affichages : 287
Taille : 12,9 Ko


    J'ai encore une flopée de lignes vides en dessous, mêlées à des lignes non vides. J'aimerais automatiser la suppression de l'ensemble de ces lignes sans pour autant supprimer la ligne entière.

    J'espère que les images donnent plus de sens à tout ça

    Merci

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Essaies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub supprimer()
    Dim tableau As Range
    Dim lignesvides As Range
      Set tableau = Cells(7, 6).CurrentRegion
      Set lignesvides = tableau.Rows(1).Offset(tableau.Rows.Count)
      With lignesvides
        Set lignesvides = .Resize(.Cells(1, 1).End(xlDown).Row - .Row)
      End With
      lignesvides.Delete shift:=xlShiftUp
    End Sub

  5. #5
    Membre régulier
    Femme Profil pro
    Etudiante
    Inscrit en
    Juin 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Juin 2016
    Messages : 7
    Par défaut
    Merci Patrice, ça marche super bien !

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Toutes les lignes vides d'un coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub supprimer()
    Dim Ligne As Long
    For Ligne = 7 to Cells(Rows.Count, 6).End(xlUp).Row
        If Cells(Ligne, 6) = "" Then Range("F" & Ligne & ":I" & Ligne).Delete shift:=xlShiftUp
    Next Ligne
    End Sub

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

Discussions similaires

  1. [XL-2003] Compter le nombre de sous-lignes non vides entre deux colonnes
    Par Augustine1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2012, 14h40
  2. Réponses: 2
    Dernier message: 22/03/2012, 14h18
  3. Swap entre deux colonnes pour 2 enregistrements
    Par Erakis dans le forum SQL Procédural
    Réponses: 12
    Dernier message: 15/12/2005, 19h09
  4. Correspondance entre deux colonnes
    Par AlfiQue dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 09/12/2005, 14h03
  5. Minimum entre deux colonnes
    Par keikun dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/08/2005, 13h20

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