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-Plus grande valeur d'une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut vba-Excel-Plus grande valeur d'une colonne
    bonjour a tous

    jai besoin daide sur un ptit bo

    je veux faire une fonction vba qui récupére la plus grande valeur d'une colonne particuliere( disons B)
    merci de votre aide

  2. #2
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    salut,

    ben je pense à ceci:

    -tu parcours chaque cellules de ta colonne. Tu enregistres la première valeur dans une variable,
    -puis ligne suivante, tu compares la valeur de la cellule avec ta variable, si c'est plus grand, tu enregistres cette valeur dans ta variable, sinon, tu passe à la cellule suivante.
    Au final tu auras dans ta variable la + grande valeur de ta colonne.

    Je sais que tu as tout ce qu'il faut pour y arriver dans les tuto et faq
    Xavier

  3. #3
    Membre régulier Avatar de biggione
    Inscrit en
    Juillet 2006
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    tu sais deja combien tu as de ligne maxi dans la colonne ou non?
    si tu le sais et que c'est 50 par exemple, tu peu faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim a as double
    a=0
    for i = 1 to 50
       if range("A" & i).value>a then     'par exemple tu veux tester la colonne A
          a = range("A" & i).value
       end if
    next i
    range("B1").value = a     ' tu écris le résultat de la recherche dans B1
    Location saisonnière dans le Lot:
    http://www.lot-holidays.com

  4. #4
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    il me semble bien que dans le forum il y a un post qui traite de ça, qui pemet de retrouver la fin. Attends, je jette un oeil, fais pareil..
    Xavier

  5. #5
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Xavier

  6. #6
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    lol ça doit faire le cinquième fois que je la mets cette ligne de code

    Pour avoir la taille d'une colonne particulière (attention il ne faut pas de cellule vide au milieu de la colonne) il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbligne=worksheets(Feuille).range(worksheets(Feuille).range(Debut).address & ":" & worksheets(Feuille).range(Debut).end(xldown).address).rows.count
    Feuille c'est le nom de ta feuille et Debut c'est le nom de la première cellule de ta colonne (n'oublie pas les guillemets quand même )

    Note : quand je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheets(Feuille).range(Debut).address & ":"
    , on pourrait aussi bien mettre Le seul intérêt c'est de pouvoir adapter si par exemple la première case de ta colonne est celle en dessous de Debut, alors tu mettras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbligne=worksheets(Feuille).range(worksheets(Feuille).range(Debut).offset(1,0).address & ":" & worksheets(Feuille).range(Debut).end(xldown).address).rows.count

  7. #7
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Le lien qu'a mis asdorve te permettra de connaître la dernière ligne d'une région mais pas forcément d'une colonne...

    Je m'explique, imaginons que tu veuilles le nb de lignes de la colonne A. Si ta colonne A contient 100 lignes et ta colonne B 200 et que tu te sert de currentregion sur le debut de ta colonne A tu vas te retrouver avec un résultat de 200 lignes (enfin je crois bien ) vu qu'il considère tt la région A:B

  8. #8
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Juste une petite remarque, la fonction Max d'Excel ne marche pas ????

    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  9. #9
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Re,

    Petit complément pour la fonction Max dans VBA : regarder dans l'aide du côté de la propriété WorksheetFunction

    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Alala,

    toujours aussi compliqué le comcombre !

    nbligne=worksheets(Feuille).range(worksheets(Feuille).range(Debut).address & ":" & worksheets(Feuille).range(Debut).end(xldown).address).rows.count



    c'est pas plus beau ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Worksheets(NomFeuilleSource).Range("D1").End(xlDown).Row
    Sinon je pense que la solution de Théo à l'air bien.

    on peut faire plus rapide que la copie dans une variable temporaire je pense...
    un sort et on recupere la valeur de la derneire ligne (je sais plus si ca trie de facon croissante ou non...)

  11. #11
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par Elstak
    Alala,

    toujours aussi compliqué le comcombre !






    c'est pas plus beau ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Worksheets(NomFeuilleSource).Range("D1").End(xlDown).Row
    Sinon je pense que la solution de Théo à l'air bien.

    on peut faire plus rapide que la copie dans une variable temporaire je pense...
    un sort et on recupere la valeur de la derneire ligne (je sais plus si ca trie de facon croissante ou non...)
    Je rappelle tout de même qu'il souhaite :
    Citation Envoyé par VBBBA
    récupére la plus grande valeur d'une colonne particuliere
    ... et non la dernière ligne définie dans la colonne (nuance)

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  12. #12
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    justement, on avait parlé de recherche de la dernière ligne si on utilise ma proposition, qui consistait à parcourir la colonne particulière, de faire une boucle de la ligne 1 à la ligne "DernièreLigne" et d'utiliser une variable + comparaison avec la valeurdu champs en cours.
    Xavier

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Et bien pour moi une colonne particuliere est connue (comme sa colonne B qu'il a dit en exemple) et donc on peut utiliser mon code en mettant "B1".

    Il n'a pas di une colonne variable, changeante....

    j'ai bien compris ta solution asdorve mais le "sort" d'excel est beaucoup plus rapide (ca crois moi !) et donc y'a jsute à lancer un sort et récuperer la valeur de sa colonne B qui est à la ligne derniere ligne un fois le Sort fait...


  14. #14
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    possible, je ne suis pas expert en vba-Excel... Je connais pas tout
    Xavier

  15. #15
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par Elstak
    Et bien pour moi une colonne particuliere est connue (comme sa colonne B qu'il a dit en exemple) et donc on peut utiliser mon code en mettant "B1".

    Il n'a pas di une colonne variable, changeante....

    j'ai bien compris ta solution asdorve mais le "sort" d'excel est beaucoup plus rapide (ca crois moi !) et donc y'a jsute à lancer un sort et récuperer la valeur de sa colonne B qui est à la ligne derniere ligne un fois le Sort fait...

    Personnellement, je pense que la fonction Max est la plus rapide (intrinsèquement codée) que la manipulation des données avec un sort ...

    ...

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  16. #16
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    quoi qu'il en soit, il y a ici 3 façons plus ou moins rapide de régler le problème. Il serait bien que l'auteur de ce post se manifeste...
    Xavier

  17. #17
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Juste une remarque pour mon ami elstak

    Mon bout de code est plus long mais il donne le nb de ligne d'une plage spécifique et pas le numéro de la dernière ligne de la plage!!!

    Réfléchis-y tu verras c'est très différent

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.WorksheetFunction.Large(Columns(2), 1)
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.WorksheetFunction.Subtotal(4, Columns(2))

    bonne soiree
    michel

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut
    vraiment merci pour toutes vos reponses


    ca ma aidé.
    maintenant je veux récupérer le numéro de la ligne qui contient le max dans une variable.
    c'est plus interessant je trouve.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 243
    Points : 86
    Points
    86
    Par défaut
    vu l'interet qu'a porté mon sujet je précise mon projet.
    jai deux classeurs.
    dans un premier jai plusieurs colonnes

    je veuxx en fait prendre chaque colonne la trier par ordre decroissant et prendre unqiuement les 3 plus grandes valeurs.
    ensuite je recopie ces valeurs avec le libélé de la colonne 1 correspondant dans un tableau de lautre classeur.
    simple et compliqué à la fois...

Discussions similaires

  1. VBA Colorer la plus grande valeur d'une liste
    Par Toad08 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/03/2008, 17h23
  2. isoler les 2 plus grandes valeurs d'une liste
    Par marlene.ln dans le forum Access
    Réponses: 3
    Dernier message: 29/01/2007, 10h22
  3. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 17h39
  4. [VBA-Excel] affecter la valeur infinie à une variable
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/09/2006, 21h37
  5. VBA-Excel copier la valeur d'une textbox dans une cellule
    Par GrandGarfield dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/08/2006, 10h15

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