Avis sur macro création dossier
Résolu/Fermé
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
-
6 déc. 2011 à 11:43
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 - 13 déc. 2011 à 12:22
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 - 13 déc. 2011 à 12:22
A voir également:
- Avis sur macro création dossier
- Dossier appdata - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Creation compte gmail - Guide
- Mettre un mot de passe sur un dossier - Guide
- Création compte google - Guide
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
6 déc. 2011 à 12:36
6 déc. 2011 à 12:36
bonjour
pourquoi "foldername" ?
pourquoi "foldername" ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 6/12/2011 à 12:39
Modifié par pijaku le 6/12/2011 à 12:39
Bonjour,
Ta macro semble très bien construite et convenir.
Néanmoins, il y a des limitations dont tu n'as pas tenu compte. Supposons que ta macro tombe dans les mains d'un utilisateur néophyte. Il veut créer un répertoire nommé : "/\*?<>|:"
Ta macro, rique de planter sévère...
Quelques règles à intégrer à ta macro (je ne sais pas si elles sont encore d'actualité, mais de toutes façons ça peux pas faire de mal) :
* longueur maximale du nom du répertoire de 255 caractères
* longueur maximale du chemin d'accès à un fichier : 260 caractères
* le caractère backslash (\) est le séparateur de chemins
* les caractères suivants sont prohibés :
", /, \, *, ?, <, >, |, :
Si tu empêches l'utilisateur lambda de contourner ces quelques règles, ta macro sera bien bonne...
J'ajouterais également :
- Déclare tes variables
- utilises d'autres noms (foldername est peut être déjà du langage VBA)
Cordialement,
Franck P
Ta macro semble très bien construite et convenir.
Néanmoins, il y a des limitations dont tu n'as pas tenu compte. Supposons que ta macro tombe dans les mains d'un utilisateur néophyte. Il veut créer un répertoire nommé : "/\*?<>|:"
Ta macro, rique de planter sévère...
Quelques règles à intégrer à ta macro (je ne sais pas si elles sont encore d'actualité, mais de toutes façons ça peux pas faire de mal) :
* longueur maximale du nom du répertoire de 255 caractères
* longueur maximale du chemin d'accès à un fichier : 260 caractères
* le caractère backslash (\) est le séparateur de chemins
* les caractères suivants sont prohibés :
", /, \, *, ?, <, >, |, :
Si tu empêches l'utilisateur lambda de contourner ces quelques règles, ta macro sera bien bonne...
J'ajouterais également :
- Déclare tes variables
- utilises d'autres noms (foldername est peut être déjà du langage VBA)
Cordialement,
Franck P
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
6 déc. 2011 à 12:53
6 déc. 2011 à 12:53
Désolé pour la déclaration des variables, elle est en faite deja faite, mais en faite ceci n'est qu'une partie d'une macro plus grande. Et en recopiant j'ai oublier de mettre la déclaration des variables.
Ok je vais changer foldername.
Merci pour les régles je vais tacher de mettre des sécurité pour eviter un plantage.
Merci pour tes conseils.
Ok je vais changer foldername.
Merci pour les régles je vais tacher de mettre des sécurité pour eviter un plantage.
Merci pour tes conseils.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
6 déc. 2011 à 14:06
6 déc. 2011 à 14:06
Re-
Suite à la suggestion de Michel plus haut, voici un code de création avec la fonction qui va bien... :
Suite à la suggestion de Michel plus haut, voici un code de création avec la fonction qui va bien... :
Sub createfolder() Dim LettreRacine As String, NomDossier As String LettreRacine = "D:\" NomDossier = "Q " & Range("D11") & "_" & Range("D12") & "_" & Range("B22") If detecter_car_interdit(NomDossier) = False Then If Dir(LettreRacine & NomDossier, 16) = "" Then MkDir LettreRacine & NomDossier Else: MsgBox NomDossier & Chr(13) & "Dossier déja existant" End If Else MsgBox NomDossier & Chr(13) & _ "- Comporte des caractères interdits (pour mémoire : """", /, \, *, ?, <, >, |, :)" _ & Chr(13) & "ou" & Chr(13) & _ "- Ce nom de répertoire est trop long (>255 caractères)" End If End Sub Function detecter_car_interdit(Nom) As Boolean Dim interdit Dim cptr As Long '---- TESTS RESERVES AU NOMS DE FICHIERS ------ ''--teste si 2 points dans le nom de fichier 'If Len(nom_fichier) - Len(Replace(nom_fichier, ".", "")) > 1 Then GoTo erreur ''--teste si nom de fichier comporte une extension 'If InStr(nom_fichier, ".") = 0 Then ' MsgBox " nom de fichier sans extension", vbCritical ' GoTo erreur 'End If '----- TESTS POUR TOUS LES NOMS (Fichiers & Répertoires) ''--vérifie les caractères interdits 'la ligne suivante concerne les noms de fichiers 'interdit = Array("""", "/", "?", ":", "|", "*", "<", ">", "[", "]", ".") 'la ligne suivante concerne les répertoires interdit = Array("""", "/", "\", "*", "?", "<", ">", "|", ":") For cptr = LBound(interdit) To UBound(interdit) If InStr(Nom, interdit(cptr)) Then GoTo erreur Next cptr ''--vérifie le nombre de caractères du nom de répertoire If Len(Nom) > 255 Then GoTo erreur detecter_car_interdit = False Exit Function erreur: detecter_car_interdit = True End Function
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
8 déc. 2011 à 13:06
8 déc. 2011 à 13:06
Merci beaucoup je n'ai pas encore eu le temps de la regardé mais des aue j'ai un moment je mis met.
Merci encore
Merci encore
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
13 déc. 2011 à 11:00
13 déc. 2011 à 11:00
Bonjour,
J'ai eu enfin le temps d'y jetter un oeil du coup je me tourne vers vous pour vous posez une question.
Y a t'il un interet a passer par une function? On ne peut pas directement l'intégrer a la macro?
J'ai eu enfin le temps d'y jetter un oeil du coup je me tourne vers vous pour vous posez une question.
Y a t'il un interet a passer par une function? On ne peut pas directement l'intégrer a la macro?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
13 déc. 2011 à 11:40
13 déc. 2011 à 11:40
Bonjour,
L'avantage de créer une fonction est que tu n'as pas besoin de te prendre la tête à chaque problème identique: tu as la solution sous le coude. Tu te crées ainsi une bibliothèque de solutions "prêtes à cuire"
De plus, une fonction peut-être utilisée (sous certaines conditions) comme fonction personnalisée sous Excel à la suite des fonctions-formules d'Excel
Maintenant, tu fais ce que tu veux: rien ne t'oblige à passer par une fonction
L'avantage de créer une fonction est que tu n'as pas besoin de te prendre la tête à chaque problème identique: tu as la solution sous le coude. Tu te crées ainsi une bibliothèque de solutions "prêtes à cuire"
De plus, une fonction peut-être utilisée (sous certaines conditions) comme fonction personnalisée sous Excel à la suite des fonctions-formules d'Excel
Maintenant, tu fais ce que tu veux: rien ne t'oblige à passer par une fonction
Mrfrize
Messages postés
188
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
28 novembre 2023
6
13 déc. 2011 à 12:22
13 déc. 2011 à 12:22
Merci a tous pour vos conseil.
Je viens de mettre a jour ma amcro avec ceux-ci.
Je viens de mettre a jour ma amcro avec ceux-ci.
6 déc. 2011 à 12:49
J'ai changé des truc en francais pour ce forum mais j'ai oublié cela.
6 déc. 2011 à 13:24
SharedWorkspaceFolder concernant les espaces de dossiers partagés
donc ça m'a paru bizarre que ça marche (ca marche: j'ai testé) mais il serait peut-^tre plus prudent de le nommer autrement
bonjour Frank: je n'avais pas rafraichi.
6 déc. 2011 à 13:29
je n'avais pas rafraichi. Moi non plus. Désolé...
Bonne journée.
ps : Merci pour les précisions sur FolderName, il me semblait bien l'avoir déjà utilisé...
Modifié par michel_m le 6/12/2011 à 13:34
ci dessous une fonction qui vérifie la syntaxe d'un fichier (auteur; ???)
il serait facile de la transformer(partie en italique) pour un dossier :; si tu peux regarder car je dois partir