Question signification d'une boucle VBA
Bonjour à tous,
j'ai le code suivant
Sub Consolider_Click()
Dim S_Commande As Worksheet
Dim Chemin As String
Dim Extension As String
Dim Nb As Integer
Set S_Commande = ThisWorkbook.Sheets("Commande")
Chemin = S_Commande.Cells(3, 2).Value
Extension = S_Commande.Cells(4, 2).Value
Nb = BoucleFichiers(Chemin, Extension)
MsgBox ("Nombre de lignes remplies : " & Nb)
End Sub
Function BoucleFichiers(Chemin As String, Extension As String) As Integer
Dim Fichier As String
BoucleFichiers = 0
'Boucle sur tous les fichiers 'Extension' du répertoire 'Chemin'
Fichier = Dir(Chemin & "*" & Extension)
Do While Len(Fichier) > 0
'écrit le résultat dans la fenêtre d'exécution (Ctrl+G).
BoucleFichiers = BoucleFichiers + ChargerFichier(Chemin & Fichier)
'MsgBox (Chemin & Fichier) '<-- A modifier
Fichier = Dir()
Loop
End FunctionLa fonction ChargerFichier n'est pas décrite mais ce n'est pas nécessaire, par rapport aux questions que j'ai à vous poser.
La fonction du code permet de parcourir l'ensemble des fichiers excel (Extension = xlsx) situés dans un dossier (Chemin = C:/...) et de récupérer des données dans chacun des fichiers excel.
Ma question porte sur la boucle Do While Loop dont je ne comprends pas le fonctionnement. La condition pour que la boucle "tourne" est que le fichier ait un poids > 0. Mais pour commencer je ne comprends pas comment la boucle passe d'un fichier à un autre, il n'y a pas d'incrémentation. Est-ce le Loop qui permet de faire ça ?
Ensuite, je ne comprends pas comment la boucle peut se terminer car dans mon répertoire où sont les fichiers excel, il n'y a pas de fichier dont le poids est = 0. Donc comment la boucle peut-elle se terminer ? Est-ce là aussi le Loop qui retient quels fichier il a parcouru, et qui ne parcourt jamais deux fois le même fichier ?
Je vous remercie pour vos réponse et vous souhaite une bonne journée !
SkillzZ
bonjour,
tu parles de poids mais la fonction len(fichier) te donne le nombre de caractères du contenu de la variablefichier. Donc la boucle tourne tant que la variable fichier contient quelque chose.
la fonction dir(masque) retourne le nom du premier fichier trouvé dont le nom correspond au masque. plus loin la fonctiondirsans paramètre donne le nom du fichier suivant, etc ... quand il n'y a plus de fichier, la fonction dir renvoie une chaine vide.
Parfaite réponse, merci beaucoup, tout s'explique ! Et j'apprécie la remarque vis à vis de Len, je n'étais pas persuadé de l'avoir comprise correctement
Merci h2so4 !