Renommer tous les fichiers d'un dossier (VB6)

Fermé
Aspirant programmeur novice - 12 sept. 2011 à 23:58
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 28 sept. 2011 à 08:50
Bonjour,

je fais appel à vos lumières car je bloque sur un brin de code, très simple sans doute, mais qui me laisse sec, malgré mes recherches ...

Avec VB6, j'ai fait une "Form" qui permet de sélectionner un répertoire, de demander un nom à l'utilisateur (dans une zone de texte) puis, par un clic sur un bouton de commande, de renommer tous les fichiers présents dans le dossier sous la forme :

"Nom - " XX

avec XX le numéro du fichier.

J'ai tout. Il me manque juste à faire comprendre à VB que je veux le faire pour tous les fichiers, genre par une boucle de 1 à "nombre de fichiers". Ce que je n'ai pas, c'est la formule type "fichier (i)" pour qu'il comprenne que c'est le i-ème fichier du dossier.

Autrement, je sais renommer les fichiers un par un ... mais c'est justement ce que je veux éviter.

Un programme simple, très utile pour renommer des dossiers photos par exemple ! ;)

Raah, aidez-moi, je sèche !

Merci !

A voir également:

2 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 306
13 sept. 2011 à 11:04
Bonjour l'aspirant etc.

tes fichiers ont ils toujours le m^me suffixe, .jpg par ex pour des photos ou ...?

voici le début du code ( le renommage n'est pas encore traité car si les suffixes sont différents, il faudra extraire à chaque test le suffixe)

ChDir tonrepertoire
fich = Dir(nom & "*.*")
While fich <> ""
     If fich.Name = nom & "*" Then
     
     End If
     fich = Dir
Wend
2
Bonjour Michel,

merci de ton aide. J'ai essayé ton brin de code, mais j'avoue avoir été inapte à l'utiliser. De quelle classe est la variable "fich" que tu donnes ? Oui, il s'agit de traiter des fichiers "*.jpg". Typiquement, je transfère mes photos, et ensuite je les renomme avec un préfixe + un numéro.

Je te poste ci-dessous mon code :


Option Explicit 

Dim nom, chemin, texte As String 

Private Sub Drive1_Change() 
Dir1.Path = Drive1.Drive 
End Sub 

Private Sub Dir1_Change() 
File1.Path = Dir1.Path 
End Sub 

Private Sub Command1_Click() 
Call renommer 
End Sub 

Sub renommer() 
Dim nombre, i As Integer, fichier As String 

texte = Text1.Text 'texte entré par l'utilisateur 
chemin = Dir1.Path 'dossier sélectionné par l'utilisateur 
nombre = File1.ListCount 'compte le nombre de fichiers dans le dossier 

For i = 1 To nombre 
    If i < 10 Then 
        nom = texte + " - 0" + Str(i) + ".jpg" 
        Else 
        nom = texte + " - " + Str(i) + ".jpg" 
    End If 
     
'=> crée le nom à donner au prochain fichier à renommer 

    Name chemin + "\" + File1 As chemin + "\" + nom 
     
Next i 

End Sub


Ce que j'ai souligné correspond au code lorsque l'utilisateur sélectionne un fichier. ça marche. Mais je voudrais trouver un moyen d'étendre le renommage à tous les fichiers du dossier, à l'aide de la boucle en "i".
Dans le genre : for i = X to Y, Name file(i) as texte

Je pense que c'est juste un problème de "vocabulaire" que je n'ai pas ?

Merci !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
14 sept. 2011 à 11:34
Bonjour

ci joint code VBA (j'espère que c'est identique sur VB6 pour la ligne "Name fich As...")
c'est un bout de code pas la procédure
tu n'as pas besoin d'indiquer le chemin car avec chdir (comme sous ce bon vieux DOS) on est dans le répertoire baptisé ci dessous "tonrepertoire"

Dim nom As String, fich As String, num As Integer '('ou byte si nombre <256)
'.... 'toncode demandant le nom
ChDir tonrepertoire
fich = Dir("*.jpg")
While fich <> ""
    num = 1
    Name fich As nom & "-" & num & ".jpg"
    num = num + 1
     fich = Dir
Wend
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
14 sept. 2011 à 11:58
Bonjour,

A mon tour de passer après toi michel ;-)
Je pense qu'il vaudrait mieux initialiser num en dehors de la boucle while sinon il sera toujours égal à 1...
num = 1
While fich <> ""
    Name fich As nom & "-" & num & ".jpg"
    num = num + 1
     fich = Dir
Wend
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 306
14 sept. 2011 à 12:00
Tout à fait, merci !... ;-)
0
Aspirant programmeur novice
17 sept. 2011 à 15:43
Merci à vous deux ! Vous me sauvez la vie, ou presque.
Le programme marche. J'ai changé 2-3 trucs pour personnaliser :

ChDir Dir1.Path (dossier sélectionné dans une liste par l'utilisateur) Cette ligne est d'ailleurs facultative, je viens de me rendre compte. Le programme "comprend" que les fichiers dont je vais parler sont ceux du dossier sélectionné

Puis un petit "If" pour rajouter le "0" de la numération de 01 à 09, petite touche d'esthétique ...

Ainsi qu'une msgbox pour que l'utilisateur ait un retour.

Je peux vous envoyer le programme si vous le désirez, même si je suppose que ça ne vous prendrait pas beaucoup de temps à le refaire.
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 13/09/2011 à 09:07
bonjour,

permets moi de te demander pourquoi tu utilises VB6, et d'après ton pseudo pourquoi tu APPRENDS VB6

en dépit du fait que

- cette version de VB est sortie en 1998 (13 !!) ,
- qu'il n'y a plus de support étendu assuré par Microsoft depuis mars 2008 pour cette version,
- qu'elle ne comporte pas la possibilité de faire de la programmation objet
et enfin
- que c'est un mauvais langage:
« Visual Basic est un des langages les plus utilisés pour l'écriture d'applications commerciales, c'est-à-dire d'applications ne faisant que manipuler des chiffres et des lettres. Ce BASIC est particulièrement adapté à cet usage, pas d'accès système, pas de performances critiques, développement rapide, compétences apparemment faibles. Le défaut étant justement sa facilité de mise en oeuvre : un débutant VB pourra rapidement faire un programme opérationnel mais souvent tellement mal fait (sans analyse, structures ni règles, sans même la moindre expérience en programmation parfois...) qu'il sera difficilement maintenable par la suite. Beaucoup de projets VB sont à refaire entièrement car ils ont été trop mal faits par des débutants VB. »
https://fr.wikipedia.org/wiki/Visual_Basic
-2
Aspirant programmeur novice
13 sept. 2011 à 09:11
hé bien, simplement parce que c'est le langage que j'ai appris à l'école et que je n'ai pas le temps (et pas vraiment la nécessité) d'en apprendre un autre. Quant à la version (dont je ne connaissais même pas la date de sortie !) c'est celle que j'ai sous la main.
Mon pseudo est plutôt ironique, je vis plus sur mes restes de VB, j'ai arrêté d'apprendre ;)
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
13 sept. 2011 à 11:47
Merci d'avoir répondu

En fait , tu ne t'intéresses pas à l'outil que tu utilises

Je viens ainsi de comprendre une chose: l'existence de forums sur lesquels des gens comme toi peuvent aboutir à un code fonctionnel parce qu'ils le font en fait faire par d'autres explique en grande partie que VB6, qui est complétement dépassé, continue d'être autant utilisé.

Malgré tout, je te suggère de regarder la courbe de VB dans l'index TIOBE.
https://www.tiobe.com/tiobe-index//

Malgré les critiques qu'on peut faire à cet index, il donne très très très grossièrement une idée générale de la position d'un langage.
Dans cet index (Visual) Basic regroupe BASIC et les VB, mais plus personne n'utilise les VB 1 à 5 je suppose. On voit sur la courbe que c'est en nette perte de vitesse.

Visual Basic.NET est comptabilisé à part, il se trouve en position 39
0
Aspirant programmeur novice
14 sept. 2011 à 11:23
Ecoute Heyquem,

j'ai appris ce langage, et pour le "programme" que je compte faire, cela suffit amplement. Je suis scientifique, je parle couramment 3 langues, je travaille, j'ai des occupations diverses, une vie sociale et j'essaye même de faire du sport quand je peux. Je n'ai pas le temps d'apprendre d'autres langages (si je pouvais tout connaître, crois-moi que ça me plairait pourtant), surtout pour faire un programme de 20 lignes tous les 2 ans.

Si je m'intéresse à mon outil ? Oui et non. Oui, pour ce qu'il m'apporte. Après, où, quand, comment il a été créé, s'il faisait beau ou non, je t'avoue que je m'en fous pas mal. Quand j'utilise un marteau, c'est pour planter un clou, ce n'est pas pour le psychanalyser. Est-ce que tu calcules les forces de Coriolis dans tes toilettes lorsque tu tires la chasse, ou as-tu modélisé les transferts de chaleur de ton frigo pour savoir en combien de temps ta bière sera fraîche ? Je ne pense pas.

J'aime faire les choses seul, mais quand je n'arrive toujours pas au bout d'un certain temps, je demande. Dans la vie, il y a ce qu'on appelle des spécialistes, ou experts. Ce n'est ni honteux ni abominable que de faire appel à eux. Entre se faire faire son code et demander une indication, il y a un monde, non ?

Si on poursuit ta logique, quelqu'un qui cherche un mot dans le dictionnaire est illettré ? Et les écoles, les universités, bourrées de gens qui comptent sur les autres (les professeurs) pour être formés ? Allez, arrête ton délire.

Merci pour le lien (la courbe est alarmante, n'empêche que 7è, c'est pas dégueulasse non plus)
0