For sans next

waramer
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Statut
Membre
Dernière intervention
19 juillet 2018
- Modifié le 19 juil. 2018 à 11:52
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
- 20 juil. 2018 à 10:40
Bonjour, amis développeurs.

Je rencontre aujourd'hui un problème dans mon code.

En effet, une erreur survient quand je lance ma maccro : "For sans next"

Quelqu'un pourrait-il m'éclairer ?

Sub kkdu74()

Dim wkb As Workbook

Dim CopCounter As Integer
CopCounter = 12
Dim kkCounter As Integer
kkCounter = 28


    For CopCounter = 1 To 12
    mensu = ThisWorkbook.Sheets(3).Range("F" & CopCounter).Value
    mensu_wk = Workbooks.Open("F:\Partages\Commun_DRH\Taux de recouvrement\Année 2018\" & mensu)
    
    For kkCounter = 1 To 28
    pole = ThisWorkbook.Sheets(3).Range("G" & kkCounter).Value

    DirFile = ("F:\Partages\Commun_DRH\Taux de recouvrement\Evolution\2018\" & pole)
    If Dir(DirFile) = "" Then
    Set wkb = Workbooks.Add
    ActiveWorkbook.SaveAs Filename = pole & ".xls"
    With Range("A1:C28") 'Début de l'instruction avec : WITH
            ActiveSheet.Select
    Selection.PasteSpecial Paste = xlPasteValues, Operation = xlNone, SkipBlanks _
        = False, Transpose = False
         .Borders.Value = 1
         .Interior.Color = RGB(174, 240, 194)
         With .Font
             .Size = 12
             .name = "Arial"
             .Bold = False
         End With
     End With
     Else
     Workbooks.Open ("F:\Partages\Commun_DRH\Taux de recouvrement\Evolution\2018\" & pole)
     With Range("A1:C28") 'Début de l'instruction avec : WITH
            ActiveSheet.Select
     Selection.PasteSpecial Paste = xlPasteValues, Operation = xlNone, SkipBlanks _
        = False, Transpose = False
         .Borders.Value = 1
         .Interior.Color = RGB(174, 240, 194)
         With .Font
             .Size = 12
             .name = "Arial"
             .Bold = False
         End With
      End With
    
        End If
        
    Next
    
End Sub


Merci beaucoup !! :)

EDIT : Correction des balises de code : Ajout de la coloration syntaxique.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

5 réponses

jordane45
Messages postés
35473
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
19 juil. 2018 à 11:53
Bonjour,

C'est facile... le message d'erreur t'indique ce qui ne va pas....
Tu as deux boucles FOR dans ton code.... mais un seul NEXT.

0
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
21
19 juil. 2018 à 13:43
Bonjour,

J'ajouterais que si le code avait été indenté correctement, cette question n'aurait pas lieu d'être :
Sub kkdu74()
Dim wkb As Workbook
Dim CopCounter As Integer
  CopCounter = 12
Dim kkCounter As Integer
  kkCounter = 28

  For CopCounter = 1 To 12
    mensu = ThisWorkbook.Sheets(3).Range("F" & CopCounter).Value
    mensu_wk = Workbooks.Open("F:\Partages\Commun_DRH\Taux de recouvrement\Année 2018\" & mensu)
    For kkCounter = 1 To 28
      pole = ThisWorkbook.Sheets(3).Range("G" & kkCounter).Value
      DirFile = ("F:\Partages\Commun_DRH\Taux de recouvrement\Evolution\2018\" & pole)
      If Dir(DirFile) = "" Then
        Set wkb = Workbooks.Add
        ActiveWorkbook.SaveAs Filename = pole & ".xls"
        With Range("A1:C28") 'Début de l'instruction avec : WITH
          ActiveSheet.Select
          Selection.PasteSpecial Paste = xlPasteValues, Operation = xlNone, SkipBlanks _
            = False, Transpose = False
          .Borders.Value = 1
          .Interior.Color = RGB(174, 240, 194)
          With .Font
            .Size = 12
            .Name = "Arial"
            .Bold = False
          End With
        End With
      Else
        Workbooks.Open ("F:\Partages\Commun_DRH\Taux de recouvrement\Evolution\2018\" & pole)
        With Range("A1:C28") 'Début de l'instruction avec : WITH
          ActiveSheet.Select
          Selection.PasteSpecial Paste = xlPasteValues, Operation = xlNone, SkipBlanks _
            = False, Transpose = False
          .Borders.Value = 1
          .Interior.Color = RGB(174, 240, 194)
          With .Font
            .Size = 12
            .Name = "Arial"
            .Bold = False
          End With
        End With
      End If
    Next
  'On voit bien qu'ici, à ce niveau d'indentation, il manque quelque chose !!!
End Sub 

0
waramer
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Statut
Membre
Dernière intervention
19 juillet 2018

19 juil. 2018 à 14:17
Merci beaucoup les amis !
0
waramer
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Statut
Membre
Dernière intervention
19 juillet 2018

19 juil. 2018 à 15:29
J'ai encore un petit problème,

  For CopCounter = 1 To 12
mensu = ThisWorkbook.Sheets(3).Range("F" & CopCounter).Value
mensu_wk = Workbooks.Open("F:\Partages\Commun_DRH\Taux de recouvrement\Année 2018\" & mensu & ".xls")


La boucle ne peut pas s'effectuer je ne comprend pas. En effet, il y a juste un fichier dans mon dossier "année 2018" mais la maccro en créera plusieurs au fil du temps plus tard
0
vb95
Messages postés
2630
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
19 mai 2022
151
19 juil. 2018 à 19:36
Bonjour
Trop dur pour toi d'aller voir ici pour les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740
Messages postés
8549
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
7 mai 2022
21
Modifié le 20 juil. 2018 à 10:49
Bonjour,

« La boucle ne peut pas s'effectuer » ????? Je ne vois pas pourquoi la boucle ne peut pas s'effectuer !!!

Par contre je vois une très bonne raison pour qu'il se produise une erreur lorsqu'elle s'effectue : « il n'y a qu'un seul fichier dans mon dossier », vu que la boucle essaie d'en ouvrir 12, il se produit un erreur au second passage dans la boucle, puisque tu ne prends pas soin de vérifier son existence avant d'essayer de l'ouvrir.

Il faut donc que tu vérifies l'existence du fichier, par exemple avec Dir() et que tu sortes de la boucle s'il n'existe pas.

A ce propos, une boucle Do While.... Loop (ou While...Wend que j'aime pas) me semble plus adaptée qu'un For... Next.
Cordialement
Patrice
0