Generer des dossiers par excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

rainbow69006

XLDnaute Occasionnel
Est il possible de faire generer des dossiers par excel?
exemple je rentre un noms en ''A'' et je rentre le lieu du dossier en ''B''
et je met valider et sa me fabrique le dossier A en B ?

merci de vos idees
 
Re : Generer des dossiers par excel

Je sais pourquoi sa marche pas , parce que comme dans l'exemple que je vien de laisser je ne commence pas a la premiere ligne mais a la 5eme.

que dois je modifier?

J'ai essayer sa mais c'est pas encore sa :je pense que ce que j'ai modifier en vert c'est bon mais en rouge sa doit pas etre sa

Option Explicit
Sub Dossier()
Dim lig As Long, Col As Integer
Dim ColB As String, ColC As String
Dim derlig As Double
Dim MonChemin As String

' Récupère la dernière ligne de la feuille
derlig = Range("A" & Application.Rows.Count).End(xlUp).Row
' Sauter la 1ère ligne d'entête
For lig = 6 To derlig
' Pour chaque colonne
For Col = 1 To 4
' Récupère la valeur de la ligne de la colonne B
ColB = Range("B" & lig).Value
MsgBox ColB
' Récupère la valeur de la ligne de la colonne C
ColC = Range("C" & lig).Value
MsgBox ColC
' Vérifie créé le dossier
MsgBox Cells(6, 7 + Col)
If ColB <> "" And ColC <> "" And Cells(6, 7 + Col) <> "" Then
creerDossier "C:\" & ColB & "\" & ColC & "\" & Cells(6, 7 + Col)
End If

Next Col
Next lig
End Sub
Private Function creerDossier(ByVal sChemin As String)
Dim I As Integer, sTmp As String, Ar() As String
' Créé un tableau des différends dossier et sous-dossier
Ar = Split(sChemin, "\")
sTmp = Ar(0)
' Pour le début du chemin jusqu'à la fin
For I = LBound(Ar) + 1 To UBound(Ar)
' Vérifie que le tableau n'est pas vide
If Ar(I) <> "" Then
sTmp = sTmp & "\" & Ar(I)
On Error Resume Next
MkDir sTmp
On Error GoTo 0
End If
Next
End Function
 
Dernière édition:
Re : Generer des dossiers par excel

Salut Rainbow69006,

Effectivement dans le code il est marqué
Code:
  ' Sauter la 1ère ligne d'entête
  For lig = 2 To Derlig
    ' Récupère la valeur de la ligne de la colonne B
Le code commence la boucle à la ligne 2 pensant que ton tableau avec les entêtes commençait sur la première ligne !

Il fallait donc changer la valeur "2" par "6", puisque la première ligne de données de ton tableau est sur la ligne 6

Fichier ci-joint modifié pour le reste

A+
 

Pièces jointes

Dernière modification par un modérateur:
Re : Generer des dossiers par excel

Super cela marche!!!

par contre j'ai 2 petits soucis :
- Qu'est ce que je dois modifier pour que sa ne m'affiche pas les raccourci?
- Je voudrais lancer ce programe a partir d'un bouton mais apparement ce n'est pas possible , vous avez une solution?

merci beaucoup de votre aide
 
Re : Generer des dossiers par excel

Salut Rainbow,

Qu'est ce que je dois modifier pour que sa ne m'affiche pas les raccourci?
Regardes un minimum ton code et tu trouveras 😡

Je voudrais lancer ce programe a partir d'un bouton mais apparement ce n'est pas possible , vous avez une solution?
Avec ta barre d'outils "Formulaire"
Tu cliques sur l'icone "Bouton", tu crées un bouton sur ta feuille.
Une boite de dialogue te demande avec qu'elle macro tu veux associer ton bouton.
Tu choisis "Dossier" et OK

Voilà
 
Re : Generer des dossiers par excel

Salut rainbow69006
Bonsoir le fil
arfff la tu n'as pas bien placé les choses,pas grave
Option Explicit'c'est la
Private Sub CommandButton2_Click()
Option Explicit 'n'est pas a sa place sa place c'est en tête de module hors procèdure , c'est ce qui impose la déclaration des variables
Dossier 'doit seul etre dans la procedure Click c'est le nom qui appel la macro ce qui est en italique ne doit pas y figurer
Dim lig As Long, Col As Integer
Dim ColB As String, ColC As String
Dim Derlig As Double, VCar As String
Dim VPath As String
' Récupère la dernière ligne de la feuille
Derlig = Range("A" & Application.Rows.Count).End(xlUp).Row
' Sauter la 1ère ligne d'entête
For lig = 6 To Derlig
' Récupère la valeur de la ligne de la colonne B
ColB = Range("B" & lig).Value
' Récupère la valeur de la ligne de la colonne C
ColC = Range("C" & lig).Value
' Pour chaque colonne
For Col = 1 To 4
' Récupérer la valeur de la ligne 5 de la colonne 3 + Col
VCar = Cells(5, 3 + Col)
If ColB <> "" And ColC <> "" And VCar <> "" Then
VPath = "C:\" & ColB & "\" & ColC & "\" & VCar
Cells(lig, 3 + Col).Value = VPath
CreerDossier VPath
End If
Next Col
Next lig
End Sub
Donc on obtient

Code:
[B]Private Sub CommandButton2_Click()[/B]
   [COLOR=red]Dossier[/COLOR] 
[B]End Sub[/B]
la procèdure Dossier se trouvant dans un module du Fichier

ou alors

la procèdure dans l'évênement du bouton
Code:
[B]Private Sub CommandButton2_Click()[/B]
[I]Dim lig As Long, Col As Integer[/I]
[I]Dim ColB As String, ColC As String[/I]
[I]Dim Derlig As Double, VCar As String[/I]
[I]Dim VPath As String[/I]
[I]' Récupère la dernière ligne de la feuille[/I]
[I]Derlig = Range("A" & Application.Rows.Count).End(xlUp).Row[/I]
[I]' Sauter la 1ère ligne d'entête[/I]
[I]For lig = 6 To Derlig[/I]
[I]' Récupère la valeur de la ligne de la colonne B[/I]
[I]ColB = Range("B" & lig).Value[/I]
[I]' Récupère la valeur de la ligne de la colonne C[/I]
[I]ColC = Range("C" & lig).Value[/I]
[I]' Pour chaque colonne[/I]
[I]For Col = 1 To 4[/I]
[I]' Récupérer la valeur de la ligne 5 de la colonne 3 + Col[/I]
[I]VCar = Cells(5, 3 + Col)[/I]
[I]If ColB <> "" And ColC <> "" And VCar <> "" Then[/I]
[I]VPath = "C:\" & ColB & "\" & ColC & "\" & VCar[/I]
[I]Cells(lig, 3 + Col).Value = VPath[/I]
[COLOR=blue]CreerDossier[/COLOR] VPath
[I]End If[/I]
[I]Next Col[/I]
[I]Next lig[/I]
[B]End Sub[/B]
Bonne fin de Soirée
 
Dernière édition:
Re : Generer des dossiers par excel

Euh non il y a un PROBLEME

La creation de fichier marche quand on veu creer des dossers sur C:

mais quand je veu creer mes dossiers non par sur c: mais sur mon reseau la cela ne marche plus .

Ps: voila ce que j'ai modifie dans mon fichier

VPath = "C:\" & ColB & "\" & ColC & "\" & VCar
par VPath = "le nom de mon reseau\" & ColB & "\" & ColC & "\" & VCar
 
Re : Generer des dossiers par excel

Salut Rainbow69006,

Si je ne m'abuse, "Mkdir" est une commande MS-DOS, donc qui ne fonctionne pas avec une lecteur réseau du type "\\Nom réseau\..."

Il faut d'abord créer un lecteur connecté à ton dossier réseau.

Et ensuite tu utilises cette lettre.

Au passage la fonction "CreerDossier" n'est absolument pas nécessaire, puisque "Mkdir" créer lui même tous les dossiers et sous-dossiers

Voilà ce qui est dis :
MKDIR [lecteur:]chemin
MD [lecteur:]chemin

Si les extensions de commandes sont activées, MKDIR est modifié comme suit : MKDIR crée tout répertoire intermédiaire dans le chemin, si nécessaire.
Par exemple, supposez que \a n'existe pas. Alors:

mkdir \a\b\c\d
est équivalent … :
mkdir \a
chdir \a
mkdir b
chdir b
mkdir c
chdir c
mkdir d

qui est ce que vous auriez dû entrer si les extensions étaient désactivées.

Voilà 😉
 
Re : Generer des dossiers par excel

Merci de ta reponse

Mais je dois etre bete j'ai pas compris

Qu'est ce que je dois faire au juste ? comment creer une lettre pour mon reseau ?

ps : a noter que mon fichier excel se trouve sur le meme reseau que mes fichiers photos
ps : ce qui est bizare c'est que par exemple dans mon programme qui cree les liens hypertexte vers ses dossiers eh bien je n'ai pas de probleme
 
Dernière édition:
Re : Generer des dossiers par excel

... et moi pas de réseau à dispo donc quelqu'un d'autre pourra sans doute t'en dire plus, désolé.
A part Clic Droit sur "Poste de Travail" puis "Connecter un lecteur Réseau"
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
211
  • Question Question
Réponses
12
Affichages
520
Réponses
3
Affichages
313
Retour