Explication d'une fonction

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

I

infogeo

Guest
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 ^^

Code:
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+
 
Re : Explication d'une fonction

Hello,


Visiblement ta fonction parcours un range et contrôle l'état de certain cellule. Suivant l'état elle effectue une incrémentation de 1. La valeur renvoyée par la fonction est le résultat de la variable incrémentée r divisée par le nombre max de cellule dans ton range. (Supposition sans avoir testé la macro étant donné qu'il n'y a pas de fichier joins.

Afin de bien comprendre comment un code fonctionne je te propose de le parcourir en pas à pas (touche F8 dans l'éditeur de code). Ensuite tu afficher la fenêtre des variables afin d'en étudier l'état. Avec ses deux outils tu pourra tout analyser et comprendre et également voir à quel endroit le résultat attendu n'est pas le bon.

Meilleures salutations
 
Re : Explication d'une fonction

Bonjour infogeo

La fonction compar compare deux mots (m1 et m2) et le resultat est le ratio entre le nombre de lettres identiques et a la même place dans chacun des mots et le nombre de lettres du plus grand des deux
Le k optionel a 0 permet la comparaison sans prendre en compte la casse
la casse est prise en compte lorsque le k est à 1
j'espere m'etre exprimé clairement

Edit: Salut Vorens
 
Re : Explication d'une fonction

Bonjour,

Le fait que ca soit application.volatile, veut dire que cette fonction peut etre utilisée n importe quand ?
Je dirais plutôt qu'elle est ré-évaluée à chaque recalcul de la feuille, même si aucun de ses paramètre ne change.
Ca me parait superflu dans ce cas (?). Sans, elle sera de toute façon ré-évaluée si un de ses antécédents change.
Me trompe-je ?
eric
 
Re : Explication d'une fonction

Re

Voici l'officiel :

Une fonction volatile doit être recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille de calcul. Une fonction non volatile n'est recalculée qu'en cas de changement des variables d'entrée

Eriiiic a donc parfaitement raison
 
- 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

Réponses
15
Affichages
782
Réponses
4
Affichages
732
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
293
Réponses
5
Affichages
909
Retour