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

A la recherche de ... la bonne valeur!

  • Initiateur de la discussion Initiateur de la discussion diozea
  • 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

diozea

Guest
Bonjour,

Comment parcourir une colonne à la recherche d'une valeur? Cela parait simple, mais je me perds dans ma boucle

Voila mon besoin en français.
Function cherchedansunecolonne (mcol As Range, mval As String) As String
' Tant que trouvé = faux
' Si la valeur de la cellule de ma plage = la valeur de référence
' alors trouvé = vrai
' sortir
' Sinon passer à la cellule suivante, jusqu'a vide
End Function

Merci d'avance,
 
Re : A la recherche de ... la bonne valeur!

Bonjour,
tu le veux absolument en vba ?
parce que en formule ç s'écrit : =EQUIV(valeur cherchée;zone de recherche;vrai ou faux) faux si tu cherche la correspondance exacte.
la valeur renvoyée et le N° dans la liste.
Cordialement
 
Re : A la recherche de ... la bonne valeur!

Bonjour Diozea,

Peut-être comme ceci:

Code:
Public Function Cherchedansunecolonne(ByVal Mycol As Range, Ref As String) As Boolean

    Dim c As Range
    
    With Range(Mycol.Address)
        Set c = .Cells.Find(Ref, , xlValues, xlWhole)
    End With
    
    If Not c Is Nothing Then
    Cherchedansunecolonne = True
    Else
    Cherchedansunecolonne = False
    End If
    
End Function

EDIT: Bonjour Dugenou
 
Re : A la recherche de ... la bonne valeur!

Merci à vous 2 mais ...
en retournant le pb je pense procéder différemment,

J'ai un tableau d'intervalle:
ReseauIpmin; ReseauIpmax ; NomduSite
54612;35156; Amiens gare
1233;6542; Cergy silo

(Rq: J'ai transformé chaque IP en binaire pour simplifier les comparaisons.)

Par ailleurs, j'ai une IP (d'un PC) dans une cellule.
Je souhaite récupérer la valeur NomduSite en testant si monIP appartient à l'intervalle.

Avez-vous une idée (en vba svp).




r)
 
Re : A la recherche de ... la bonne valeur!

Re Diozea,

Un test en P.J

Par macro ou par fonction personnalisée.

La fonction personnalisée marche de cette façon:

=rechercheip(Plage_IP1;Plage_IP2;Plage_nomdomaine;Ref_IP)


J'espère que ça correspond à ce que tu cherchais
Bonne journée !
 

Pièces jointes

Re : A la recherche de ... la bonne valeur!

merci, quel retour rapide!

J'utilise la formule:
=rechercheIP('BB_SiteSFR et plage'!F2:F9;'BB_SiteSFR et plage'!G2:G9;'BB_SiteSFR et plage'!B2:B9;D2)
j'ai un message qui m'indique que les plages ne sont pas de la m^me longueur.

Je ne sais pas comment faire du pas à pas pour debugger.

As-tu une idée?
 
Re : A la recherche de ... la bonne valeur!

Re,

Je n'ai pas ce problème,

Ci-joint le code modifié pour les autres feuilles, et message lorsque l'IP n'est pas comprise dans une des plages possibles:

Code:
Public Function rechercheIP(ByRef Ip1 As Range, Ip2 As Range, Nomdomaine As Range, Ref_ip As Double) As Variant

    Dim i, h As Long
    Dim Plage1, Plage2, Plage3, c As Range
    Dim Nomfeuil1 As String
    
    Set Plage1 = Ip1
    Set Plage2 = Ip2
    Set Plage3 = Nomdomaine
    
    Dim tabl1(), tabl2(), tabl3()
    
    If Plage1.Count = Plage2.Count And Plage2.Count = Plage3.Count Then
    
    If Plage1.Columns.Count = 1 And Plage2.Columns.Count = 1 And Plage2.Columns.Count = 1 Then
    
    tabl1() = Plage1.Value
    tabl2() = Plage2.Value
    tabl3() = Plage3.Value
    
        For i = LBound(tabl1()) To UBound(tabl1())
    
            If Ref_ip <= tabl1(i, 1) And Ref_ip >= tabl2(i, 1) Then
            rechercheIP = tabl3(i, 1)
            Exit Function
            End If
        
            If Ref_ip >= tabl1(i, 1) And Ref_ip <= tabl2(i, 1) Then
            rechercheIP = tabl3(i, 1)
            Exit Function
            Else
            rechercheIP = "Hors-limite"
            Exit Function
            End If
        
        Next i
        
    Else
   
    End If
    End If
        
    rechercheIP = "Les plages de données ne sont pas de même longueur!"
        
    
End Function
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…