Recommencer une boucle

isabelle29

XLDnaute Nouveau
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 .
Pour bien explique le code . Au début 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é ) .
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





Haut
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Bonjour
k n’étant jamais >9 on oublie tout sauf

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
et il semble bien qu'il manque un End Whit
 

mexitinoco

XLDnaute Nouveau
'With ActiveWorkbook.Sheets("Feuil1")
For a = 3 To 7
' If k > 9 Then

' .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

'Else
.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 With

'End If


' Application.WindowState = xlMinimized
' ActiveWorkbook.Close True


Next a
Next k

Je mettrais plutôt comme ça, (le with au début de la boucle for a)
 

vgendron

XLDnaute Barbatruc
Hello all
en purgeant les lignes qui ne servent à rien...et en utilisant l'indentation
ca donnerait quelque chose comme ca

VB:
Sub audit()
Dim k As Integer
Dim a As Integer
Dim nbreq As String
nbreq = Range("b1")

For k = 1 To 5
    Workbooks.Open Filename:="C:\Users\isabelle\Desktop\Dossier\TVA\0" & k & "-CLIENT.xlsx" 'ouvre le fichier 0k-client
    NomFileClient = ActiveWorkbook.Name

    Windows("fichier source.xlsm").Activate 'on rebascule sur le fichier source
    For a = 3 To 7
        With ActiveWorkbook.Sheets("Feuil1") 'dans la feuille 1
            .Cells(3, a).Value = WorksheetFunction.VLookup(.Range("b3").Value, Workbooks("01-CLIENT").Sheets("Résultats").Range("a1:ax400"), 2, False) 'la recherche ne se fait QUE dans le fichier 01-Client.. meme si on vient d'ouvrir le fichier 2 3 4 5....
           'peut remplacer la ligne précédente par la ligne suivante.??
            '.Cells(3, a).Value = WorksheetFunction.VLookup(.Range("b3").Value, Workbooks(NomFileClient).Sheets("Résultats").Range("a1:ax400"), 2, False) ' la recherche se fait dans le fichier client qui vient d'étre ouvert
        End With
    Next a
Next k
End Sub
 

isabelle29

XLDnaute Nouveau
Merci vgendrom , normalement ça marche quelque part mais après quand on arrive au niveau de la fonction With là la boucle tourne sur elle même .
c-à-d
for b pour ouvrir le fichier
for a pour sélectionner la bonne cellule
et le with pour la recherche v
avec le code ci-dessous il ouvre que le 1er fichier :



Sub audit()

d = Range("a2")
For q = 1 To d
Cells(1, 2 + q) = "tva" & q
Next q
For c = 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
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof