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 :

Sélectionner un groupe de lignes


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
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut Sélectionner un groupe de lignes
    Bonjour,
    Je recherche la formule pour sélectionner, par macro VBA, un groupe de lignes dans une feuille Excel, à partir d'une cellule aléatoire mais auparavant précisée, jusqu'à la fin de la page. merci de votre aide.
    Je n'ai pas du être assez précis dans ma question.
    Jusqu'ici, j'utilisais la fonction While / Wend et chaque ligne à supprimer s'effaçait ligne par ligne, ce qui me demandait pas loin de 3 minutes par opération.
    Mon souhait est de sélectionner une plage de cellules ou de lignes différentes des critères approuvés, par exemple "22" ou "2015" et les supprimer ou copier d'un bloc.
    La première cellule pourrait être nommée "X" et serait dans la colonne A comportant une valeur, et la dernière "Z" serait dans la colonne M dans une ligne différente mais vide.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonsoir,

    regarde la fonction Range.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Bonsoir,

    regarde la fonction Range.
    Merci du conseil, mais je l'ai déjà essayée, peut- être mal.

  4. #4
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Citation Envoyé par ludopol Voir le message
    Bonjour,
    Je recherche la formule pour sélectionner, par macro VBA, un groupe de lignes dans une feuille Excel, à partir d'une cellule aléatoire mais auparavant précisée, jusqu'à la fin de la page. merci de votre aide
    Bonjour,
    débute avec l'enregistreur de macro.
    ensuite il faut adapter quelque peut le code généré.

    ensuite, si tu as de la difficulté, revient nous, en nous expliquant exactement ou est-ce que tu bloque pour adapté le code généré.

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    Citation Envoyé par gnain Voir le message
    Bonjour,
    débute avec l'enregistreur de macro.
    ensuite il faut adapter quelque peut le code généré.

    ensuite, si tu as de la difficulté, revient nous, en nous expliquant exactement ou est-ce que tu bloque pour adapté le code généré.
    Merci, j'ai modifié et précisé ma question.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Pour ce genre de traitement, je suggère toujours la même chose, ayant vu des rapports 10 à 40 sur le temps de processing:

    - Filtrer le range sur les valeurs à supprimer
    - Utiliser le Range.SpecialCells(xlCellTypeVisible) pour la suppression
    - Enlever le filtre .... et le tour est joué


  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    Avec Range comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub tt()
     
    Set wh = ThisWorkbook.Worksheets("Feuil2")
     x = 5
     m = 10
     
     Set r1 = wh.Cells(x, "A")
     Set r2 = wh.Cells(m, "M")
     
      wh.Range(r1, r2).EntireRow.Delete
     
    End Sub

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Pour le filtrage, voir exemple de code sous

    http://www.developpez.net/forums/d15...ches-expirees/

  9. #9
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    Citation Envoyé par Docmarti Voir le message
    Bonjour

    Avec Range comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub tt()
     
    Set wh = ThisWorkbook.Worksheets("Feuil2")
     x = 5
     m = 10
     
     Set r1 = wh.Cells(x, "A")
     Set r2 = wh.Cells(m, "M")
     
      wh.Range(r1, r2).EntireRow.Delete
     
    End Sub
    Merci, mais ça ne fonctionne pas

  10. #10
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut Bonsoir, vous m'avez fait recercher, mais je n'ai pas trouvé.
    Merci de votre réponse.
    Cependant,
    je pense que pour mon problème, il faut partir d'une autre solution:
    VBA me donne le numéro de ligne aléatoire de la cellule située dans la colonne A.
    Je voudrais concaténer la colonne A avec le numéro de la ligne à savoir ( A:ligne ) et le transformer par exemple en ( A: 3978).
    Si j'arrive tout mon problème sera résolu.
    A l'avance, merci de votre réponse.

  11. #11
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    Citation Envoyé par vinc_bilb Voir le message
    Bonjour,

    Pour ce genre de traitement, je suggère toujours la même chose, ayant vu des rapports 10 à 40 sur le temps de processing:

    - Filtrer le range sur les valeurs à supprimer
    - Utiliser le Range.SpecialCells(xlCellTypeVisible) pour la suppression
    - Enlever le filtre .... et le tour est joué

    Oui mais comment filtrer le range des valeurs à supprimer, sachant que celles-ci se trouvent toujours en bas de tableau après les fonctions de tris préalablement programmées.

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Qui dit filtre, dit condition. Qui dit condition, dit ça dépend des données.

    Une fois que tu as trouvé la condition. l'enregistreur de macros donne le code sur un plateau d'argent.

  13. #13
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par ludopol Voir le message
    Jusqu'ici, j'utilisais la fonction While / Wend et chaque ligne à supprimer s'effaçait ligne par ligne, ce qui me demandait pas loin de 3 minutes par opération.
    Donne le code que tu utilisais et qui fonctionnait. On pourra le modifier avec plus de précision.

  14. #14
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut Bonsoir,
    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
    Sub Suppression()
    '
    ' 
    '
     
    '
        Sheets("BASE").Select
         Range("A2:M25000").Select
         Selection.Sort Key1:=Range("F2"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=2, MatchCase:=False, Orientation:=xlTopToBottom
     
         Range("A2").Select
         While Cells(ActiveCell.Row, ActiveCell.Column).Value <> ""
         While Cells(ActiveCell.Row, ActiveCell.Column + 5).Value <> "22"
         ActiveCell.Select
         Selection.EntireRow.Delete
         Wend
         ActiveCell.Offset(1, 0).Select
         Wend
    End Sub
    Merci de ta réponse

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

Discussions similaires

  1. Ligne sélectionnée par GROUP BY
    Par Ali Kent dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/11/2014, 18h13
  2. Réponses: 8
    Dernier message: 03/07/2007, 18h26
  3. MySLQ sélectionner nombre fixe de ligne
    Par bressan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/08/2006, 13h40
  4. EXCEL : Additionner deux groupes de lignes
    Par repié dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/12/2005, 20h59
  5. ne sélectionner qu'une seule ligne d'un SELECT
    Par le-stagiaire dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 29/04/2005, 11h52

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