Explications Sub
Bonjour à tous,
J'ai une procédure qui commence comme ceci:
Sub Tirage(equip As Integer) 'Nom de la procedure
Dim v As Integer
Dim equipe As Integer
Dim i As Integer
J'aimerais comprendre la différence entre cette déclaration et la suivante:
Sub Tirage() 'Nom de la procedure
Dim v As Integer
Dim equipe As Integer
Dim i As Integer
Quel est l'intérêt d'ajouter "(equip As Integer)" entre les parenthèses de la déclaration...?
Merci à tous.
Bon WeekEnd
Bonjour,
Quel est l'intérêt d'ajouter "(equip As Integer)" entre les parenthèses de la déclaration...?
Equip sans e ... ou ... equipe avec e .... comme dans le code ...?? ....
Bonjour,
En fait, il y a plusieurs types de procédure.
* Soit on écrit une procédure faite pour être exécutée directement, avec un Alt+F8 par exemple ou depuis un bouton sur une feuille. Dans ce cas on écrit par exemple : Sub Tirage()
* Soit on écrit une procédure qui sera éxécutée à partir d'une autre procédure en lui passant un 'argument', çàd une donnée utile à la procédure appelée. Dans ce cas l'argument sera inséré dans les parenthèses : Sub Tirage(equip As Integer), et on appelera cette procédure en ajoutant une valeur, par exemple : Call Tirage(2)
Dans cet exemple, à l'intérieur du code 'Tirage' la variable 'equip' sera utilisée pour faire un traitement particulier.
A noter : si la variable 'Equip' est passée en argument, on ne peut pas redéclarer une autre variable 'Equip', c'est pour cela que dans l'exemple indiqué, le codeur a déclaré Dim Equipe as integer, avec un e, pour la différencier de la variable 'equip', sans e, passée en argument.
(Ceci dit ce type de déclaration :'equip' et 'equipe' dans une même procédure n'est pas très habile, car ça peut entrainer facilement des confusions, James s'est fait prendre d'ailleurs.)
Pour illustrer l'intérêt de ce type de code, voici un exemple d'utilisation de passage d'argument.
A partir de la procédure 'Series' on va éxécuter plusieurs fois la procédure 'Import'
Sub Series()
Dim IdBank As Variant, i As Byte
IdBank = Array("001565183", "001565195", "001652121", "001710951", _
"001710954", "001710956", "001710974", "001710978", _
"001710979", "001710980", "001710986", "001711010")
For i = 0 To UBound(IdBank)
Import IdBank(i)
Next i
End Sub
Sub Import(Idbk As Variant)
Dim Site As String, Sht As Worksheet
Site = "https://bdm.insee.fr/series/sdmx/data/SERIES_BDM/" & Idbk
Application.DisplayAlerts = False
Set Sht = Sheets.Add(, ActiveSheet)
Sht.Name = Idbk
With Sheets(Idbk)
ThisWorkbook.XmlImport URL:=Site, ImportMap:=Nothing, Overwrite:=True, _
Destination:=.Range("A3")
End With
Application.DisplayAlerts = True
Set Sht = Nothing
End SubTu va me dire, yavéka insérer les lignes de 'Import' dans la boucle de 'Series' pour pas s'embêter!
Mais justement il est important de fractionner le code en plusieurs modules fonctionnels distincts, chacun éxécutant une tâche précise. En effet, le code sera plus lisible, donc plus facile à corriger par la suite. Et si la procédure est bien écrite, elle pourra être copiée/collée dans un autre projet, ce qui fera gagner du temps au codeur. C'est une des 'bonnes pratiques' en programmation.
Tout bon codeur possède sa propre bibliothèque de procédures et fonctions prête à servir (par exemple, j'ai même des procédures et fonctions qui me servent sous Excel ET sous Visual Studio via un simple copier/coller)
Pierre
@ pierre ...
(Ceci dit ce type de déclaration :'equip' et 'equipe' dans une même procédure n'est pas très habile, car ça peut entrainer facilement des confusions, James s'est fait prendre d'ailleurs.)
"Pas très habile" .... pour ne pas dire ... "excessivement dangereux" ...
Mais ...je tiens à te rassurer ... pas de confusion pour moi ...
Avant de plonger dans de longues explications ...
C'est uniquement pour en faire prendre conscience ... que j'ai souligné la trop grande similitude des deux variables ...
Bonjour pierrep56 et James007,
Pardon pour ces remerciements tardifs à vos réponses, mais j'étais pris par un problème de plantage d'UC difficile à résoudre, toujours en cours d'ailleurs, même si ça se produit de moins en moins et sur des périodes de travail beaucoup plus longues...
Merci pierrep56 pour ton explication précise que je vais m'empresser de mettre dans ma bibliothèque pour pouvoir y revenir à loisir...
Merci à toi également James007 pour ton interressement à ma question...
Bonne continuation à tous les deux!
A+