For sans next

Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Dernière intervention
19 juillet 2018
-
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
Afficher la suite 

Votre réponse

5 réponses

Messages postés
23569
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
0
Merci
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.

Commenter la réponse de jordane45
Messages postés
7443
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
9 décembre 2018
0
Merci
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 

Commenter la réponse de Patrice33740
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Dernière intervention
19 juillet 2018
0
Merci
Merci beaucoup les amis !
Commenter la réponse de waramer
Messages postés
11
Date d'inscription
mercredi 11 juillet 2018
Dernière intervention
19 juillet 2018
0
Merci
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
vb95
Messages postés
1725
Date d'inscription
samedi 11 janvier 2014
Dernière intervention
11 décembre 2018
-
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
Commenter la réponse de waramer
Messages postés
7443
Date d'inscription
dimanche 13 juin 2010
Dernière intervention
9 décembre 2018
0
Merci
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
Commenter la réponse de Patrice33740

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.