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 :

{VBA Excel] Récupere une ligne avec ces infos


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut {VBA Excel] Récupere une ligne avec ces infos
    Voila j'ai modifier une macro qui doit pouvoir compter et apres etablir un journal de bord qui inscrit des infos a chaque fois que je depasser 3000 tonnes

    et je voudrais recuper la derniere ligne du journal de bords et y faire apparaitre sur un message box

    voila ma macro

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub compter()
    
    Dim totlig As Long, poid As Double, i As Long
    With Sheets("Saisie") ' Travaille sur la feuille Saisie
    totlig = .Range("Q65536").End(xlUp).Row ' Recupere le nombre de ligne
    poid = 0# ' Initialise le poid calculé
    Sheets("Rapport").Range("A2:A65500").ClearContents
    Sheets("Rapport").Range("B2:C65500").ClearContents
    Sheets("Rapport").Range("C2:C65500").ClearContents
    For i = 5 To totlig ' Demarre la boucle à la igne 5, la 1,2,3,4 sont des titres
            If IsNumeric(Range("Q" & i).Value) Then
            poid = poid + (.Range("Q" & i).Value / 1000) ' additione la valeur poids ramenée en tonnes
            End If
    If poid >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3000 tonnes
    Sheets("Rapport").Range("A" & Sheets("Rapport").Range("A65536").End(xlUp).Row + 1) = poid & " Kg" & "  A la ligne " & i
    Sheets("Rapport").Range("B" & Sheets("Rapport").Range("B65536").End(xlUp).Row + 1) = Range("M" & i)
    Sheets("Rapport").Range("C" & Sheets("Rapport").Range("C65536").End(xlUp).Row + 1) = Range("J" & i)
    
    
    Sheets ("Rapport")
    DerniereLigne = Range(Cel).CurrentRegion.End(xlDown).Row
    MsgBox ("depassement a la ligne: DerniereLigne")
    
    .Range("Q" & i).Interior.ColorIndex = 3 ' je colorie en rouge la cellule
    poid = 0# ' remise à zero des calculs
    Else
    .Range("Q" & i).Interior.ColorIndex = xlNone ' sinon j'enleve la couleur
    End If
    Next i
    End With
    End Sub
    et mon probleme viens que je n'arrive pas a lire la derniere ligne et la faire apparaitre dans une message box


    Ps:j'ai pris la méthode de lire la derniere ligne de ouskel dans la partie contribution

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie ça
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub compter()
    Dim totlig As Long, poid As Double, i As Long
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
        Set FL1 = Worksheets("Saisie")
        Set FL2 = Worksheets("Rapport")
        With FL1 ' Travaille sur la feuille Saisie
            totlig = .Range("Q65536").End(xlUp).Row ' Recupere le nombre de ligne
            poid = 0# ' Initialise le poid calculé
            FL2.Range("A2:A65500").ClearContents
            FL2.Range("B2:C65500").ClearContents
            FL2.Range("C2:C65500").ClearContents
            For i = 5 To totlig ' Demarre la boucle à la igne 5, la 1,2,3,4 sont des titres
                If IsNumeric(Range("Q" & i).Value) Then
                    poid = poid + (.Range("Q" & i).Value / 1000) ' additione la valeur poids ramenée en tonnes
                End If
                If poid >= 3000 Then ' test avec la prochaine valeur si ca depasse les 3000 tonnes
                    FL2.Range("A" & FL2.Range("A65536").End(xlUp).Row + 1) = poid & " Kg" & "  A la ligne " & i
                    FL2.Range("B" & FL2.Range("B65536").End(xlUp).Row + 1) = Range("M" & i)
                    FL2.Range("C" & FL2.Range("C65536").End(xlUp).Row + 1) = Range("J" & i)
     
                    MsgBox "depassement à la ligne : " & FL2.Range(Cel).CurrentRegion.End(xlDown).Row
     
                    .Range("Q" & i).Interior.ColorIndex = 3 ' je colorie en rouge la cellule
                    poid = 0# ' remise à zero des calculs
                  Else
                    .Range("Q" & i).Interior.ColorIndex = xlNone ' sinon j'enleve la couleur
                End If
            Next i
        End With
    End Sub
    Si tu n'indentes pas ton code, tu vas au devant de grosses difficultés pour trouver tes erreurs
    A+

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Désolé pour l'indentation j'oublie a chaque fois

    desoler ouskel mais ton programme plante a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "depassement à la ligne : " & FL2.Range(Cel).CurrentRegion.End(xlDown).Row

    voici l'erreur qui apparait

    la methode'Range'de l'objet'_Worksheets' à échoué

  4. #4
    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
    Normal...

    cel n'est pas défini.
    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!

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "depassement à la ligne : " & FL2.Range("A").CurrentRegion.End(xlDown).Row
    ben j'ai essaye de definir Cell comme ceci ca ne marche pas
    il faut que je le definisse a part?mais comment?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour Cel, autant pour moi, je n'avais pas vu.
    Remplace "A" par "A1". Un range doit comporter au minimum deux indications, Colonne et ligne.
    A1 doit faire partie de la plage de cellule. Si ce n'est pas le cas, remplace le par l'adresse d'une cellule faisant partie de cette plage.
    A+

  7. #7
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Merci ouskel pour les infos
    je pensais qu'on pouvait juste informer la colonne ou juste la ligne

    mais ca ne marche pas dans le sens que ca m'indique pas la derniere ligne
    ca me les indiques toutes

    moi ce qui m'interresse c'est juste la derniere ligne

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu devrais faire un tour dans la FAQ ou ici, tu as toutes les indications pour retrouver une dernière ligne selon les circonstances. Lis bien tout

  9. #9
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerniereLigne = Range("A1").End(xlDown).Row
                    MsgBox "depassement:" & DerniereLigne
    voila le code que j'ai mis
    mais ca me fait apparaitre tous mes depassements

    et j'ai utilise toutes les forumles dans les liens que tu m'as données

    jai du mal a comprendre pourquoi ca ne marche pas
    si tu as des infos pour m'aiguiller

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu le mets dans ta condition et que tu as plusieurs dépassements, c'est normal !
    Ce que tu peux faire, c'est sortir du test "If poid >= 3000 Then" et tu ne l'auras qu'une fois. Je ne comprends pas ton pb.

  11. #11
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    merci
    tu avais raison
    mtn ca marche

    merci pour ton aide


    une derniere question

    comment je peut faire pour recupere ce qu'il y a d'ecrit dans ma derniere cellule?

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = Cells(Range("A1").End(xlDown).Row, NoColonne).value
    Et si ça résoud ton pb, n'oublie pas de mettre "Résolu"
    A+

  13. #13
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Result = Cells(Range("A1").End(xlDown).Row, 1).Value
                    MsgBox "depassement:" & Result
    J'ai marque ca et ca m'affiche dans la msgbox
    lignecontinue1


    j'ai tape ensuite ceci pour dire ou je devais allez prendre la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Result = Cells(FL2.Range("A1").End(xlDown).Row, 1).Value
                    MsgBox "depassement:" & Result
    et la rien ne s'affiche


    et en fesant ca je ne fais qu'apparaitre la 1er cellule et non la derniere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Sub message()
        Result = Sheets("Rapport").Cells(Range("A1").End(xlDown).Row, 1).Value
                    MsgBox "depassement:" & Result
        End Sub




    la je suis perdus

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    As-tu quelque chose dans tes cellules A1 ou A2 ?

  15. #15
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    dans ma feuille Saisie j'ai rien dans les cellules A1 à A5 ainsi que B1 à B5 ainsi de suite
    dans ma feuille Rapport j'ai mon journal de bord
    donc mes cellules de A depant de combien de fois j'ai compter 3 000 T

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors tu ne peux pas utiliser
    DerniereLigne = Range("A1").End(xlDown).Row
    Remplace cette ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DerniereLigne = Range("A65535").End(xlUp).Row
    et essaie de comprendre pourquoi

  17. #17
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Sub message()
     
        Sheets("Rapport").Select
        Result = Cells(Range("A1").End(xlDown).Row, 1).Value
                    MsgBox "depassement:" & Result
        End Sub

    voila j'ai trouver une solution

    maintenant il me reste plus qu'as faire apparaitre cette message box sur la feuille saisie

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

Discussions similaires

  1. Probleme en VBA Excel : supprimer une ligne doublante
    Par yanly dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2007, 13h54
  2. {VBA Excel} Simplifier une macro avec une copie
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/06/2007, 14h38
  3. [VBA-Excel] Garder une ligne de listview selectionné
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2006, 14h55
  4. [VBA Excel] ecrire le caractere " avec une macro
    Par oktopuces dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/09/2005, 22h56
  5. [VBA][Excel]Insérer une ligne
    Par loverdose dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2005, 16h27

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