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 la dernière ligne avec nombre positif


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut Trouver la dernière ligne avec nombre positif
    * Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LastLine = Range("D65536").End(xlUp).Row
    Avec ca j'arrive à faire calculer la dernière ligne en colonne D.

    Mais moi ce que je veux c lui faire calculer un LastLinePositif,la dernière ligne pour laquelle j'ai un chiffre positif en colonne D qui est trier(de la ligne 20 à cette LastLinePositif j'ai des chiffres positif et après des negatifs).

    J'ai plusieurs onglets et donc j'en ai besoin pour la suite de ma macro.

    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Fais une boucle Do... Loop avec un While ou un Until qui teste ta condition et un offset vers le haut pour passer à la cellule suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do While Range("D" & CStr(LastLine)).Value < 0
        LastLine = LastLine - 1
    Loop
    (pas testé)

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut recherche valeur positive
    Bonjour,

    Dans le même esprit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub essai()
    Dim c As Range
    Set c = Range("A1")
    Do While c.Value > 0
            Set c = c.Offset(1, 0)
            ligne = c.Row - 1
    Loop
    Debug.Print ligne
    End Sub
    Testé

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut
    Merci zazaraignée de m'avoir lu (il ya un bug sur la première ligne je ne vois pas où est l'erreur)

    Merci MarcelG ta macro marche bien
    si je peux me permettre une dernière petite chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AP(ligne+1):APLastLine").Select
    ici j'ai ligne(la ligne que tu m'as aidé à calculer) et LastLine qui sont des variables dans ma boucle.

    Mais la syntaxe n'est pas bonne ça bug

    aurais-tu une idée ?

    Merci encore pour votre aide

    Par exemple si dans un onglet ligne=135 et Lastline=358 on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AP136:AP358").Select
    J'aimerai juste intégrer ces variables la dedans

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut concaténation
    Bonsoir Andréas,

    Tu fais une erreur de concaténation.

    L'une des syntaxes pour désigner un objet Range
    est par exemple

    Il te faut donc rétablir ta chaîne de yexte, en respectant bien les doubles-cotes (")

    Donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AP" & (ligne + 1) & ":AP" & LastLine).Select
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub ESSAI()
    ligne = 10
    LastLine = 20
    Range("AP" & (ligne + 1) & ":AP" & LastLine).Select
    End Sub
    Bien entendu, ligne et lastline sont à adapter à ton cas

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    En supposant que la cellule active est dans la colonne qui nous intéresse :
    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
    Function DerniereLignePositive(colonne As Integer) As Long
        Dim ligne As Long
        ligne = Feuil1.Rows.Count
        ligne = Range(Chr(colonne + 64) & CStr(ligne)).End(xlUp).Row
        Do While Range(Chr(colonne + 64) & CStr(ligne)).Value < 0
            ligne = ligne - 1
        Loop
        DerniereLignePositive = ligne
    End Function
     
    Sub SelectionnerDernierePositive()
        Dim ligne As Long
        ligne = DerniereLignePositive(ActiveCell.Column)
        Range(Chr(ActiveCell.Column + 64) & CStr(ligne)).Select
    End Sub
    Si tu souhaites sélectionner toute la ligne, Il faut ajouter un EntireRow avant le Select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range(Chr(ActiveCell.Column + 64) & CStr(ligne)).EntireRow.Select
    Code testé, cette fois-ci.

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

Discussions similaires

  1. Comment trouver la dernière ligne de mon tableau?
    Par thenico35 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/03/2009, 15h35
  2. trouver la dernière ligne
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/12/2008, 18h33
  3. [MySQL] sélection des dernières lignes avec affichage aléatoire
    Par nabmoah dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/08/2008, 00h57
  4. [VBA-E] Trouver la dernière ligne vide
    Par electrosat03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/01/2007, 21h11
  5. [VBA-E]comment trouver la dernière ligne contenan
    Par couscoussier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2006, 17h53

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