Recherche de dossier / création avec une boucle

Résolu
Alb1dza Messages postés 6 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 18 août 2010 - 17 août 2010 à 16:46
Alb1dza Messages postés 6 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 18 août 2010 - 17 août 2010 à 18:21
Bonjour à tous,

Je précise d'emblée que je débute tout juste en VB.

Je cherche à créer un dossier nommé en fonction d'une entrée texte dans un userform ("nom"), à condition qu'un dossier du même nom n'existe pas dans plusieurs dossiers pré-définis.

Si il existe déjà, je voudrai une msgbox me disant "Dossier déjà présent dans (le dossier en question)".

Mon code actuel dans sa version simple (un seul dossier testé) est le suivant, mais je ne sais pas comment intégrer les autres tests à la suite :

Private Sub OK_Click()
If Dir$("U:\...\Dossier 1" & nom.Value, vbDirectory) = vbNullString Then
MkDir "U:\...\Dossier 1" & nomdufonds.Value
Else
MsgBox "Dossier déjà présent dans le Dossier 1"
End If

End Sub

Pourriez-vous me donner un coup de main ? En version "simple", je suis vraiment débutant !



Alb1dza

4 réponses

the_little_big_man Messages postés 86 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 14 février 2011
17 août 2010 à 17:27
si tu peux enregistrer tes dossiers que tu veux parcourir dans une structure exemple une tableau de string et du coup tu parcour le tablo
Dim tablo(1) As String ' tu donne une taille à ton tableau ( ici 2)
Dim i As Integer
'tu initialise ton tablo avec tes nom de dossier
tablo(0) = "nom dossier 1"
tablo(1) = "nom dossier 2"

For i = 0 To UBound(tablo) 'tu vérifie pr chaque indice du tablo
If FileExist(tablo(i)) Then
MsgBox "dossier existe dans " & tablo(i)
Else
MkDir "dfsfsdf"
End If

Next
3
Alb1dza Messages postés 6 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 18 août 2010
17 août 2010 à 18:21
Merci beaucoup...

Pour ne rien te cacher je ne sais pas faire cela (le tableau de string), mais finalement, en bidouillant un peu, j'ai réussi à trouver, en enchaînant les If. Mon code est un peu moins clair mais ça marche.

ca donne quelque-chose comme :
If... Then
If... Then
If...Then
Else
End If
Else
End If
Else
End If

En tout cas merci beaucoup d'avoir été aussi réactif !


Alb1dza
3
the_little_big_man Messages postés 86 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 14 février 2011
17 août 2010 à 17:07
tu px utiliser la fonction suivate qui te dis si un dossier/fichier existe


Function FileExist(ByVal sTestFile As String) As Boolean
   'vérifie l'existance d'un fichier/dossier
   'si la taille est >-1 le fichier existe
   Dim lSize As Long
   On Error Resume Next
   
   lSize = -1
   
   lSize = FileLen(sTestFile)
   If lSize > -1 Then
      FileExist = True
   Else
      FileExist = False
   End If
End Function



du coup si la liste de tes dossier prédefinis n'est pas longue tu px faire du genre

If (FileExist("nom dossier 1" & nom.Value) And FileExist("nom dossier 2" & nom.Value)) Then
    MkDir "U:\...\Dossier 1" & nomdufonds.Value
Else
 MsgBox "..."
End If
0
Alb1dza Messages postés 6 Date d'inscription mercredi 13 mai 2009 Statut Membre Dernière intervention 18 août 2010
17 août 2010 à 17:13
Merci pour ta réponse.

Même avec ma formule, j'avais réussi à tester plusieurs dossiers grace à AND.

Mais le problème c'est que je voudrai que ma MsgBox puisse me dire dans lequel des dossiers testés il existe.

L'idée que j'ai (mais que je n'arrive pas à mettre en place) serait donc de tester la présence ou non dans Dossier 1
- si oui : MsgBox "Dossier déjà présent dans dossier 1"
- si non : tester le dossier 2
Ainsi dans le dossier 2:
- si oui : MsgBox "Dossier déjà présent dans dossier 2"
- si non : tester le dossier 3
Etc.

D'où mon idée d'une "boucle".. Peut-être que c'est plus simple à réaliser mais j'avoue être complètement perdu...



Alb1dza
0
Rejoignez-nous