IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Trier un tableau à 2 dimensions


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 7
    Points : 11
    Points
    11
    Par défaut Trier un tableau à 2 dimensions
    Bonjour à tous,

    J'essai de créer un script qui renommerai toutes les photos d'un de mes dossiers par le nom de son dossier parent par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    for i = 1 to nbrdefichier
    nom du dossier & i
    next
     
    mais je veux que l'incrémentation (i) prenne en compte la date de création de la photo...
     
    Donc j'en suis là:
     
       Option Explicit
       Dim fso, f, fc, i, f1, oFolder, oShell, TitreDesFoto, counter, strMessage
       Dim t()
       On Error Resume Next
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set oShell = CreateObject("Shell.Application")
       Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&,"C:\Users\michael\Desktop\Formation script")
       Set f = fso.GetFolder(oFolder.ParentFolder.ParseName(oFolder.Title).Path)
     
    If Err.number<>0 Then
       msgbox "L'erreur [" &_
       err.description & "] s'est produite"
       On Error GoTo 0
       Wscript.quit 1
    End If
     
       TitreDesFoto = inputbox("Entrer le titre des photos")
       Set fc = f.Files
     
       'compter le nombre de fichier dans le dossier
       counter = -1
    for each f1 in fc
       counter = counter + 1
    next
     
       'creation du tableau a la taille necessaire
       redim t(counter , 1)
     
     
       'remplir le tableau
       i = 0
    for each f1 in fc
       t(i, 0)= f1.Name
       t(i, 1)= left(f1.DateCreated,10)
       i = i + 1
    next
    je n'ai pas encore gérer la prise du nom du dossier parent mais pour le moment j'ai récupérer dans un tableau t(counter, 1) :

    nomfichier1 ; datecreation
    nomfichier2; datecreation
    etc

    mais afin de les renommer dans le bon ordre il me faudrai trier les données en fonction de la colonne 2.

    J'ai regardé sur internet mais les code proposés sont énorme et je ne les comprend pas...

    Merci par avance.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 7
    Points : 11
    Points
    11
    Par défaut
    Après un dur labeur j'ai réussi et post mon code au cas ou il servirai à quelqu'un:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    Option Explicit
       ' declaration des variables
       Dim fso, f, fc, i, f1, oFolder, oShell, counter, triok, strMessage, bon, datebasse, datehaute, fichierhaut, fichierbas, filespec
       'dim strMessage
       Dim t()
       On Error Resume Next
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set oShell = CreateObject("Shell.Application")
       Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&,"C:\")
       Set f = fso.GetFolder(oFolder.ParentFolder.ParseName(oFolder.Title).Path)
     
     
       ' gestion erreur si l utilisateur ne selectionne pas de dossier
    If Err.number<>0 Then
       msgbox "L'erreur [" &_
       err.description & "] s'est produite"
       On Error GoTo 0
       Wscript.quit 1
    End If
     
       Set fc = f.Files
     
       'compter le nombre de fichier dans le dossier
       counter = 0
    for each f1 in fc
       counter = counter + 1
    next
     
       'creation du tableau a la taille necessaire
       counter = counter - 1
       redim t(counter , 1)
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       'remplir le tableau
       i = 0
    for each f1 in fc
       t(i, 0)= f1.Name
       t(i, 1)= Int(CDbl(f1.DateCreated))
       i = i + 1
    next
     
     
    'facultatif'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       ' test pour lire le tableau
     
       strMessage = ""
    For i = 0 To counter
       strMessage = strMessage & t(i, 0) & " " & t(i, 1) & vbLf
    Next
       MsgBox strMessage, vbExclamation
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
       'tri du tableau
       counter = counter - 1
     
       triok = False
    While triok = False
     
    For i = 0 To counter
    If t(i, 1) > t(i + 1, 1) Then
       'deplacement des dates
       datehaute = t(i, 1)
       datebasse = t(i + 1, 1)
     
       t(i + 1, 1) = datehaute
       t(i, 1) = datebasse
     
       'deplacement des noms de fichier
       fichierhaut = t(i, 0)
       fichierbas = t(i + 1, 0)
       t(i + 1, 0) = fichierhaut
       t(i, 0) = fichierbas
    End If
    Next
     
    ' facultatif'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
       ' test pour lire le tableau
       counter = counter + 1
       strMessage = ""
    For i = 0 To counter
       strMessage = strMessage & t(i, 0) & " " & t(i, 1) & vbLf
    Next
       MsgBox strMessage,  vbCritical
    counter = counter - 1
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
       'verification du tri de mon tableau
       bon = 0
    For i = 0 To counter
     
    If t(i, 1) < t(i + 1, 0) or t(i, 1) = t(i + 1, 0) Then
       bon = bon + 1
    End If
     
    Next
     
    If bon = counter + 1 Then
       triok = True
    End If
     
     
    Wend

    Désolé pour le nom de mes variables qui ne respecte pas la charte VBscript.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier un tableau à deux dimensions
    Par ghost emperor dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/04/2008, 15h51
  2. comment trier un tableau à n dimensions ?
    Par JoseF dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/04/2008, 09h37
  3. Réponses: 1
    Dernier message: 11/02/2008, 16h45
  4. Trier un tableau à 2 dimensions
    Par sami_c dans le forum ASP
    Réponses: 3
    Dernier message: 24/07/2007, 09h27
  5. [Prototype] Trier un tableau à deux dimensions par colonnes
    Par G.D.V.L. dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 12/06/2007, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo