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 :

Comment connaître le nombre de lignes?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 52
    Points
    52
    Par défaut Comment connaître le nombre de lignes?
    Bonjour!

    Je cherche à savoir si il y a une fonction permettant de connaître quel est le nombre de ligne d'un fichier Excel. Je veux dire, par exemple si j'ai un fichier excel qui a, à la colonne A, 300 chiffres qui occupe les lignes 1 à 300 après plus rien. J'aimerais que dans l'initialisation du tableau, je puisse mettre tableau(1 To fonction magique de la colonne A) As Byte au lieu de tableau(1 To 300) As Byte.
    J'espère avoir été clair.

    Merci beaucoup pour votre aide!

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    Va voir

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoup!!!

    Quelle est la différence entre ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A1").End(xlDown).Row
    et ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A15").End(xlDown).Row
    Et, si je veux appliquer cette méthode à la colonne D, j'ai qu'à remplacer A par D, non?

    Et, est-ce qu'on peut initialiser une variable de cette manière : Dim tableau(1 To Range("XX").End(xlDown).Row) As byte?

    S'il vous plaît, et merci beaucoup!

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    1° DerniereLigne = Range("A1").End(xlDown).Row

    La différence c'est que ca ira depuis la cellule A1 jusqu'a la fin de la saisie

    2° DerniereLigne = Range("A15").End(xlDown).Row

    Celui la ira depuis la cellule A15 jusqu'a la fin. Exemple :

    Il y a 100 ligne remplies à partir de A1

    1° la selection sera : A1:A100
    2° La selection sera : A15:A100

    Et oui tu peux déclarer ta variable comme ca puisque la propriété Row renvoie un nombre.
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Merci infiniment!

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonjour
    J'ai testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tableau(1 To Range("XX").End(xlDown).Row) As byte
    Ca ne marche pas, par contre tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim tableau() as byte
    DerniereLigne = Range("A1").End(xlDown).Row
    Redim tableau (DerniereLigne)
    Slts
    Denis

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Swiper
    1° DerniereLigne = Range("A1").End(xlDown).Row

    La différence c'est que ca ira depuis la cellule A1 jusqu'a la fin de la saisie

    2° DerniereLigne = Range("A15").End(xlDown).Row

    Celui la ira depuis la cellule A15 jusqu'a la fin. Exemple :

    Il y a 100 ligne remplies à partir de A1

    1° la selection sera : A1:A100
    2° La selection sera : A15:A100

    Et oui tu peux déclarer ta variable comme ca puisque la propriété Row renvoie un nombre.
    Oula...

    Faudrait éviter d'écrire des bêtise.

    Les 2 formulations renverront un numéro de ligne.
    La différence entre les 2 sera l'endroit où on va commencer la recherche.
    On utilisera la 2ème si on sait que les 15 premières lignes sont (par exemple) vides.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Les réponses données appellent quelques précisions.

    Il est faux de penser que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    range("a1").end(xldown)
    renvoie à la dernière cellule utilisée de la colonne. Cela dépend:
    1. du contenu de A1
    2. De l'existence ou non d'une solution de continuité dans la colonne, à partir de la référence, soit A1.
    Si Il n'y a pas de solution de continuité entre A1 et la dernière cellule utilisée en A, alors la cellule renvoyée sera bien la dernière utilisée. Dans tous les autres cas de figure, il risque d'y avoir problème...

    Si A1 est vide,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    range("a1").end(xldown)
    renverra
    - soit à la première cellule non vide située en dessous
    - soit à la dernière cellule, c-à-d A65536 (XL <=2003), soit A1048536 (XL 2007) si il n'y a aucune cellule remplie sous A1.

    Si A1 n'est pas vide,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    range("a1").end(xldown)
    renverra
    - à A65536 (A1048576) si toutes les cellules sont vides sous A1
    - à la prochaine cellule non vide si A2 au moins est vide sous A1, et qu'il y a des cellules non vides sous A2
    - à la dernière cellule non vide précédant la première cellule vide sous A1, si A2 au moins n'est pas vide sous A1.

    Je pense avoir exploré tous les cas.

    Dès lors, pour être certain d'arriver à la dernière cellule non vide d'une colonne (A en l'occurence), il est préférable de remonter la colonne.
    On utilisera donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a65536").End(xlUp)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("a1048576").End(xlUp)
    selon la version utilisée, ou, de façon plus générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("a" & Rows.Count).End(xlUp)
    pour éviter les problèmes de version.
    Idéalement, il faudra, avant d'utiliser ce code, tester si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("a" & Rows.Count)
    est utilisée.
    Car ce que j'ai précisé avec XlDown vaut pour XlUp.
    On peut bien entendu raisonner de la même façon en remplaçant A1 par n'importe quelle cellule, et dans tous les sens de déplacement (XlDown, XlUp, XlToLeft et XlToRight).

    Pour terminer, il faut noter que le code utilisant End est à rapprocher des séquences de touches CTRL+Flèche.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Comment connaître le nombre de lignes avec une valeur ?
    Par EFFLYINGJOKER dans le forum Excel
    Réponses: 4
    Dernier message: 13/05/2011, 15h31
  2. [Outils] Comment compter le nombre de lignes ?
    Par ChristopheOce dans le forum EDI/Outils
    Réponses: 3
    Dernier message: 18/04/2011, 12h36
  3. Réponses: 2
    Dernier message: 11/08/2007, 03h51
  4. [C#] Comment connaître le nombre de lignes affectées par un Select ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2006, 13h56
  5. Réponses: 4
    Dernier message: 05/05/2006, 23h52

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