Renommer un dossier
Bonjour,
Dans la cadre d'une mission, j'ai créé un formulaire de saisie/recherche/modification pour gérer une base de données de composants électroniques.
Ce petit logiciel me permet aussi de créer des dossier une fois que quelqu'un a effectué une nouvelle saisie dans un dossier spécifique. Le dossier reprend certaines cellules qui ont été remplies via la saisie.
Il y a un problème qui se pose : si dans ma saisie, j'ai mis une mauvaise information. Je vais modifier ma saisie mais une fois la modification faite. La modification de la saisie ne modifie pas le dossier de façon automatique.
Je cherche donc à pouvoir modifier le nom d'un dossier.
Je ne sais pas si c'est assez clair mes explication mais je joins bien évidement le fichier ici pour que ce soit plus clair
Bonne journée à tous !
Bonjour,
Voici un exemple à essayer :
sub test()
dim expath$, nvpath$
expath = "C:\Kains1\Dossier"
nvpath = "C:\Kains1\NouveauNom"
name expath as nvpath
end subCdlt,
Salut 3GB,
Merci de ta réponse ! J'ai tenté de l'adapter en faisant cette fonction :
'*************************
'Procédure de modification de dosssier
'*************************
Sub Modif_Dossier()
Dim expath, nvpath, Dossier As String
Dossier = "Mon dossier"
expath = Dossier & Cells(i, 1).Text & " " & Cells(i, 4).Text & " " & Cells(i, 12).Text & " " & Cells(i, 6).Text
With ActiveSheet
For i = 2 To Range("A65536").End(xlUp).Row
nvpath = Dossier & Cells(i, 1).Text & " " & Cells(i, 4).Text & " " & Cells(i, 12).Text & " " & Cells(i, 6).Text
Name expath As nvpath
Next i
End With
End SubIl me sort une erreur '1004' : erreur définie par l'application ou l'objet. J'ai mis deux espions sur les variables expath et nvpath pour visualiser leur valeur et ils ne contiennent absolument rien...
NB : J'ai modifié le nom de la variable "Dossier" car il y avait des noms sensibles
Bonne journée !
Attention, iIl faut bien que la variable dossier contienne un répertoire existant de ce type : "C:\Users\Kains1\"
Ensuite, la ligne
expath = Dossier & Cells(i, 1).Text & " " & Cells(i, 4).Text & " " & Cells(i, 12).Text & " " & Cells(i, 6).Textgénère une erreur car i n'est pas initialisé et vaut donc 0.
D'ailleurs, ici, il y a une boucle qui remplace les dossiers pour chaque ligne. Or, il n'y a qu'un seul expath. Ca renverra une erreur. Et quand bien même la ligne se trouvait dans la boucle, les valeurs de expath et de nvpath étant identiques, ça ne produirait pas le résultat espéré.
Voici la présentation standard où il reste à adapter le répertoire du dossier parent et définir les noms des dossiers à remplacer :
'*************************
'Procédure de modification de dosssier
'*************************
Sub Modif_Dossier()
Dim Dossier$, exnom$, nvnom$, expath$, nvpath$
Dossier = "C:\...\" '<<<< ADAPTER
if dir(left(Dossier, len(Dossier)-1), vbdirectory) = "" then msgbox "dossier parent inexistant", 16: exit sub
For i = 2 To Range("A65536").End(xlUp).Row
exnom = ??? '<<< ADAPTER
nvnom = Cells(i, 1).Text & " " & Cells(i, 4).Text & " " & Cells(i, 12).Text & " " & Cells(i, 6).Text
expath = dossier & exnom
if dir(expath, vbdirectory) <> "" then 'si le dossier existe
nvpath = dossier & nvnom
Name expath As nvpath 'on le renomme
end if
Next i
End SubCdlt,
Rebonjour,
J'ai repris ta solution et elle marche super bien !
J'ai du l'adapter car elle doit récupérer des informations dans différents textbox sur la page modification.
Il fallait donc faire un passage de valeurs
'*************************
'Procédure de modification de dosssier
'*************************
Sub Modif_Dossier(Modif_doss, New_name)
Dim Dossier$, exnom$, nvnom$, expath$, nvpath$
Dossier = "Mon dossier\"
If Dir(Left(Dossier, Len(Dossier) - 1), vbDirectory) = "" Then MsgBox "dossier parent inexistant", 16: Exit Sub
For i = 2 To Range("A65536").End(xlUp).Row
exnom = Modif_doss
nvnom = New_name
expath = Dossier & exnom
If Dir(expath, vbDirectory) <> "" Then 'si le dossier existe
nvpath = Dossier & nvnom
Name expath As nvpath 'on le renomme
End If
Next i
End SubMerci encore pour l'aide apportée !
Super ! Très bonne idée de passer les variables en paramètres !
Par contre, je ne sais pas si la boucle est utile dans ton cas, j'en ai pas l'impression.
Bonne continuation,