Résolu Bloc If non reconnu

Dim.Reichart

XLDnaute Occasionnel
Bonsoir, ou re,
J'ai (encore) un petit souci avec ma macro.
Le but est de vérifier si un sous-dossier existe, et si non, de le créer.
VB:
Option Explicit
Sub test()

Dim d As String
d = ThisWorkbook.Path & "\" & Range("a1")

    If Len(Dir(d & "\" & Range("m6"), vbDirectory)) Then MkDir (d)
    End If
   
End Sub
Le débogueur donne une erreur "end if sans bloc if", pourtant, le bloc if est reconnu et mis en couleur.
Afin de m'assurer de la syntaxe des sous fonctions, je les ai testé indépendamment.
Len(Dir()) remonte bien une donnée 0 ou 1 selon que le fichier existe ou pas et MKdir() crée correctement le dossier.
L'aide sur la fonction ne m'apporte pas de précision, j'ai aussi essayé d'ajouter un else, mais dans ce cas, j'obtiens l'erreur "else sans bloc if".
J'utilise If ailleurs, et à priori, je n'ai pas ce problème (bien qu'il puisse apparaitre plus tard).
Si vous avez une explication, ça m'interesse.
Merci d'avance.
 
Dernière édition:

Calvus

XLDnaute Accro
Bonsoir,

Comme ça :
VB:
 If Len(Dir(d & "\" & Range("m6"), vbDirectory)) Then MkDir (d)
Ou comme ça :
Code:
 If Len(Dir(d & "\" & Range("m6"), vbDirectory)) Then
     MkDir (d)
 End If
Mais pas les 2 ;)

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Dim.Reichart,

soit vous écrivez (sans EndIf):
VB:
if xxxxxx then YYYYYYY else ZZZZZ
soit vous écrivez (avec un endif) :
Code:
if xxxxx then
   yyyyy
else
  zzzzz
endif
edit : la partie else zzzzz est facultative dans les deux formes
 

Dim.Reichart

XLDnaute Occasionnel
D'accord, effectivement, ça tient à peu de chose. Tellement que je ne crois pas que ce soit précisé dans l'aide.
Merci en tout cas.
 

D.D.

XLDnaute Occasionnel
Bonjour,

Dans ce genre de cas, en ce qui me concerne, je fais un
VB:
On error resume next
MkDir (d)
On error goto 0
C'est à dire que je ne m'occupe même pas de savoir s'il existe déjà: je le crée et s'il existe déjà le on error resume next evite l'erreur.
 

Discussions similaires


Haut Bas