(VBA) Trouver le plus grand nombre d'une colonne

Lptht

XLDnaute Nouveau
Bonjour le forum,

Je m'adresse à vous pour résoudre un nouveau problème.

Vous trouverez le fichier "Nombre le plus grand.xlsm" en pièce jointe pour plus de clarté.

Je cherche donc à afficher les informations du tableau correspondante au chiffre le plus grand de la colonne A, seulement pour les "cas = 1" (colonne C).

En plus de trouver le nombre le plus grand, je ne sais pas vraiment par quelle condition commencer. Je m'emmêle les pinceaux.

Merci d'avance à ceux qui prendront le temps de m'aider.
 

Pièces jointes

  • Nombre le plus grand.xlsm
    16.5 KB · Affichages: 104
Dernière édition:

job75

XLDnaute Barbatruc
Re : Trouver le plus grand nombre d'une colonne

Bonjour Lpht,

Appliquer un filtre avancé :

- entrer en D2 la formule =(B2=1)*(A2=MAX(A$2:A$7))

- onglet Données => Filtrer Avancé => Plages : $A$2:$C$7 => Zone de critères : $D1:$D$2

Si on veut une macro utiliser l'enregistreur...

A+
 

job75

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Re,

Je salue Renaud75015, j'avais omis de le faire, je m'en excuse.

Et j'avais bien mal compris la question, contrairement à lui.

Définir d'abord le nom maxi par la formule :

Code:
=MAX((Feuil1!$B$2:$B$1000=1)*(Feuil1!$A$2:$A$1000))
Ensuite pour appliquer le filtre avancé entrez en D2 la formule :

Code:
=A2=maxi
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Re,

Une solution VBA avec un UserForm comportant une ListBox.

Les macros dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Calculate()
MAJUSF
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
MAJUSF
End Sub

Sub OuvreUSF()
MAJUSF
UserForm1.Show 0 'non modal
End Sub

Sub MAJUSF()
Dim vref, t, i&, maxi, n&
vref = 1 'référence, modifiable
t = [A1].CurrentRegion
'---détermination du maximum---
For i = 1 To UBound(t)
  If t(i, 2) = vref And t(i, 1) > maxi Then maxi = t(i, 1)
Next
'---remplissage de la Listbox---
With UserForm1.ListBox1
  .Clear
  For i = 1 To UBound(t)
    If i = 1 Or t(i, 2) = vref And t(i, 1) = maxi Then
      .AddItem t(i, 1)
      .List(n, 1) = t(i, 2)
      .List(n, 2) = t(i, 3)
      n = n + 1
    End If
  Next
End With
End Sub
Il peut y avoir plusieurs lignes affichées dans la ListBox.

Nota : le mode de calcul est en automatique.

Fichier joint.

A+
 

Pièces jointes

  • le Nombre le plus grand(1).xlsm
    20.2 KB · Affichages: 98

job75

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Bonjour le fil, le forum,

Dans ce fichier (2) :

- le nom Tableau défini le tableau dynamiquement

- la cellule F1 contient une liste de validation pour choisir le Cas

Code:
vref = [F1] 'référence modifiable
t = [Tableau] 'nom défini
Bonne journée et A+
 

Pièces jointes

  • le Nombre le plus grand(2).xlsm
    23 KB · Affichages: 104

Lptht

XLDnaute Nouveau
Re : (VBA) Trouver le plus grand nombre d'une colonne

Merci beaucoup Job75!

Votre fichier correspond parfaitement à mes attentes.

Par contre, j'ai quelques questions:
- Quel est l'intérêt de placer le code dans une feuille plutôt que dans un module?
- Si j'ai bien compris, "Ubound(t)" sert à trouver le nombre de ligne du tableau dynamique?
- Définit-on un tableau dynamique de la même manière dans un module et dans une feuille (à savoir : "t =[Tableau]")?
- A quoi servent les lignes suivantes? Et sont-elles indispensables?

Private Sub Worksheet_Calculate()
MAJUSF
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
MAJUSF
End Sub

Bonne soirée
 

job75

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Bonsoir Lptht,

C'est bien, vous voulez progresser, mes réponses sont en rouge :

- Quel est l'intérêt de placer le code dans une feuille plutôt que dans un module?
Parce qu'il y a des macros événementielles qui concernent la feuille
- Si j'ai bien compris, "Ubound(t)" sert à trouver le nombre de ligne du tableau dynamique?
Oui, plutôt de t, t étant une matrice construite sur ce tableau
- Définit-on un tableau dynamique de la même manière dans un module et dans une feuille (à savoir : "t =[Tableau]")?
Oui, [Tableau] est une plage nommée dans n'importe quelle feuille, t est défini dans VBA
- A quoi servent les lignes suivantes? Et sont-elles indispensables?
Elles servent à exécuter la macro MAJUSF, elles sont indispensables quand l'USF est ouvert

Bonne fin de soirée et A+
 

job75

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Re,

Je précise quand même une chose sur les 2 macros événementielles :

- quand il y a des formules volatiles (colonne A) seule Worksheet_Calculate est indispensable

- quand il n'y en a pas, seule Worksheet_Change est indispensable.

J'ai mis les deux, au cas où, ça ne mange pas de pain.

A+
 

Modeste geedee

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Bonsour®
une solution sans macro et sans plage intermediaire

formule à placer n'importe ou , mais à valider par Maj+Ctrl+Entrée

Code:
=MAX($A$2:$A$7*($B$2:$B$7=1))

Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    38.9 KB · Affichages: 105
  • Capture.JPG
    Capture.JPG
    38.9 KB · Affichages: 104

job75

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Bonjour Modeste geedee,

Oui, c'est la formule que j'utilise au post #5.

Sauf que je l'utilise dans un nom défini pour filtrer le tableau.

Et bien sûr dans un nom défini la validation matricielle n'est pas nécessaire.

Bonne journée
 

Modeste geedee

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Bonsour®
Oui, c'est la formule que j'utilise au post #5.

Sauf que je l'utilise dans un nom défini pour filtrer le tableau.

Et bien sûr dans un nom défini la validation matricielle n'est pas nécessaire.

Bonne journée
:rolleyes:
Oui, mais je n'utilise qu'une seule fois la matricielle.

Sauf que je n'utilise pas de colonne intermédiaire.

Et bien sûr la matricielle donne directement la valeur du résultat.
:rolleyes:
Abondance de biens ne nuit pas ;)
lptht aura donc plusieurs choix ...
:cool:
 

Modeste geedee

XLDnaute Barbatruc
Re : (VBA) Trouver le plus grand nombre d'une colonne

Bonsour®

heu ????
Lien supprimé

ce que fait la MEFC qui avait précédé la matricielle :rolleyes:

MEFC :
=ET($A2=MAX($A$2:$A$200*($B$2:$B$200=1));$B2=1)
format : remplissage couleur vert
s'applique à : $A2:$C200

:cool:
 
Dernière édition:

Discussions similaires

Réponses
13
Affichages
264
Réponses
7
Affichages
346

Statistiques des forums

Discussions
312 525
Messages
2 089 329
Membres
104 121
dernier inscrit
bobquad01