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 :

Trouver l’indice de fin d’un tableau contenant des lignes vides [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut Trouver l’indice de fin d’un tableau contenant des lignes vides
    Je souhaite faire une boucle for sur un tableau.
    Il faut trouver l’indice de fin de cette boucle.
    Attention, le tableau contient des lignes vides.
    J’ai essayé les fonctions CurrentRegion et End (xlDown).Row .
    Elles ne permettent pas d'obtenir cet indice quand il y a une ligne vide dans un tableau.
    Est-ce qu’il existe une fonction similaire pouvant récupérer l’indice de fin ?

    Exemple :

    A B C D
    1 Prénoms Janvier Février Mars
    2 Marcel 3 3 7
    3 Louis 4 1 9
    4 René 7 4 9
    5 Totaux 14 8 25
    6
    7
    8
    9 Prénoms Avril Mai
    10 Marcel 4 8
    11 Louis 2 5
    12 René 1 3
    13 Totaux 7 16


    Dans le cas présent, indice = 13

  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,

    si tu n'as pas d'autres plages de données sur la feuille, tu peux utiliser UsedRange

    CurrentRegion d'un objet Range : plage rectangulaire contenant le range, et délimitée par des intersections vides de lignes/colonnes
    UsedRange d'un objet WorkSheet : plage rectangulaire de la feuille qui est utilisée


    si tu as d'autres données, tu dois complexifier ce que tu as tenté :

    - Définir la dernière ligne de la plage : en faisant un Cells(rows.count,i).end(xlup).row, où i est la colonne où tu es sûr qu'il y aura des données sur la dernière ligne
    - définir la dernière colonne de la plage : si tu la connais c'est bien ... sinon tu la cherche via un cells(i,columns.count).end(xltoleft).column, où i est la ligne où tu es sûr qu'il n'y aura pas de colonnes parasites n'appartenant pas à ta plage. Attention car je pars bien du principe que ta plage commence en colonne A, sinon il faudra faire une soustraction

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A100000").End(xlUp).row
    DeathZarakai

    P.S. : Désoler j'avais pas vu la réponse, qui est bien mieux détaillé (peu le temps de répondre)

  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
    @DeathZarakai

    c'est dangereux d'écrire une ligne en dur comme ça.

    Dans ton exemple : si le classeur est ouvert sur un Excel < 2007, ça va planter (limite de 65XXX lignes)

    Et dans l'exemple qu'on voit souvent où les gens utilisent range("A65XXX") ... si on est sur un excel > 2007 et qui contient + de données que ce nombre de lignes, on en loupe


    il faut toujours privilégier Rows.Count qui renverra bien le nombre max de ligne du classeur, en relation avec la version Excel utilisée

  5. #5
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Par défaut
    Oui j'ai appris cette méthode que je ne connaissais pas aujourd'hui et c'est vrai qu'elle est bien plus stable, je voulais juste répondre rapidement, car sans vouloir être méchant sa demande a déjà très souvent été abordé il je doute qu'il ait fait une recherche au préalable.

    DeathZarakai

  6. #6
    Membre expérimenté

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses. Le problème est résolu

  7. #7
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fin = sheets(X).Max(Range("A"&rows.count).End(xlUp).Row,Range("B"&rows.count).End(xlUp).Row,Range("C"&rows.count).End(xlUp).Row,Range("D"&rows.count).End(xlUp).Row)

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

Discussions similaires

  1. [iText] Tableau contenant des tableaux
    Par drizztoli dans le forum Documents
    Réponses: 2
    Dernier message: 01/09/2010, 21h51
  2. Réponses: 7
    Dernier message: 10/06/2008, 15h38
  3. Tableau contenant des Vecteurs Template ?
    Par ExSter dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2007, 11h41
  4. Tri d'un tableau contenant des heures;
    Par Bourak dans le forum Delphi
    Réponses: 3
    Dernier message: 27/07/2006, 12h57
  5. Réponses: 18
    Dernier message: 28/04/2006, 11h00

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