For sans next

Signaler
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Statut
Membre
Dernière intervention
19 juillet 2018
-
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
-
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

Messages postés
32368
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 mai 2021
346
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.

Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
21
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 

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

Merci beaucoup les amis !
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Statut
Membre
Dernière intervention
19 juillet 2018

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
Messages postés
2427
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 mai 2021
137
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
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
21
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