Recommencer une boucle

Bonjour à tous ,

J'ai crée deux boucle k et a mais le problème c'est que quand je veux recommencer à boucler à partir de k sa ne marche pas .

S'il vous plait est-ce que vous avez une solution ?

Ci-dessous le code que j'ai développé pour les 2 boucles a et k

Merci d'avance

Sub audit()

Dim k As Integer

Dim a As Integer

Dim nbreq As String

nbreq = Range("b1")

For k = 1 To 5

'If k > 9 Then

'Workbooks.Open Filename:="C:\Users\isabelle\Desktop\Dossier\TVA\" & k & "-CLIENT.xlsx"

'Else

Workbooks.Open Filename:="C:\Users\isabelle\Desktop\Dossier\TVA\0" & k & "-CLIENT.xlsx"

'End If

Windows("fichier source.xlsm").Activate

For a = 3 To 7

' If k > 9 Then

'With ActiveWorkbook.Sheets("Feuil1")

' .Cells(3, a).Value = WorksheetFunction.VLookup(.Range("b3").Value, _

' Workbooks(k & "-CLIENT").Sheets("Résultats").Range("a1:ax400"), 26, False)

' Cells(3, a).Select

'Selection.AutoFill Destination:=Range(Cells(3, a), Cells(96, a)), Type:=xlFillDefault

'End With

'Else

With ActiveWorkbook.Sheets("Feuil1")

.Cells(3, a).Value = WorksheetFunction.VLookup(.Range("b3").Value, _

Workbooks("01-CLIENT").Sheets("Résultats").Range("a1:ax400"), 2, False)

Cells(3, a).Select

'Selection.AutoFill Destination:=Range(Cells(3, 3), Cells(96, 3)), Type:=xlFillDefault

'End If

' Application.WindowState = xlMinimized

' ActiveWorkbook.Close True

Next a

Next k

End Sub

Bonjour,

difficile de comprendre ce que tu veux faire sur base de ce code uniquement.

voici malgré tout une piste.

Sub audit()
    Dim k As Integer
    Dim a As Integer, col as integer
    Dim nbreq As String
    Dim twb As Object, nwb As Object 'les classeurs
    nbreq = Range("b1")
    Set twb = ThisWorkbook 'le classeur qui contient la macro
    With twb.Sheets("Feuil1")
        For k = 1 To 5 'on ouvre les classeurs tva 1 à 5
            If k > 9 Then
                Set nwb = Workbooks.Open(Filename:="C:\Users\isabelle\Desktop\Dossier\TVA\" & k & "-CLIENT.xlsx")
            Else
                Set nwb = Workbooks.Open(Filename:="C:\Users\isabelle\Desktop\Dossier\TVA\0" & k & "-CLIENT.xlsx")
            End If
            'ici j'ai pas compris ce que tu veux faire
            For a = 3 To 7 '???? les colonnes 3 à 7 vont contenir la même chose, cad finalement les valeurs trouvées dans le classeur 05-client
            if k>9 then col=26 else col=2
                .Cells(3, a).Value = WorksheetFunction.VLookup(.Range("b3").Value, _
                                                               nwb.Sheets("Résultats").Range("a1:ax400"), col, False)
                .Cells(3, a).AutoFill Destination:=Range(.Cells(3, 3), .Cells(96, 3)), Type:=xlFillDefault
            Next a

            nwb.Close False 'on ferme le classeur TVA
        Next k
    End With
End Sub

Bonjour h2so4,

Merci de votre réponse .Alors pour simplifie les choses:

Moi j'ai fait un code au début où je commence avec la boucle a et je termine avec fonction with

for a

for b

with

End With

Next b

Next a

Le problème quand j‘exécute le code il recommence pas au début c-à-d for a .Mais à partir de la fonction with , normalement le travail est d'ouvrir n classeur a travers for a et sélectionner une cellule précise a travers la fonction b et à la fin appliquer une recherche v sur cette dernière (la cellule sélectionné ) .

J'espère que c'est clair

bonjour,

désolé c'est pas clair.

explique plutot ce que tu cherches à faire.

-Situation de départ, situation finale et règles à appliquer pour passer de l'une à l'autre. ceci avec des fichiers avec données de tests, si tu ne peux pas mettre tes données réelles.

Re bonjour

Merci de votre réponse .

Alors j’ai 4 fichiers : audit.xlsm , tva1.xlsx, tva2.xlsx , tva3.xlsx . Normalement ce que je veux faire c’est de remplir les cellules en vert du fichier audit avec les information qui se trouvent dans le fichier tva . Si les informations concernant le fichier tva numéro 1 automatiquement les cellules en rouge vont se remplir avec les données de la colonne B du fichier tva1 et Si les informations concernant le fichier tva numéro 2 automatiquement les cellules en jaune vont se remplir avec les données de la colonne B du fichier tva2 et en fin si les informations concernant le fichier tva numéro 3 automatiquement les cellules en bleu vont se remplir avec les données de la colonne B du fichier tva3.

Sub audit()

d = Range("a2")

For q = 1 To d

Cells(1, 2 + q) = "tva" & q

Next q

For b = 1 To d

Workbooks.Open Filename:="chemin de fichier tva" & b & ".xlsx" ' la y n fichier en fonction de range "A2"

Windows("audit").Activate ' on active le classeur audit pour inséré les données recherchés dans le classeur tva

For c = 1 To d

With ActiveWorkbook.Sheets("1")

.Cells(2, c + 2).Value = WorksheetFunction.VLookup(.Range("b2").Value, _

Workbooks("tva" & b).Sheets("Résultats").Range("a1:ax400"), 2, False)

Cells(2, 1).Select

End With

Application.WindowState = xlMinimized

ActiveWorkbook.Close True

Next

Next

End Sub

5tva1.xlsx (8.68 Ko)
5tva2.xlsx (8.42 Ko)
5tva3.xlsx (8.68 Ko)
6audit.xlsm (13.56 Ko)

bonsoir,

voici une proposition

Sub aargh()
Dim i&, j&, wb As Object, re As Range, wsi As Object
    With Sheets("1") 'feuil audit
        nf = .Range("A2") 'nombre de fichiers tva
        For i = 1 To nf 'on parcourt les fichiers tva
            Set wb = Workbooks.Open("d:\downloads\tva" & i & ".xlsx")
            Set wsi = wb.Sheets("résultats") 'feuil resultats du fichier tva
            For j = 2 To 6
                Set re = wsi.Range("A2:A10").Find(.Cells(j, "B"), lookat:=xlWhole) 'recherche de la rubrique
                If Not re Is Nothing Then 'si rubrique trouvée
                    .Cells(j, i + 2) = re.Offset(, 1) 'on copie le contenu de la colonne immédiatement à droite
                End If
            Next j
            wb.Close False 'on ferme le fichier tva
        Next i
    End With
End Sub
3audit.xlsm (16.17 Ko)
Rechercher des sujets similaires à "recommencer boucle"