Code ne fonctionne plus?

Salut,

J'ai un problème depuis quelque jours avec ce code (qui marchait parfaitement avant ; je n'ai fais aucun changement)

Dim date_now As String
date_now = Year(Date)
  For Each fl In CreateObject("scripting.filesystemobject").GetFolder("Z:\soumission\" & date_now).Files
     If Val(Split(fl.name, "-")(1)) > c01 Then c01 = Val(Split(fl.name, "-")(1))
  Next
  ThisWorkbook.Sheets("DRAWING NUMBER").Range("L20") = c01 + 1
'=---------------

End Sub

Le code bloque à/souligne cette partie :

If Val(Split(fl.name, "-")(1)) > c01 Then

La structure du dossier Z:\soumission\2022

capture d ecran 2022 04 28 090515

Tout les fichiers sont nommé comme ceci : 2022-4027 - COMPAGNIE - NUMÉRO PROJET CLIENT.pdf

Le code me donnait le nouveau # soumission automatiquement -> 2022-4027 + 1

Est-ce que quelqu'un peut m'aider svp?

Bonjour,

Avez-vous vérifié qu'il n'y a pas de caractère non numérique dans les 4 premiers caractères dans Split(fl.name, "-")(1) ? Ou qu'il manque un tiret entre l'année et le numéro pour un fichier ?

Quel est le type de la variable C01 ? Si vous ne l'avez pas définie, elle est du type Variant, elle peut donc prendre n'importe quel type.

Définissez-là Integer et modifiez cette ligne pour voir :

If Val(Trim(Split(fl.name, "-")(1))) > c01 Then

Salut,

Colle un Debug.Print pour voir la valeur de fl sur le plantage.

  For Each fl In CreateObject("scripting.filesystemobject").GetFolder("Z:\soumission\" & date_now).Files
     Debug.Print fl.Name
     If Val(Split(fl.Name, "-")(1)) > c01 Then c01 = Val(Split(fl.Name, "-")(1))
  Next

Salut,

Merci pour vos réponses.

En effet c01 n'était pas définit mais j'ai toujours une erreur.

Mais en fesant le debug je vois qu'il y a Thumbs.db

J'ai donc contourné le problème avec un -> On Error Resume Next

Dim date_now As String
Dim c01 As Integer
date_now = Year(Date)
  For Each fl In CreateObject("scripting.filesystemobject").GetFolder("Z:\soumission\" & date_now).Files
  'Debug.Print fl.name
  On Error Resume Next
     If Val(Split(fl.name, "-")(1)) > c01 Then c01 = Val(Split(fl.name, "-")(1))
  Next
  ThisWorkbook.Sheets("DRAWING NUMBER").Range("L20") = c01 + 1

Pratique le Debug.Print, merci!

Salut,

Le On Error Resume Next est une solution de facilité, et je ne suis pas trop pour. Je lui préférerais un test par exemple sur les attributs des fichiers.

Salut,

Je vais regarder ça un petit peu plus tard, j'ai beaucoup d'ouvrage, pour l'instant pourvu que ça fonctionne comme il faut

Merci pour l'idée je vais essayer de faire la boucle mais seulement pour les pdf.

A+

Rechercher des sujets similaires à "code fonctionne"