Fonction VBA sur plusieurs lignes

Bonjour,

J'utilise une fonction VBA pour la copie de fichier d'un dossier A vers un dossier B et ce sur plusieurs lignes.

J'ai une fonction opérationnelle mais malheureusement uniquement sur la première ligne. Je n'arrive pas à comprendre d'où vient l'erreur.

Merci pour votre aide.

Set sh = Sheets("test")
Set Fs = CreateObject("Scripting.FileSystemObject")
For i = 2 To sh.Range("B" & Rows.Count).End(xlUp).Row
    If UCase(sh.Range("D" & i).Value) = "OUI" Then
        If Fs.FileExists(sh.Range("E" & i)) Then Fs.movefile sh.Range("E" & i), sh.Range("F" & i) & "\" & Fs.GetFileName(sh.Range("E" & i))

Hello,

Tu as + de 2 lignes dans ta colonne B ?

tu as + de 2 lignes avec "OUI" dans ta colonne D ?

Tu as + de 2 fichiers qui existent ?

Merci pour votre réponse.

Je vous confirme que c'est bien le cas oui. Je vais essayer d'anonymiser les informations de mon fichier afin de pouvoir le partager s'il ne s'agit pas d'une erreur évidente.

Bonjour tout le monde, essaye ceci :

    Dim i As Long, sh As Worksheet, Fs As Object
    Dim nL As Long

    Set sh = Sheets("test")
    Set Fs = CreateObject("Scripting.FileSystemObject")
    nL = sh.Range("B" & Rows.Count).End(xlUp).Row

    For i = 2 To nL
        If UCase(sh.Range("D" & i).Value) = "OUI" Then
            If Fs.FileExists(sh.Range("E" & i)) Then Fs.MoveFile sh.Range("E" & i), sh.Range("F" & i) & "\" & Fs.GetFileName(sh.Range("E" & i))
        End If
    Next i

Je pense que ce truc n'est pas très orthodoxe, mieux vaut prendre une variable intermédiaire.

For i = 2 To sh.Range("B" & Rows.Count).End(xlUp).Row
Rechercher des sujets similaires à "fonction vba lignes"