Explication d'une fonction

Résolu
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013 - 10 juil. 2012 à 10:29
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 10 juil. 2012 à 18:26
Salut!

Je suis amené à reprendre des macros effectuées par une autre personne et à les améliorer en gros car il y a des bugs, mais il y a une fonction que je comprend pas trop et ca serait sympa si vous pourriez m'éclairer ^^

Public Function compar(m1 As String, m2 As String, Optional k As Integer = 0) As Double

    Dim i As Integer
    Dim j As Integer
    Dim r As Integer
    
    Application.Volatile
    
    j Len(m1): r 0
    If Len(m2) > j Then j = Len(m2)
    
    For i = 1 To j
        If k = 1 Then
            If Mid(m1, i, 1) Mid(m2, i, 1) Then r r + 1
        Else
            If LCase(Mid(m1, i, 1)) LCase(Mid(m2, i, 1)) Then r r + 1
        End If
    Next i
    
    compar = r / j
End Function



je suis pas tres bon en VBA donc c'est pour ca que je fais appel à vous =)

J'espere que vous pourrez m'aider

a+

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2012 à 11:04
cette fonction retourne donc très manifestement la fraction représentant le nombre de lettres de m1 se retrouvant au même rang dans m2, par rapport au nombre de lettres de m2.
Si k 1 : les lettres doivent être rigoureusement identiques ("A" <> "a") pour être comptées. Dans le cas contraire : peu importe la casse ( "A" "a")


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2012 à 16:06
J'observe par ailleurs la présence de :
Application.Volatile

qui donne à penser que :
1) cette fonction est dans un module .bas
2) qu'elle est utilisée comme formule sur une feuille de calcul
Le 2) m'étonne (à moins que m1 et m2 soient le contenu de cellules). La qualité du k optionnel est elle aussi étonnante, pour une formule. Mais bon ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2012 à 10:38
Bonjour,
Je ne vois là que trois fonctions (Len, Mid et LCase) qui pourraient poser problème de compréhension.
Il se trouve que toutes les trois, sans exception aucune) sont parfaitement exposées et assorties d'exemples très clairs dans ton aide VBA !
Laquelle des trois reste donc incomprise de toi après lecture de cette aide VBA ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
10 juil. 2012 à 15:44
Merci pour cette réponse rapide =)

maintenant que je sais ce qu elle fait il va falloir que je comprenne le pourquoi ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2012 à 16:01
maintenant que je sais ce qu elle fait il va falloir que je comprenne le pourquoi

Cela restera ta seule affaire, en fonction de la finalité (dont j'espère que tu la connais) de l'appli qui utilise cette fonction.
Si ta question est maintenant résolue : ===>> un clic sur le tag "réponse acceptée" pour libérer ce sujet s'impose donc.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
10 juil. 2012 à 16:05
[^^clinoeil1]
0
InfoGeo Messages postés 87 Date d'inscription jeudi 2 février 2012 Statut Membre Dernière intervention 17 avril 2013
10 juil. 2012 à 17:49
je trouve personnellement qu il est plus difficile de reprendre un travail qui a deja été fait surtout s il a pas de commentaire, que de faire un programme avec un cahier des charges ^^

Donc bon je vais essayé de comprendre ce qu il a fait merci pour la précision sur le "volatile"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2012 à 17:53
parcours donc les cellules de ta feuille (une par une, manuellement). Dans l'une d'entre elles (ou plusieurs d'entre elles) tu devrais trouver une formule contenant le mot compar (ta fonction).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 juil. 2012 à 18:26
Ou va sur une feuille et :
Mets en A1 : toto
Mets en B1 : titi
Mets en C1 la formule : = compar(A1;B1;1)
exécute ===>> tu auras 0,5 en C1


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous