Fusion de deux fonctions

Bonjour,

Oui, j'active bien les macro. La preuve, c'est que "Erreur Find" s'affiche bien dans la cellule.

En fait, la macro est exécutée correctement. C'est juste qu'excel est incapable de fournir le bon résultat.

Set c = tabl_recherche.Find(val_recherchee, LookIn:=xlValues, lookat:=xlWhole)
    If c Is Nothing Then
        rechercheP = "Erreur Find"

C'est la fonction Find qui ne marche pas.

Est-ce que la fonction find est la même chose que EQUIV ?

La version d'excel que j'utilise est : 14.4.2 Excel pour Mac 2011

J'ai redémarré mon MacBook Pro. Cela faisait 280 jours que je ne l'avais pas fait.

Rien n'a changé. Le fichier excel fourni affiche toujours une erreur (je l'ai re-téléchargé depuis le site).

Je vais donc ouvrir un autre sujet, puisqu'on s'éloigne de l'objet de ce post. Je vais marquer comme résolu le message qui indique comment fusionner deux fonctions.

Find = rechercher, retourne le range de la cellule correspondante, ou nothing si non trouvé.

Ce qui est bizarre c'est que ça fonctionne chez moi (windows), et que ça a fonctionné chez toi.

eric

En fait, j'ai cru que ça a fonctionné, parce que quand j'ouvre un de tes fichiers, il affiche la bonne valeur. Excel enregistre probablement les derniers résultats avec le fichier, et ne recalcule rien à l'ouverture.

Mais des que je change une valeur, des qu'il est obligé de recalculer quoi que ce soit, c'est perdu.

Bonjour,

Etrange. Il y a des incompatibilité Mac/Windows en vba mais ici il n'y a rien de spécial...

On va essayer autrement :

Function rechercheP(val_recherchee As Variant, tabl_recherche As Range, matrice_donnees As Range, Optional col_donnees As Long = 1) As Variant
    Dim c As Range, lig As Long
    If IsError(Application.Match(val_recherchee, tabl_recherche, 0)) Then
        rechercheP = "Erreur Find"
    Else
        rechercheP = matrice_donnees.Cells(Application.Match(val_recherchee, tabl_recherche, 0), col_donnees)
    End If
End Function

Je t'ai mis le dernier paramètre en optionnel, = 1 si omis.

eric

Merci Eriiic.

Pour le moment, j'utilise cette fonction, construite à partir des exemples que tu m'as donnés.

Public Function rechercheP(val As Variant, source As Range, data As Range, col_offset As Integer, default_val As Variant) As Variant
    Dim cell As Range
    rechercheP = default_val
    For Each cell In source
        If cell = val Then
            rechercheP = data.Offset(cell.Row - source.Row, col_offset)
            Exit For
        End If
    Next
End Function

Par contre, multiplié par 1500 cellules dans lesquelles elle se trouve…. et par les 260 cellules dans lesquelles je recherche des valeurs… C'est extrêmement lent (10 secondes).

Par contre, multiplié par 1500 cellules dans lesquelles elle se trouve…. et par les 260 cellules dans lesquelles je recherche des valeurs… C'est extrêmement lent

Tu m'étonnes...

Salut le Forum

«Find» ne fonctionne pas, dans une fonction personnalisée(UDF),

appelé à partir d'une cellule sous Mac2011.

De même, vous ne pouvez pas utiliser «FindNext»

dans une UDF sous les versions d'Excel (pas testé en 2013).

Mytå

Et bien on en apprend tous les jours

Merci myta.

Nizo, tu peux tester la dernière fonction qui ne l'utilise pas. D'ailleurs pourquoi ne pas l'avoir fait au lieu de te plaindre que la tienne est trop lente ?

eric

Si, si, je suis en train de la tester. Mais il faut que je l'adapte un peu, pour qu'elle remplace celle que j'ai affichée… et je galère un peu. Mais je vais y arriver. Et je posterai ensuite.

Bonne nuit !

Rechercher des sujets similaires à "fusion deux fonctions"