Macro pour se placer directement sur la plande valeur d'une colonne

Wily

XLDnaute Junior
Bonjour à tous

Je recherche une macro qui me permette de me placer directement sur la plus grande valeur d'une colonne

Comme je n'y arrive pas, je sollicite une aide

Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Bonsoir à tous

Wily
Je n'arrive pas à ouvrir le fichier exemple que tu as joint à ta discussion ?
PS: Quelle colonne ? La 1 ou la 7 ?

EDITION: Testes cette façon de faire en lançant la macro avec un Max en colonne 1
Code:
Sub a()
gotomax 1
End Sub
Code:
Private Sub gotomax(x As Long)
Dim p As Range
Set p = Columns(x).Cells.Find(Application.Max(Columns(x)))
Application.Goto p, True
End Sub
 
Dernière édition:

Wily

XLDnaute Junior
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Bonjour

Voici un petit fichier exemple

Il peut s'agir de nombres ou de dates
Je pense que la macro sera la même

Les nombres peuvent être dans le désordre.

Cela peut être plusieurs colonnes
Mais je pense que si on me trouve une macro pour la colonne B
Je devrais capable de l'adapter pour la colonne D

Merci
A+
 

Pièces jointes

  • Plus Grande Valeur.xlsx
    9.5 KB · Affichages: 17

Wily

XLDnaute Junior
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Re,

J'ai mis ces 2 codes dans le mêmes module
J'ai fait l'essai sur la colonne A

Mais cela ne fonctionne pas
J'ai le message d'erreur suivant :

Erreur d'exécution '5':
Argument ou appel de procédure incorrect

C'est la ligne suivante qui pose problème
Application.Goto p, True

A+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Re

Wily
D'où l'importance du fichier exemple
Cela fonctionne sur des colonnes ne contenant pas des formules et avec un format Standard
(je viens de tester sur ta PJ, test OK en faisant les modifs indiquées ci-dessus)
Code:
Sub a()
gotomax 2
End Sub
Sub b()
gotomax 4
End Sub
Private Sub gotomax(x As Long)
Dim p As Range
Set p = Columns(x).Cells.Find(Application.Max(Columns(x)))
Application.Goto p, True
End Sub
La suite au prochain numéro
(je vais devoir passer par un autre code VBA ;) )
 

Staple1600

XLDnaute Barbatruc
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Re

Wily
Voici une version modifiée pour fonctionner avec dates et formules
(test Ok sur ton fichier exemple joint)
VB:
Sub a()
gotomax 2 'ok
End Sub
Sub b()
gotomax 4 'ok
End Sub
Private Sub gotomax(x As Long)
Dim p As Range, cMax As Range
Set p = Range(Cells(1, x), Cells(Rows.Count, x).End(3))
With p
    Set cMax = p.Cells(Application.Match(Application.Max(p), p, 0))
    If Not cMax Is Nothing Then
    Application.Goto cMax, True
    End If
End With
End Sub
 

Wily

XLDnaute Junior
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Bonsoir Stapple

Je viens de tester
Cela fonctionne dans toutes mes colonnes
que ce soit des formules ou des valeurs.

C'est parfait
Le seul petit problème, c'est que cela m’amène la colonne sélectionnée juste à gauche de l'écran
Je veux dire que si lance la macro sur la colonne 10
Je ne vois plus à l'écran les colonnes de 1 à 9
Est-il possible de contrecarrer ce problème ?

A+
 

Staple1600

XLDnaute Barbatruc
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Re

Wily
Ce n'est pas un problème, puisque tu avais demandé : Macro pour se placer directement sur
Donc c'est ce s'évertuait à faire la macro ;)

Si cela te gène alors, il suffit de faire ce changement sur cette ligne.
Application.Goto cMax
 

Wily

XLDnaute Junior
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Bonjour Staple

J'ai donc Application.Goto cMax à False
Et c'est oK

Merci encore

Comme j'ai plusieurs colonnes à trier
J'ai rajouter ce code
Code:
Sub Plus_Grande_Valeur()
Dim Colonne As Long
Colonne = Application.InputBox("Recherche dans quelle Colonne ?", , , , , , , 1)
gotomax Colonne
End Sub

Je ne comprends pas pourquoi je dois déclarer ma variable comme "Long" :confused:

Une dernière chose, au lieu de rentrer le N° de la colonne
Il aurait beaucoup plus simple (pour moi! :p) de rentrer la lettre de la colonne
Soit "B" au lieu de 2
Mais je suppose que ce n'est pas possible de le gérer dans ta fonction ?

A+
 

Staple1600

XLDnaute Barbatruc
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Bonjour à tous

Une dernière chose, au lieu de rentrer le N° de la colonne
Il aurait beaucoup plus simple (pour moi! :p) de rentrer la lettre de la colonne
Soit "B" au lieu de 2
Mais je suppose que ce n'est pas possible de le gérer dans ta fonction ?
A+
Si cela est possible, voir ci-dessous ;)
VB:
Sub Plus_Grande_Valeur()
Dim COLET$: COLET = InputBox("Lettre de la colonne?", "RECHERCHE DU MAX", "A")
gotomax Cells(1, COLET).Column
End Sub
Private Sub gotomax(x As Long)
Dim p As Range, cMax As Range
Set p = Range(Cells(1, x), Cells(Rows.Count, x).End(3))
With p
    Set cMax = p.Cells(Application.Match(Application.Max(p), p, 0))
    If Not cMax Is Nothing Then
    Application.Goto cMax
    End If
End With
End Sub
 

Wily

XLDnaute Junior
Re : Macro pour se placer directement sur la plande valeur d'une colonne

Bonsoir Staple

Je vois que la fonction ne change pas
C'est donc juste
Code:
Cells(1, COLET).Column
qui renvoie le n° de la colonne

Une chose à se rappeler !

Maintenant c'est plus pratique et offre moins de risque d'erreur !

Merci pour cette solution :)

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG