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 :

Tester quelle est la dernière ligne d'un tableau pour la remplir ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut Tester quelle est la dernière ligne d'un tableau pour la remplir ?
    Bonjour à tous,
    voici ma question: à l'aide d'une macro je parcours un fichier ligne par ligne pour déterminer quelle est la dernière remplie, afin d'écrire mes données dans la première ligne qui est vide au-dessous.
    J'utilise donc le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigneF1 = FL1.Range("A65535").End(xlUp).Row + 1
    et ça fonctionne très bien.
    Petit souci: à présent j'ai toujours une valeur (un numéro qui s'incrémente) dans al colonne A, j'ai donc tout simplement changé de colonne de test mais ce n'est pas assez sûr (il peut y avoir parfois une cellule vide sur la ligne et je n'ai pas envie d'écraser des données).
    J'aurais donc besoin de tester que la totalité de ma ligne est vide (hormis la colonne A du numéro évidemment). Je suis débutant et je ne sais pas comment faire cela,comment m'y prendre?
    Merci d'avance pour vos réponses,
    t

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Une petite boucle que j'utilise souvent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    range("a1").select  ' Mettre sa colonne preferée
    Do Until ActiveCell.Offset(1, 0).Value <> "" And ActiveCell.Offset(2, 0).Value <> ""
        ActiveCell.Offset(1, 0).Select
    Loop
    te voila a la derniere ligne and ayant testés sur 2 lignes non vides

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Merci pour ce code, à quoi correspond ActiveCell.Offset(X,x) que je l'adapte à mes numéros de lignes et colonnes désirées (je ne comprends pas le 0 en fait).
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 10
    Points
    10
    Par défaut explication
    activecell.offset(ligne,colonne).value pour exemple, te permets de connaitre la valeur de la cellule par rapport a la cellule actuelle, pas trop facile a explique
    exemple , tu es en A1
    si tu veux connaitre la valeur de la cellule C10 sans te deplacer dans le tableau et la stocker dans la variable sMaValeur
    sMaValeur=activecell.offset(9,2).value
    1 -> 10 donne 9
    A -> C donne 2
    si tu utilise activecell.offset(1,0).select
    tu te deplace d'une cellule vers le bas , sans changer de colonne.

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Ok donc c'est comme les références relatives/absolues avec le $;
    si je comprends bien je dois faire une boucle ActiveCell.Offset(i,0) quand je suis sur la ligne que je pense être vide (avec i allant de 1 jusqu'au nombre de colonnes à tester sur ma ligne) et tester si ma ligne est vide ou pas.

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 8
    Points : 10
    Points
    10
    Par défaut ATTENTION
    en fait il y avait une erreur dans le code que je t'ai donné , toutes mes confuses

    voici le code de la boucle suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    range("a1").select
    do until activecell.value=""
       activecell.offset(1,0).value
    loop
    litteralement
    faire tant que la valeur de la cellule n'est pas vide
    se deplacer d'une cellule vers le bas
    revenir au debut de la boucle
    si tu veux etre sur que cela fonctionne pose ton range sur une colonne qui ne contient pas de cellule vide.

  7. #7
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'ai l'impression que tu essaie de me donner un code pour trouver ma dernière ligne vide ai-je tort?
    La formule que j'ai mis dans mon premier post fonctionne très bien pour cela, mais ne fait le test que sur une colonne!
    Je désire "améliorer" ce test en le réalisant sur les cases adjacentes de mon tableau.
    (Désolé si j'ai mal compris ton code et qu'il permet de répondre à mon problème).

  8. #8
    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
    En faisant un petit tour dans les vieilles discussions non résolues, je suis tombé sur celle-ci.
    Je te propose cette solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      MsgBox "La dernière ligne non vide est la " & _
              FL1.Cells.SpecialCells(xlLastCell).Row

  9. #9
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    En faisant un petit tour dans les vieilles discussions non résolues, je suis tombé sur celle-ci.
    Je te propose cette solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      MsgBox "La dernière ligne non vide est la " & _
              FL1.Cells.SpecialCells(xlLastCell).Row
    Merci d'avoir déterré ceci c'est plus propre que la solution que j'avais trouvé, merci à toi.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    J'ai été confronté au même besoin pour une macro, kiki29 et ouskel'n'or m'ont conseillé d'utilisé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Split(Ws.UsedRange.Address, "$")(4)
    qui est valable même si des lignes sont supprimées dans la feuille.

    A tester des fois que

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

Discussions similaires

  1. Quelle est la dernière version de php ?
    Par cavo789 dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2014, 13h34
  2. Quelle est la dernière version compatible Java 1.5 ?
    Par verbose dans le forum Hibernate
    Réponses: 1
    Dernier message: 12/12/2012, 00h10
  3. quelle est la derniére version de visual c++
    Par raimo dans le forum Windows
    Réponses: 3
    Dernier message: 27/02/2010, 20h25
  4. Quelle est la dernière version de JDIC ?
    Par julien1311 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 18/07/2007, 16h44
  5. Réponses: 2
    Dernier message: 11/05/2005, 15h12

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