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 :

Quelle méthode pour trouver l'adresse d'une partie entière [XL-2019]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut Quelle méthode pour trouver l'adresse d'une partie entière
    Bonjour,
    je souhaite trouver dans une colonne l'adresse de la cellule dont la partie entière contient la valeur rechercher.
    je m'explique:
    • la colonne A possède 100 valeurs décimales aléatoires.
    • je cherche une valeur dont la partie entière est 102


    pour exemple j'ai en A42 la valeur 34.26102
    j'ai en A89 la valeur 102.698

    ce que je souhaite trouver c'est bien la cellule "A89" et en récupérer l'adresse.
    or avec le code dont je me sert (avec Réponse=102):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            colonne_freq = 2 * i - 1
            DerLigne = Worksheets("Résultats_Log").Cells(66000, colonne_freq).End(xlUp).Row
            'trouve la position  recherchée  Worksheets("Résultats_Log").Select
            With Worksheets("Résultats_Log")
                Set maPlage = .Range(.Cells(4, colonne_freq), .Cells(DerLigne, colonne_freq)).Find(what:=Réponse, LookAt:=xlPart)
                If Not maPlage Is Nothing Then
                    FirstAddr = maPlage.Address
                End If
    FirstAddr me donne A42 et pas A89...
    je me trouve dans l'impasse.
    merci de votre lecture
    Stef

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 078
    Billets dans le blog
    2
    Par défaut
    Bonjour Stef,

    à tester

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    Function AdrEnt(Valo As Long, Plage As Range) As String
    Dim Tablo, i As Long, j As Long, Trouve As Boolean
        AdrEnt = ""
        Tablo = Plage.Value
        Trouve = False
        For i = LBound(Tablo, 1) To UBound(Tablo, 1)
            For j = LBound(Tablo, 2) To UBound(Tablo, 2)
                If IsNumeric(Tablo(i, j)) Then
                    If Int(Tablo(i, j)) = Valo Then 'Voir s'il faut utilise Fix plutôt que Int
                        AdrEnt = Plage.Range("A1").Offset(i - 1, j - 1).Address(0, 0)
                        Trouve = True
                    End If
                End If
                If Trouve Then Exit For
            Next j
            If Trouve Then Exit For
        Next i
        Erase Tablo
    End Function
     
     
    Sub Test()
        MsgBox AdrEnt(102, Range("A1:A100"))
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut
    Bonjour Tototiti,
    Merci, ça marche impeccable si la valeur est entrée en "dur" dans le code. mais si 102 (dans mon exemple) est une variable, j'ai l'erreur "type d'argument ByRef incompatible". je ne trouve pas d'aide en ligne.
    peux tu m'expliquer?
    merci

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 078
    Billets dans le blog
    2
    Par défaut
    Re,

    ByRef : l'argument passé en référence peut être modifié par la fonction
    ByVal : argument passé en valeur (en lecture seule en quelque sorte)

    essaie de changer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function AdrEnt(Valo As Long.....
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function AdrEnt(Byval Valo As Long....

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    sans boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim lig As Long, v As Long
        v = 102
        lig = Evaluate("MAX(((A1:A100)>=" & v & ")*((A1:A100)<" & v & "+1)*row(A1:A100))")
    0 si non trouvé
    eric

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 37
    Par défaut Merci
    Merci à tous les deux, c'est bien ce que je recherchais.
    Stef

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

Discussions similaires

  1. [11g] Quelle méthode pour calculer la taille d'une base ?
    Par zidane2012 dans le forum Administration
    Réponses: 4
    Dernier message: 11/03/2014, 12h06
  2. [MySQL] quelle méthode pour une newsletter
    Par sam01 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/02/2011, 18h20
  3. méthode pour trouver une balise cassée ?
    Par Merfolk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 23/09/2009, 12h00
  4. Réponses: 5
    Dernier message: 03/01/2008, 16h07
  5. Réponses: 7
    Dernier message: 04/04/2007, 13h37

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