Pourriez-vous éclairer ma lanterne

anton1

XLDnaute Nouveau
Bonsoir le forum.

J'ai besoin de comprendre quelques petites choses. J'ai remarqué, à de nombreuses reprises, l'utilisation de termes totalement étrange à mes yeux et je n'y comprends rien pour l'utilisation futur de fichiers à adapter à mes souhaits. Je m'explique.

Ce code est issu d'un fichier appelé "QuestionnaireV02" (https://www.excel-downloads.com/threads/fonction-aleatoire.90807/. Serait-il possible d'avoir des commentaires ou des explications sur les termes en rouge. J'ai l'impression de passer à côté de quelque chose en ayant pas ces explications.

Je vous remercie d'avance pour votre aide.

Code:
Option Explicit
Option Compare Text
Public Colonne As Byte

Sub Stat1()
Dim Cell As Range
Dim Ligne As Integer, [COLOR="Red"]i[/COLOR] As Integer, [COLOR="Red"]N[/COLOR] As Integer, [COLOR="Red"]M[/COLOR] As Integer, [COLOR="Red"]j[/COLOR] As Integer
Dim Tableau()
Dim [COLOR="Red"]U[/COLOR] As Boolean
Dim [COLOR="Red"]Cible[/COLOR] As String
Dim Pourcent As Variant

Ligne = Sheets("Resultat").Range("A65536").End(xlUp).Row ' derniere ligne non vide
N = 1
ReDim Preserve Tableau(1, N)

For Each Cell In Sheets("Resultat").Range(Sheets("Resultat").Cells(2, Colonne).Address & _
                ":" & Sheets("Resultat").Cells(Ligne, Colonne).Address)

    U = False
    For i = 0 To N - 1
        If Cell = Tableau(0, i) Then
        U = True
        Tableau(1, i) = Tableau(1, i) + 1
        Exit For
        End If
    Next i
    
    If U = False Then
        Tableau(0, N - 1) = Cell
        Tableau(1, N - 1) = 1
        N = N + 1
        ReDim Preserve Tableau(1, N)

    End If

Next Cell

Cible = Sheets("Resultat").Range(Sheets("Resultat").Cells(1, Colonne).Address) _
        & [COLOR="Red"]Chr(10)[/COLOR] & "Sur un total de " & Ligne - 1 & " réponses " & [COLOR="Red"]Chr(10)[/COLOR] & [COLOR="Red"]Chr(10)[/COLOR]

For j = 0 To N - 2
Pourcent = Format((Tableau(1, j) / (Ligne - 1)), "0.00%")
Cible = Cible & Tableau(0, j) & " : " & Tableau(1, j) & " , soit : " & Pourcent & Chr(10)
Next j

MsgBox Cible, , "Resultat"

End Sub
 
Dernière édition:

soenda

XLDnaute Accro
Re : Pourriez-vous éclairer ma lanterne

Bonjour le fil, anton1

Une façon d'utiliser l'aide Excel, serait de sélectionner les termes VBA
qui te posent problème et d'appuyer sur la touche "F1".
Essaies avec les mots en gras ci-dessous (ça ne fonctionne pas avec les variables)

i, N, M et J sont des variables de type Integer
U est une variable de type Boolean
Cible est une variable de type String

la fonction Chr(10) renvoie un caractère de saut de ligne

A plus
 

anton1

XLDnaute Nouveau
Re : Pourriez-vous éclairer ma lanterne

Bonsoir Soenda,

Merci pour ta réponse. Je connais l'aide F1 en ayant auparavant sélectionné les termes VBA. Cependant, je ne trouve nulle part une explication sur ces fameuses lettres que l'on retrouve fréquemment.

C'est peut-être bête mais je suis quelque peu psychorigide :p et j'ai besoin de comprendre la signification de ces lettres pour pouvoir les utiliser ou tout du moins savoir à quoi elles servent dans les lignes de code.

Y aurait-il un glossaire quelque part ?
 

Excel-lent

XLDnaute Barbatruc
Re : Pourriez-vous éclairer ma lanterne

Bonsoir Anton1, le fil,

Soenda t'a expliqué ce que signifiait Chr(10)

Tu connais déjà la signification de :
Integer, Boolean et String

Donc si j'ai tout suivie il ne te reste plus qu'à comprendre :
i, N, M, j, U et Cible?


Mais voici quand même un petit mémo :

Au début de la macro
Code:
Dim Cell As Range
Dim Ligne As Integer, i As Integer, N As Integer, M As Integer, j As Integer
Dim Tableau()
Dim U As Boolean
Dim Cible As String
Dim Pourcent As Variant

On liste les variables qu'on va utiliser dans la macro et on dit à Excel ce qu'elles vont contenir!

Par exemple la variable U (Boolean) contiendra la valeur "True" ou "False"

Par exemple la variable i (Integer) contiendra un nombre entier compris entre -32.768 et 32.768

i, N, M, j, U et Cible tout comme Cell, Ligne, Pourcent sont tout simplement des variables (contiendra des données qui changeront au cours de l'exécution de la macro).

Le rôle de chaque variable dépend de ce qu'on en fait! Le nom importe peu, Excel s'en moque! Mais c'est vrai qu'appeler une variable NbDeLigne sera plus clair que l'appeller x!

Dans ta macro, la variable i, est utilisé pour la boucle (sert de compteur) :

Code:
[B][COLOR="DimGray"]For[/COLOR][/B] [COLOR="Magenta"]i[/COLOR] = 0 [COLOR="DimGray"][B]To[/B][/COLOR] N - 1
        If Cell = Tableau(0, i) Then
        U = True
        Tableau(1, [COLOR="Red"][B]i[/B][/COLOR]) = Tableau(1, [COLOR="Red"][B]i[/B][/COLOR]) + 1
        Exit For
        End If
[COLOR="DimGray"][B]Next[/B][/COLOR] [COLOR="Magenta"]i[/COLOR]

Là où cela se complique c'est que le créateur de la macro utilise la variable i également pour la taille de son tableau.

Il aurait tort de se gêner, les deux variables contiennent la même valeur!

Mais on aurait très bien pu créer deux variables distinct : une variable appelé CompteurBoucleUn et une variable appelé DimensionTableau. Le code VBA aurait été plus facile à comprendre mais plus long!!!! (donc temps d'exécution de la macro plus long)

Voici ce qu'aurai pu donner ta boucle avec deux variables distincts

Code:
'...
Dim [COLOR="Magenta"]CompteurBoucleUn[/COLOR] as Integer, [COLOR="DarkOliveGreen"]DimensionTableau[/COLOR] As Integer
'...
    For [COLOR="Magenta"]CompteurBoucleUn[/COLOR] = 0 To N - 1
        [COLOR="DarkOliveGreen"]DimensionTableau[/COLOR] = [COLOR="Magenta"]CompteurBoucleUn[/COLOR]
        If Cell = Tableau(0, [COLOR="DarkOliveGreen"]DimensionTableau[/COLOR]) Then
        U = True
        Tableau(1, [COLOR="DarkOliveGreen"]DimensionTableau[/COLOR]) = Tableau(1, [COLOR="DarkOliveGreen"]DimensionTableau[/COLOR]) + 1
        Exit For
        End If
    Next [COLOR="Magenta"]CompteurBoucleUn[/COLOR]

Pour les autres lettres : N, M, j, U et Cible c'est pareil

C'est plus clair? Explication assez détaillé?

A te lire
 
Dernière édition:

anton1

XLDnaute Nouveau
Re : Pourriez-vous éclairer ma lanterne

Bonjour Excel-Lent, bonjour le forum,

C'est parfait comme ça et merci pour les liens. Il ne me reste plus qu'à intégrer tout cela, à le digérer et à le recracher bien sûr pour mes futures macros.

Cet excellentissime soft qu'est excel recèle bien des secrets pour moi mais je ne désespère pas de découvrir tout ça grâce à votre aide précieuse.

Merci à vous
 

Discussions similaires

Réponses
11
Affichages
286

Statistiques des forums

Discussions
312 201
Messages
2 086 168
Membres
103 151
dernier inscrit
nassim