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 :

Tri d'un tableau en fonction de cellules vides


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
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Par défaut Tri d'un tableau en fonction de cellules vides
    Bonjour,

    Etant débutant en VBA, j'ai grandement besoin d'aide. J'ai essayé plusieurs codes différents mais aucun ne fonctionne.

    Je souhaite copier une plage de cellule vers un nouvel onglet et supprimer les lignes pour lesquelles certaines colonnes ( Email et fonction pour l'instant) ne sont pas renseignées. Il faut donc que je copie la ligne si ces colonnes ne sont pas vides.
    Il faudrait que la macro parcours la plage de cellule ligne par ligne.

    Je vous joint le fichier (celui sur lequel j'ai essayé mes différents codes, l'original est beaucoup plus long).

    Merci de votre aide !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 101
    Par défaut
    Bonjour,
    Souhaites-tu supprimer les lignes dont les colonnes Email et fonction sont toutes deux vides, ou simplement lorsque l'une des deux est vide ?
    Une boucle For to devrait convenir à ton problème.

    Edit: Je t'ai fait une bricole en PJ tu me diras si ça te convient.

    Mickamax
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Par défaut
    Merci beaucoup pour ta réponse.

    Sur le document complet, je dois effectuer un tri du plus au moins renseigné (donc du plus de cases non vides au moins de cases non vides). Je pensais procéder par étape en cherchant d'abord à supprimer toutes les lignes avec une case vide ou plus et récolter le résultat dans une nouvelle feuille. Recommencer la même procédure avec deux cases vides ou plus. Etc.

    J'avais aussi pensé à utiliser une boucle For mais étant donné la taille importante du document complet, j'ai peur que cela prennes beaucoup de temps …
    J'ai trouvé un code permettant de le faire sans utiliser de boucle SpecialCells(xlCellTypeBlanks).EntireRow.Delete mais je n'arrive pas à l'adapter correctement.

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    C'est le processus que j'adopte personnellement.
    Mais, pour ce faire, il faut:
    - Remplacer éventuellement les cellules concernées par un vide, ou du moins s'assurer qu'elles sont vides.
    - Disposer de cellules vides en rattachant la propriété
    SpecialCells
    à l'objet Range concerné.

  5. #5
    Membre averti

    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Par défaut
    Merci pour votre réponse.

    Avec ce processus, j'ai utilisé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub tri()
     
    Sheets("Feuil1").Copy After:=Sheets("Feuil1")
    ActiveSheet.Range("G1:G50000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
     
    End Sub
    Cependant, je ne trouve pas comment l'adapter pour plusieurs colonnes et lorsque je le fais tourner uniquement pour la colonne G, il y a une erreur d'exécution 1004.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 101
    Par défaut
    Salut,
    Je suis plutôt un adepte de la boule For to en ce qui me concerne. Je suis d'ailleurs curieux de savoir si la méthode "SpecialCells" est plus rapide que la boucle ?

    Toujours est-il que je te conseille fortement de borner ton tableau avec end(XlUp).row, voire avec (XlLeft).column. Cela te permettra de variabiliser ta sélection au cas où ton tableau venait à être modifié en amont, mais également à limiter le temps d'exécution de ta macro.

    Au hasard: un tableau structuré avec des filtres ne te convient pas ?

    Mickamax

Discussions similaires

  1. Tri d'un tableau de plusieurs colonnes + cellule vide
    Par Neophyte27 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/11/2010, 23h57
  2. [XL-2007] Tri d'un tableau en fonction du mois et d'une ComboBox
    Par bob254 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/04/2010, 14h32
  3. tri d'1 tableau en fonction d'un autre avec qsort
    Par Invité dans le forum Débuter
    Réponses: 1
    Dernier message: 20/02/2010, 14h11
  4. Problème de fonction avec cellule vide
    Par Samjeux dans le forum Excel
    Réponses: 4
    Dernier message: 14/06/2007, 08h45
  5. Réponses: 4
    Dernier message: 06/03/2007, 13h35

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