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 :

Correspondance entre Cellulles différentes


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 313
    Par défaut Correspondance entre Cellulles différentes
    Bonjour

    j'ai une petite problématique que j'essaye de résoudre.

    j'ai deux colonnes A et B.

    - sur la colonne B, je cherche le Maximum des valeurs que je met dans une cellule C1

    Je souhaite, récupérer la valeur de la cellule A qui correspond a la valeur de la Cellule B qui elle est le Maximum.

    Pour le maximum, j'utilise cette fonction :

    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
            Dim CellulesYb As Range
            Dim LaCelYb As Range
            Set CellulesYb = Range("C851: C1001")
     
            Set CellulesYb = ActiveSheet.Range("C851: C1001")
     
            Range("I2").Value = Application.WorksheetFunction.Max(CellulesYb)
     
     
            For Each LaCelYb In CellulesYb
                If (LaCelYb.Value = Range("H1").Value) Then
                    Range("I2").Value = LaCelYb.Column
     
                End If
            Next
    Avez une idée pour résoudre la problématique ?

    merci bcp à vous

    Bonne journée

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Pas facile de trouver le maximum de la colonne B dans une plage de la colonne C ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est un peu confus

    c'est pas plutôt l'adresse de la cellule en colonne A que tu cherches ? Parce que chercher une valeur en colonne A, en fonction de la valeur d'une autre cellule déjà connue, c'est juste inutile (autant lire la valeur de la cellule connue)


    Regarde du côté de la fonction Find de l'objet Range

    rechercher en colonne A la valeur de C1 et si la recherche abouti, retourner l'adresse

    grosso modo, à totalement adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Recherche()
    Dim Cell As Range
        With ActiveSheet
            Set Cell = .UsedRange.Columns(1).Find(.Cells(1, 3), , , xlWhole)
            If Not Cell Is Nothing Then MsgBox Cell.Address
        End With
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 313
    Par défaut Merci
    Non vous m’avez mal compris
    en fait quand je trouve le maximum dans la colonne B, je récupère la cellule qui lui correspond dans la colonne A.
    regardez la capture avec un petit explicatif.
    merciNom : Capture.PNG
Affichages : 161
Taille : 15,9 Ko

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    En se basant sur ta capture écran : données en colonne A et B qui commencent à la ligne 7, sans ligne vide ET sans données autres qui sont collées à cette plage


    par formule dans excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(A7:B20;EQUIV(MAX(B7:B20);B7:B20;0);1)

    utilisé dans une procédure VBA, on peut soit :

    - injecter la formule dans une cellule (A1 dans l'exemple)
    - injecter directement le résultat (A2 dans l'exemple)
    - afficher le résultat dans un message au lieu de l'écrire dans Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Formules()
    Dim Plage As Range: Set Plage = Range("A7").CurrentRegion
        ' écriture de la formule en A1
        With Plage
            Range("A1").Formula = "=INDEX(" & .Address & ",MATCH(MAX(" & .Columns(2).Address & ")," & .Columns(2).Address & ",0),1)"
        End With
     
        ' calcul interne et restitution du resultat dans un message ou écriture en A2
        With Application.WorksheetFunction
            Range("A2").Value = .Index(Plage, .Match(.Max(Plage.Columns(2)), Plage.Columns(2), 0), 1)
            MsgBox .Index(Plage, .Match(.Max(Plage.Columns(2)), Plage.Columns(2), 0), 1)
        End With
    End Sub

  6. #6
    Membre éclairé
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 313
    Par défaut Merci
    Super merci bcp, c'est ce qu'il me fallait, j'adapte le code a ma problématique.
    merci @ vous

+ Répondre à la discussion
Cette discussion est résolue.

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