Microsoft 365 Erreur 9 VBA pour extraction en boucle

E25P

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord, je vous remercie d'avance pour l'aide que vous avez pu me donner sur ce forum, j'ai lu pas mal de vos posts. Mais voilà, aujourd'hui, je dois vous écrire car je bloque sur un code VBA.

Le but de celui-ci est d'extraire tous le sujets de la feuille "Zone à remplir" grâce à la feuille "Extraction Sujet" et de les transformer en fichier. J'ai créé le code moi-même avec le peu de connaissance que j'ai. Voici le code pour information :


VB:
Sub Extract()

Dim NBSubject As Integer
Dim NBTotSubject As Integer
Dim Date1 As Date
Dim Filename As String

Date1 = [B3]
Filename = "C:\Users\---\Desktop\GED\" & "GED_Question_" & Date1 & "_" & NBSubject & ".xlsx"

NBTotSubject = 8
    For NBSubject = 1 To NBTotSubject
        Range("A1").Value = "Sujet" & NBSubject
        Range("A1:B8").Calculate
        oArray = Range("A1:B8")
        With Workbooks.Add
        .Title = "Question " & NBSubject
        .SaveAs Filename:=Filename
        End With
        Workbooks.Open (Filename)
        Range("A1:B8") = oArray
        Erase oArray
        ActiveWorkbook.Save
        Workbooks("GED_Question_" & Date1 & "_" & NBSubject & ".xlsx").Close
        Windows("Renvoi XLD.xlsm").Activate
        Next NBSubject
      

End Sub

Et voici la ligne que le débogage me surligne :
VB:
Workbooks("GED_Question_" & Date1 & "_" & NBSubject & ".xlsx").Close

Pour ce qui est du fichier, je l'ai rendu anonyme et disponible ci-joint. Sur ce, je vous remercie énormément d'avance. Il est super votre forum.
 

Pièces jointes

  • Renvoi XLD.xlsm
    63.6 KB · Affichages: 7
Dernière édition:
Solution
Alors, j'ai trouvé moi-même l'erreur finalement. 😅

Voici la solution :

VB:
Sub Extract()

Dim NBSubject As Integer
Dim NBTotSubject As Integer
Dim Date1 As Date
Dim Filename As String

Date1 = [B3]

NBTotSubject = 8
    For NBSubject = 1 To NBTotSubject
        Range("A1").Value = "Sujet" & NBSubject
        Range("A1:B8").Calculate
        oArray = Range("A1:B8")
        Filename = "C:\Users\---\Desktop\GED\" & "GED_Question_" & Date1 & "_" & NBSubject & ".xlsx"
        With Workbooks.Add
        .Title = "Question " & NBSubject
        .SaveAs Filename:=Filename
        End With
        Workbooks.Open (Filename)
        Range("A1:B8") = oArray
        Erase oArray
        ActiveWorkbook.Save
        Workbooks("GED_Question_" & Date1 &...

E25P

XLDnaute Nouveau
Alors, j'ai trouvé moi-même l'erreur finalement. 😅

Voici la solution :

VB:
Sub Extract()

Dim NBSubject As Integer
Dim NBTotSubject As Integer
Dim Date1 As Date
Dim Filename As String

Date1 = [B3]

NBTotSubject = 8
    For NBSubject = 1 To NBTotSubject
        Range("A1").Value = "Sujet" & NBSubject
        Range("A1:B8").Calculate
        oArray = Range("A1:B8")
        Filename = "C:\Users\---\Desktop\GED\" & "GED_Question_" & Date1 & "_" & NBSubject & ".xlsx"
        With Workbooks.Add
        .Title = "Question " & NBSubject
        .SaveAs Filename:=Filename
        End With
        Workbooks.Open (Filename)
        Range("A1:B8") = oArray
        Erase oArray
        ActiveWorkbook.Save
        Workbooks("GED_Question_" & Date1 & "_" & NBSubject & ".xlsx").Close
        Windows("Renvoi XLD.xlsm").Activate
        Next NBSubject
        

End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :) ,

si tu le dis, chez moi, çà ne veut toujours pas fonctionner, en supprimant "Date1" au nom du fichier à créer, plus de problèmes.
bizarre, vous avez dit
Effectivement Date1 est déclaré de type Date. Dans une concaténation, Date1 est convertit en date au format 06/05/2022 (Excel français, paramètre Date Français en Windows et donc aussi en Excel chez moi). Un nom de fichier ne doit pas comporter de "/".
En remplaçant, Date1 par Format(Date1,"yyyy-mm-dd"), ça fonctionne chez moi.
 
Dernière édition:

E25P

XLDnaute Nouveau
Bonjour à tous :) ,


Effectivement Date1 est déclaré de type Date. Dans une concaténation, Date1 est convertit en date au format 06/65/2022 (Excel français, paramètre Date Français en Windows et donc aussi en Excel chez moi). Un nom de fichier ne doit pas comporter de "/".
En remplaçant, Date1 par Format(Date1,"yyyy-mm-dd"), ça fonctionne chez moi.
Moi cela me fait pas ce problème car je n'ai pas les paramètres régionaux français, mais suisse qui, eux, utilisent le "." comme séparateur.
 

E25P

XLDnaute Nouveau
Salut, salut, comment allez-vous ?

Dites-moi, j'ai testé ce code mais avec un chemin qui fait référence à un serveur partagé est là, l'erreur 9 se répète, sauriez-vous comment remedier à ce problème ?
 

Discussions similaires

Réponses
4
Affichages
524
Réponses
2
Affichages
283

Statistiques des forums

Discussions
312 165
Messages
2 085 883
Membres
103 014
dernier inscrit
moimoi31