Création de Dossier à partir d'une liste Excel

Bonjour,

A partir d'un tableau Excel (extrait simplifié en PJ avec le code VBA), je veux créer 1 dossier par ligne dans un dossier parent identifié dans le code VBA.

Quand j'active la macro, j'ai 2 soucis:

  1. Seuls 88 dossiers sur 241 sont crées (VBA s'arrête au site "LEVANGER" que l'on retrouve en ligne 125 du tableau)
  2. J'ai un débugage que je ne comprends pas (cf capture d'écran) sur MkDir (CheminDossier)

Question bonus :

- J'aimerais que la macro s'applique à chaque fois qu'il y a une nouvelle ligne. Comment faire?

- J'aimerais qu'il y ait un rangement conditionnel sur le critère "OCCUPANCY" en colonne C. Si le site est "Sold", alors, j'aimerais qu'il rentre dans un dossier "Sold"

Merci par avance pour vos réponses.

220all-sites.xlsm (25.28 Ko)

Bonjour QuentinS

Que le code s'arrêt à la ligne 125 est normal

A la ligne 126, voici ce que vous avez comme valeur "LILYDALE/TOTTENHAM"
Donc le code va vouloir créer le sous dossier "TOTTENHAM" dans le dossier "LILYDALE" qui n'existe pas

Il faut impérativement remplacer "/" par "_"
En ce qui concerne "Sold" il faut faire un test et au cas ou, l'ajouter au dossier

Sub CréerDossier()
  'Indiquer les variables qui permettent de savoir où aller chercher la liste des dossiers à créer (lstr = last row)
  Dim ws_data As Worksheet
  Dim lstrw As String
  'Indiquer les vairables qui permettent de savoir où ranger les dossiers à créer
  Dim CheminDossier As String
  Dim NomDossier As String

  'Identifier la feuille
  Set ws_data = Worksheets(1)
  'Identifier la dernière line du tableau
  lstrw = ws_data.Cells(Rows.Count, 1).End(xlUp).Row
  'Boucle sur les données identifiées
  For i = 4 To lstrw
    'Indiquer où aller chercher le nom du dossier. Ici le 2 correspond au numéro de colonne "Site Cleaned"
    NomDossier = ws_data.Cells(i, 2)
    NomDossier = Replace(NomDossier, "/", "_")
    ' Vérifier si OCCUPANCY = Sold
    If ws_data.Cells(i, 3) = "Sold" Then
      ' Dossier Sold
      NomDossier = NomDossier & "\Sold"
    End If
    CheminDossier = "C:\Users\qseite\OneDrive - Nexans\Documents\Real Estate - Documents\Sites\TEST VBA\" & NomDossier & "\"
    ' Vérifier si le dossier n'existe pas
    If Dir(CheminDossier, vbDirectory) = vbNullString Then
      ' Alors créer le dossier
      MkDir (CheminDossier)
    End If
  Next
End Sub

A tester

A+

Merci Bruno. Je n'avais pas du tout pensé à ce "\". Il faut avoir l'oeil à partout.

Merci pour le complément de code pour le rangement conditionnel ;)

Je clos le sujet

Rechercher des sujets similaires à "creation dossier partir liste"