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 la ligne de la 1ère cellule visible


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2015
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 123
    Par défaut Sélectionner la ligne de la 1ère cellule visible
    Bonjour,

    Dans mon tableau que j'ai filtré j'aimerais atteindre la première cellule visible ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(1, 0).Select
    Bien évidemment ce code ne fonctionne pas.

    Pour information, c'est pour qu'après je puisse copier vers un autre onglet et ensuite supprimer les lignes copiées.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    voici pour sélectionner la plage complète des données filtrées (uniquement les lignes visibles)
    la procédure s'effectue sur la feuille active, si c'est une autre feuille, il faut référencer les Ranges liés

    je suis parti du principe que la ligne 1 contient les titres et la colonne 1 n'a jamais de données vides

    je t'ai aussi proposé la partie qui copie les données, et qui supprime ta plage source

    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
    Sub MaPlageVisible()
     
    DerCol = Cells(1, Columns.Count).End(xlToLeft).Column
    DerLig = Cells(Rows.Count, 1).End(xlUp).Row
     
    Set PlageFiltre = Range(Cells(2, 1), Cells(DerLig, DerCol)).SpecialCells(xlCellTypeVisible)
    MsgBox PlageFiltre.Address
     
    'recopie des données à partir de la cellule A1, dans "Feuil1"
    'PlageFiltre.Copy Worksheets("Feuil1").Range("A1")
     
    ' suppression de la plage
    'Application.DisplayAlerts = False
    'PlageFiltre.Delete
    'Application.DisplayAlerts = True
    End Sub

    Ps : les titres ne sont pas sélectionnés, uniquement les données

  3. #3
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Pour la première cellule visible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim rg As Range
            Set rg = ThisWorkbook.ActiveSheet.Cells
            Set rg = rg.SpecialCells(xlCellTypeVisible)
            Set rg = rg.Cells(1)
        MsgBox "la première cellule visible se trouve à la ligne : " & rg.Row
    End Sub
    Par contre si c'est dans un tableau je pense pouvoir dire sans me tromper que ça va toujours être la ligne d'en-tête.

    Explications :
    Set rg = ThisWorkbook.ActiveSheet.Cells
    => rg représente Toutes les cellules de ta feuille active

    Set rg = rg.SpecialCells(xlCellTypeVisible)
    => rg devient toutes les cellules visibles de ta feuille active

    Set rg = rg.Cells(1)
    => rg est la première des cellules visibles de ta feuille active



    Donc pour contourner le fait de toujours tomber sur ta ligne d'en-tête tu dois juste changer la première ligne
    Par exemple si ma ligne 1 est vide et que ma ligne 2 comporte mon en-tête le code va etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim rg As Range
            Set rg = ThisWorkbook.ActiveSheet.Rows("3:" & Application.Rows.Count)
            Set rg = rg.SpecialCells(xlCellTypeVisible)
            Set rg = rg.Cells(1)
        MsgBox "la première cellule visible se trouve à la ligne : " & rg.Row
    End Sub
    J'espère être clair


    EDIT : Salut Joe on s'est un peu croisé

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Antony

    Oui carrément, du coup j'en ai profité pour préciser dans mon message que mon code ne sélectionnera pas la ligne des titres

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonsoir, bonsoir !

    La méthode Range.Copy ne tenant compte que des données filtrées, pas besoin de SpecialCells, etc …



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

Discussions similaires

  1. [XL-2003] Sélectionner 1ère cellule vide de la 1ère ligne
    Par hyperion13 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/03/2010, 15h20
  2. la 1ère cellule de la ligne
    Par jijie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/10/2009, 16h29
  3. Réponses: 1
    Dernier message: 02/10/2009, 15h15
  4. sélectionner la ligne de la cellule active
    Par jmcemoa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2008, 14h34
  5. sélectionner la ligne de la cellule active
    Par jmcemoa dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/03/2008, 23h37

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