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