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 :

Aller à la dernière ligne vide d'une colonne filtrée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Par défaut Aller à la dernière ligne vide d'une colonne filtrée
    Bonjour à tous,

    J'essaie de trouver un code VBA (étant débutant) afin d'arriver directement à la dernière ligne non vide d'une colonne qui possède un filtre afin de coller mon presse papier.

    J'arrive à faire la manipulation pour une colonne non filtré (merci à ce que j'ai trouvé sur le forum) mais pour une colonne filtrée, je ne suis pas en réussite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub RechercherSelectionnerLigneVide()
    'Étape 1: Déclaration de la variable
    Dim DerniereLigne As Long
    'Étape 2: Téléchargez le dernier numéro de ligne utilisé
    DerniereLigne = Cells(Rows.Count, 1).End(xlUp).Row
    'Étape 3: Sélectionnez la ligne suivante ci-dessous
    Cells(DerniereLigne, 1).Offset(1, 0).Select
    End Sub
    Si vous avez des idées, merci d'avance.

    Cordialement.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub RechercherSelectionnerLigneVideFiltree()
        'Étape 1: Déclaration des variables
        Dim DerniereLigne As Long
        Dim Colonne As Range
     
        'Étape 2: Sélectionnez la colonne filtrée
        Set Colonne = ActiveSheet.Range("A:A").SpecialCells(xlCellTypeVisible)
     
        'Étape 3: Trouvez la dernière ligne non vide de la colonne filtrée
        DerniereLigne = Colonne.Cells(Colonne.Cells.Count).End(xlUp).Row
     
        'Étape 4: Sélectionnez la ligne suivante ci-dessous
        Colonne.Cells(DerniereLigne, 1).Offset(1, 0).Select
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour votre retour mais malheureusement, cela me donne le même résultat à savoir sélectionner la première ligne en dessous de la dernière ligne du filtre MÊME si celle ci est rempli.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Si tu utilises un tableau structuré, ca peut être extrêmement simple,
    On active temporairement la ligne des totaux,
    on assigne un objet range à la ligne après cette dernière,
    on desactive la ligne des totaux,
    on selectionne l'objet range.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Application.ScreenUpdating = False
     
    Dim Lo As ListObject
    Set Lo = Me.ListObjects("Tableau1")
    Lo.ShowTotals = True
     
    Dim Rng As Range
    Set Rng =  Lo.TotalsRowRange.Offset(RowOffset:=1)
     
    Lo.ShowTotals = False
    Rng.Select
     
    Application.ScreenUpdating = True

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Teste ceci:

    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 RechercherSelectionnerLigneVide()
        'Étape 1: Déclaration de la variable
        Dim rng As Range
        Dim cell As Range
     
        'Étape 2: Définir la plage à la colonne A
        Set rng = ThisWorkbook.Sheets("Feuil1").Range("A:A")
     
        'Étape 3: Parcourir chaque cellule visible dans la plage
        For Each cell In rng.SpecialCells(xlCellTypeVisible)
            'Si la cellule est vide, sélectionnez-la et quittez la macro
            If cell.Value = "" Then
                cell.Select
                Exit Sub
            End If
        Next cell
    End Sub

  6. #6
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Par défaut
    Citation Envoyé par Franc Voir le message
    Teste ceci:

    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 RechercherSelectionnerLigneVide()
        'Étape 1: Déclaration de la variable
        Dim rng As Range
        Dim cell As Range
     
        'Étape 2: Définir la plage à la colonne A
        Set rng = ThisWorkbook.Sheets("Feuil1").Range("A:A")
     
        'Étape 3: Parcourir chaque cellule visible dans la plage
        For Each cell In rng.SpecialCells(xlCellTypeVisible)
            'Si la cellule est vide, sélectionnez-la et quittez la macro
            If cell.Value = "" Then
                cell.Select
                Exit Sub
            End If
        Next cell
    End Sub
    Parfait, merci beaucoup, cela fonctionne, ça va me faire gagner beaucoup de temps, je te remercie.

    Si je veux que à la fin de l'exécution, il colle (l'exécution d'un CTRL + V) ce qu'il y a dans le press papier, est ce que tu serais comment faire ?

    J'ai tenté avec activesheets et past mais je n'ai pas réussi.

    Merci d'avance et encore merci pour la maccro, c'est super.

  7. #7
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Avril 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Avril 2024
    Messages : 4
    Par défaut
    Nom : Capture d'écran 2024-04-21 121606.png
Affichages : 236
Taille : 21,3 Ko

    Merci pour votre retour mais il apparait une erreur.

    J'ai bien réussi à créer mon tableau en structuré néanmoins.

    J'ai joins une image pour vous montrer l'erreur qui ressors.

    Cordialement.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 839
    Par défaut
    Bonjour,
    S'il s'agit d'un tableau structuré ou non voici une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub SelectPremCellVideCol_AFiltrée()
        If ActiveSheet.FilterMode Then
            'Sélection de la première cellule vide en bas de la colonne A filtrée
            Range("A:A").Find("*", Range("A1"), xlValues, , 1, 2, 0).Offset(1, 0).Select
            SendKeys "{DOWN}"
        Else
            'Sélection de la première cellule vide en bas de la colonne A non filtrée
            Range("A:A").Find("*", Range("A1"), xlValues, , 1, 2, 0).Offset(1, 0).Select                
        End If
    End Sub

Discussions similaires

  1. [XL-2013] Trouver la ligne d'une cellule non vide dans une colonne
    Par AsktoKnow dans le forum Excel
    Réponses: 11
    Dernier message: 02/07/2018, 09h05
  2. Réponses: 3
    Dernier message: 14/11/2016, 20h59
  3. Insertion ligne vide dans une colonne, mais pas toutes les colonnes.
    Par gsekscor dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2013, 22h33
  4. [XL-2003] Calculer le nombre de lignes non vide d'une colonne
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2011, 15h30
  5. [XL-2003] calcule le nombre de ligne non vide dans une colonne donnée
    Par aefmaaradji dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2010, 15h08

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