Philippe-thuin
Messages postés27Date d'inscriptionsamedi 30 novembre 2013StatutMembreDernière intervention10 décembre 2013
-
Modifié par NHenry le 7/12/2013 à 18:58
Philippe-thuin
Messages postés27Date d'inscriptionsamedi 30 novembre 2013StatutMembreDernière intervention10 décembre 2013
-
10 déc. 2013 à 19:31
Bonjour,
j'ai une macro qui fonctionne bien avec uniquement "Do While....Loop".
Entre ce "Do" et ce "Loop" il faudrait que je mette des boucles "If" (ou autres) pour écrire dans différentes "Feuil" en fonction de la valeur d'une cellule "B13" appartenant à un "DossierFactures".
Mais dès que je met une deuxième boucle "If" j'ai un message d'erreur "boucle sans DO". Et là je suis perdu!!
(je joins la macro, ce sera peut-être plus clair).
SVP aidez-moi! Merci.
Sub Test1()
ChDir "M:\MARC\Facture-Gab\Fact-Synth\"
DossierFactures = Dir("M:\MARC\Facture-Gab\Fact-Synth\*.xlsx")
'Début boucle trim1
Dim j As Integer
j = 12
Do While Len(DossierFactures) > 0
'ouverture dossier facture
Workbooks.Open "M:\MARC\Facture-Gab\Fact-Synth\" & DossierFactures
If Range("B13") < 4 = True Then
'traitement data
Dim plage As Range, desti As Range, i As Integer
Set desti = Workbooks("Synth-Test.xlsm").Worksheets("Feuil1").Range("B" & j)
Set plage = Range("G6, H33,I34, J35")
For i = 1 To plage.Areas.Count
desti.Offset(0, i - 1).Value = plage.Areas(i).Value
Next
Workbooks("Synth-Test.xlsm").Worksheets("Feuil1").Range("A" & j) = DossierFactures
'fermeture classeur xlsx
Workbooks(DossierFactures).Saved = True
Workbooks(DossierFactures).Close
DossierFactures = Dir
j = j + 1
Else:
'boucle trim2
If Range("B13") < 7 = True Then
'traitement data
Set desti = Workbooks("Synth-Test.xlsm").Worksheets("Feuil2").Range("B" & j)
Set plage = Range("G6, H33,I34, J35")
For i = 1 To plage.Areas.Count
desti.Offset(0, i - 1).Value = plage.Areas(i).Value
Next
Workbooks("Synth-Test.xlsm").Worksheets("Feuil2").Range("A" & j) = DossierFactures
'fermeture classeur xlsx
Workbooks(DossierFactures).Saved = True
Workbooks(DossierFactures).Close
DossierFactures = Dir
j = j + 1
Else: End If
Loop
Columns("A:A").Replace ".xlsx", ""
End Sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 9 déc. 2013 à 17:43
Ca se corse, là ...
Alors :
ajoute ceci :
msgbox lafeuille
juste avant la ligne disant derlig ...
Lance et nore sur une feuille de papier les noms, très exactement, qui vont défiler et dis-les-moi ensuite tous, surtout le dernier avant blocage.
Philippe-thuin
Messages postés27Date d'inscriptionsamedi 30 novembre 2013StatutMembreDernière intervention10 décembre 2013 9 déc. 2013 à 19:22
ok, je vais faire ça.
Mais là, je suis obligé de quitter, j'ai des invités ce soir et c'est moi le cuisinier...!
Je te dis le résultat du test demain.
Bonsoir et vraiment merci
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 10 déc. 2013 à 17:11
Au poil. Content pour toi
Si tu veux vraiment me remercier, satisfais ma curiosité.
1) C'était bien cela ? 12 classeurs mois à mettre sur 4 feuilles trimestres d'un classeur de synthèses ?
2) et du coup :; ce seul code a tout fait d'un seul coup ?
Philippe-thuin
Messages postés27Date d'inscriptionsamedi 30 novembre 2013StatutMembreDernière intervention10 décembre 2013 10 déc. 2013 à 19:31
1) ce n'est pas 12 classeurs, à terme c'est une centaine par trimestre!
L'ensemble, environ 400/500 classeurs à répartir par trimestre.
2) et ton code a l'air de tout faire d'un coup!!!! c'est génial...
(même si j'ai compris ton raisonnement, je n'aurais pas pu l'écrire).
Par contre, tout n'est pas fini!