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
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
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
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
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..
c'est-il pas beau ça?
http://www.developpez.net/forums/sho...lignes+colonne
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 :
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
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)
Note : quand je mets, on pourrait aussi bien mettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part worksheets(Feuille).range(Debut).address & ":"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 "Debut:" &
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
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
Bonjour,
Juste une petite remarque, la fonction Max d'Excel ne marche pas ????
+
Théo
Re,
Petit complément pour la fonction Max dans VBA : regarder dans l'aide du côté de la propriété WorksheetFunction
+
Théo
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 ?
Sinon je pense que la solution de Théo à l'air bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DerniereLigne = Worksheets(NomFeuilleSource).Range("D1").End(xlDown).Row
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...)
Tu ne pourrais pas tout nous dire en une fois ou c'est pour faire durer le plaisir?Envoyé par VBBBA
N'oubliez pas de cliquer surquand 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!
rebonsoir
tu peux essayer cette macro , sans trier chaque colonne
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 Dim x As Byte Dim Nombre As Single Dim Ligne As Long For x = 1 To 3 'boucle pour récupérer les 3 valeurs les plus eleveées 'récupère la Xieme valeur la plus élevée dans la 2eme colonne Nombre = Application.WorksheetFunction.Large(Columns(2), x) 'recherche le numéro de ligne pour la valeur trouvée Ligne = Application.Match(Nombre, Columns(2), 0) 'récupère le contenu de la 1ere colonne pour la valeur cible MsgBox Cells(Ligne, 1) Next x
bonne soirée
michel
Partager