Forum >
VB.NET et VB 2005
Le code que tu montres laisserait plutôt penser à du VB6 ou à du VBA !
Catégorie modifiée (à mémoriser pour la prochaine fois)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionqui lit les dimensions de fichiers image pour les placer en début de nom
Function ChoixRepertoire() As String Dim Repert As FileDialog Set Repert = Application.FileDialog(msoFileDialogFolderPicker) Repert.Title = "Choisir le dossier de travail" Repert.Show If Repert.SelectedItems.Count > 0 Then ChoixRepertoire = Repert.SelectedItems(1) Else ' Touche annule ou Excape. Fin macro" End End If End Function Function Fichier_Existe(Path As String) As Boolean If Dir(Path) = "" Then Fichier_Existe = False Else Fichier_Existe = True End If End Function Function Extension(Nomfich As String) As String Dim Ch, S, Ext As String Dim i As Integer Ext = "" Extension = "" i = 1 S = StrReverse(Nomfich) Ch = Mid(S, 1, 1) While Ch <> "." Ext = Ext + Ch i = i + 1 Ch = Mid(S, i, 1) Wend Extension = "." & StrReverse(Ext) End Function
Pos = Len(Fichier) - (Len(Ext) + LenEntier + 2)est faite pour calculer la longueur du nom à conserver : longueur totale - l'extension - moins la place prise par l'expression (1) ou (10) située en fin de nom
stdole.StdPicturequi donne les dimensions dans une unité que je ne connais pas. J'ai trouvé un ratio qui me donne les valeurs en pixels, convertis en texte :
Sub TailleImage() Const Ratio = 26.458005 Dim oPict As New stdole.StdPicture Dim Tmp, FichDeb, SH, SL As String Dim H As Single Dim L As Single Tmp = Repertoire & Fichier On Error Resume Next Set oPict = stdole.LoadPicture(Tmp) H = oPict.Height / Ratio L = oPict.Width / Ratio SH = Str(CLng(H)) SL = Str(CLng(L)) End Sub
Dim St, Fichier As String au lieu de Dim St As String Dim Fichier As String
Dim St, Fichier As String au lieu de Dim St As String Dim Fichier As String
J'ai oublié de dire que je ne peux pas démarrer la macro si la définition des variables St et Fichier se fait sur la même ligne :
Dim St, Fichier As String
Sub FichierRenome(OldFich As String, NewFich As String) Dim FichierInit, St, Ajout As String Dim FSO As Object Dim i As Byte Set FSO = CreateObject("Scripting.FileSystemObject") St = NewFich On Error Resume Next FichierInit = NewFich i = 1 While Fichier_Existe(St) Ajout = "(" & Trim(Str(i)) & ")" NewFich = NomFichSeul(FichierInit) & Ajout & Ext i = i + 1 St = NewFich Wend NewFich = Trim(NewFich) FSO.MoveFile OldFich, NewFich End Sub
Function ExtFich(Fichier As String) As String P InStrRev(Fichier, "."): If P Then ExtFich Mid(Fichier, P) End Function
Sub ChercherFichiers() Dim FSO As Object Dim DossierSource As Object Dim Fichier As Object Dim NomFich As String Set FSO = CreateObject("Scripting.FileSystemObject") Set DossierSource = FSO.GetFolder(Repertoire) For Each Fichier In DossierSource.Files NomFich = Fichier.Name TraiteFichier (NomFich) i = i + 1 Next Fichier Set DossierSource = Nothing Set FSO = Nothing End Sub
Set FSO = Nothing
For Each Fichier In DossierSource.Files
Par contre ce qui l'est moins, c'est ça fonctionne jusqu'à 40 fichiers. Au-delà ça reboucle tout ou partie, à partir de
Set FSO = Nothing
For Each Fichier In DossierSource.Files NomFich = Fichier.Name TraiteFichier (NomFich) Next Fichier