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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 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.
0
Rejoignez-nous