Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche code VBA

  • Initiateur de la discussion Initiateur de la discussion desvin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

desvin

Guest
Bonjour,

J'ai commencé VBA il y a 3 mois et je me heurte depuis quelques jours à un problème. C'est surement simple mais rien à faire je n'arrive pas à trouver le bon code pour effectuer ce que je veux.
Mon cas :
J'ai deux colonnes de chiffres, je veux rechercher le maximum de la 2eme colonne. Lorsqu'il est trouvé, je veux copier la valeur de la 1ere colonne se trouvant 3 lignes au dessus de ce max, et la coller plus loin.
Le fichier joint donne un exemple.
Merci d'avance,

Kevin

 

Pièces jointes

  • VBA.PNG
    10.4 KB · Affichages: 205
  • VBA.PNG
    10.4 KB · Affichages: 205
Re : Recherche code VBA

Bonjour,

En VBA :
Code:
Sub Recup()

    Dim Plage As Range
    Dim Cel As Range
    Dim Max As Double
    
    'plage de recherche à adapter
    Set Plage = Range("B1:B20")
    
    'récup de la valeur maxi
    Max = Application.WorksheetFunction.Large(Plage, 1)
    
    'recherche de cette valeur
    Set Cel = Plage.Find(Max, , xlValues, xlWhole)
    
    'colle la valeur de la cellule située 2 lignes au
    'dessus et une colonne à gauche dans la cellule D1, à adapter
    Range("D1") = Cel.Offset(-2, -1)

End Sub

Hervé.
 
Re : Recherche code VBA

Bonjour Desvin, bonjour le forum,

Essaie comme ça (VBA) :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
 
With Sheets("Feuil1") 'prend en compte l'oglet "Feuil1" (à adapter à ton cas)
    Set pl = .Range("E7:E" & .Cells(Application.Rows.Count, 5).End(xlUp).Row) 'définit la plage pl (à adapter à ton cas)
    Set r = pl.Find(Application.WorksheetFunction.Max(pl), , xlValues, xlWhole) 'définit la recherche (rechercne la valeur max dans la plage pl)
    .Range("G9").Value = r.Offset(-2, -1) 'plage en G9 (à adapter à ton cas) la valeur décalée
End With 'fin de la pris een compte de l'onglet "Feuil1"
End Sub

ou par formule en G8 (par exemple) :
Code:
=INDEX($D$7:$E$17;EQUIV(MAX($E$7:$E$17);$E$7:$E$17)-2;1)

[Édition]
Bonjour Tototiti, Theze, on s'est croisé
 
Re : Recherche code VBA

Je viens d'essayer le programme de Robert et j'ai l'erreur sur la ligne suivante (où j'ai remplacé le range) qui apparait:
> Set pl = .Range("F1550:F1613" & .Cells(Application.Rows.Count, 5).End(xlUp).Row)

L'erreur stipule : 1004, erreur définie par l'application ou par l'objet
 
Re : Recherche code VBA

Merci cela fonctionne (je croyais que c'était une erreur à l'origine de Robert, l'absence de numéro..)
Malheureusement 2 lignes plus bas, c'est reparti :
> .Range("H1550").Value = r.Offset(-22, -2)

Cette fois l'erreur dit: Variable objet ou de bloc With non définie

Je ne vois vraiment pas ce qui n'est pas définie dans cette ligne...
Bref, je m'excuse par avance de mes faibles notions VBA
 
Re : Recherche code VBA

J'ai mis un stop à cette ligne, le programme s'arrête donc à :
> Set r = pl.Find(Application.WorksheetFunction.Max(pl), , xlValues, xlWhole)

Et quand je vais sur r pour savoir ce qu'il vaut, "r=Nothing" apparait ='(
 
Re : Recherche code VBA

Re,

J'ai mis un stop à cette ligne, le programme s'arrête donc à :
> Set r = pl.Find(Application.WorksheetFunction.Max(pl), , xlValues, xlWhole)

Et quand je vais sur r pour savoir ce qu'il vaut, "r=Nothing" apparait ='(

r vaut Nothing avant que la ligne soit exécutée ou après ?
Avant, c'est normal...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
625
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…