Sélectionner le caractère le plus élevé

Résolu/Fermé
siamens_duj - Modifié par siamens_duj le 17/02/2016 à 09:01
 siamens_duj - 17 févr. 2016 à 13:23
Bonjour,

J'ai un programme où j'entre un nom de fichier dans une inputbox, par exemple UP-C-100089-1
Dans mon dossier, j'ai les fichiers UP-C-100089-1A, UP-C-100089-1B, UP-C-100089-1C et UP-C-100089-1D.
J'aimerais que mon programme ouvre le fichier avec la lettre la plus "élevée" soit ici UP-C-100089-1D.

Je vous joint un extrait de mon code :

 Dim file As String
Dim w As Integer

For w = 90 To 65 Step -1 'De Z à A en reculant de 1

file = Dir(Chemin & "*" & Chr(w) & ".docx")

Name = Left(NomDuFichier, 12) 'Name n'est pas composé du dernier caractère du nom du fichier

Do While file <> "" 'Faire tant que file n'est pas vide
'Si les 12 premiers caractères du nom d'un fichier est égal au 12 caractères du nom alors
If Len(file) - 6 = Len(Name) And Left(file, Len(file) - 6) = Name Then
GoTo suite

End If
file = Dir() 'Permet de passer au fichier suivant

Loop

suite:
Ofile = Right(file, 6) 'Selectionne les 6 derniers caracteres de file ex: ...A.docx
Pfile = Left(Ofile, 1) ' selectionne le premier caractere de Ofile soit la lettre

If w = 90 Then

Set appwd = CreateObject("Word.Application")

With appwd
.WordBasic.DisableAutoMacros 1 '0 pour activer
.Visible = True
'.Documents.Open Chemin
.Documents.Open Chemin & file
.Activate

End With

Range("I1").Value = ""

Exit For

Else
Pfile = Chr(w - 1)

Exit For

End If

Next w



J'avais déjà ouvert une discussion à propos de ce sujet mais mon code a changé et j'avais apparemment mal testé car si la dernière lettre de mon fichier est autre chose que Z alors il ouvre le fichier A ..

Merci pour votre aide.

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
17 févr. 2016 à 10:01
Bonjour,

Devrait aller:

Sub test()
    Dim file As String, memFile As String
    
    file = Dir(Chemin & "*" & Chr(w) & ".docx")
    Do While file <> "" 'Faire tant que file n'est pas vide
        If file > memNom Then
            memNom = file
        End If
        file = Dir() 'Permet de passer au fichier suivant
    Loop
    If memFile <> "" Then
        Set appwd = CreateObject("Word.Application")
        With appwd
            .WordBasic.DisableAutoMacros 1 '0 pour activer
            .Visible = True
            '.Documents.Open Chemin
            .Documents.Open Chemin & file
            .Activate
        End With
        Range("I1").Value = ""
    End If
End Sub
0
Merci pour votre réponse.
Cependant je ne saisie pas vraiment votre code.

Que sont NemFile et NemNom ?

Merci
0
Même si comme je viens de vous l'écrire je n'ai pas tout saisie,
j'ai corrigé mon code avec le votre et plus aucun document ne s'ouvre.
Sauriez vous pourquoi ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > siamens_duj
17 févr. 2016 à 13:02
Re,

Sauriez vous pourquoi ? Oui, j'ai melange votre code et le code test que j'ai utilise

Sub test()
    Dim file As String, memFile As String
    
    file = Dir(Chemin & "*" & Chr(w) & ".docx")
    Do While file <> "" 'Faire tant que file n'est pas vide
        If file > memFile Then
            memFile = file
        End If
        file = Dir() 'Permet de passer au fichier suivant
    Loop
    If memFile <> "" Then
        Set appwd = CreateObject("Word.Application")
        With appwd
            .WordBasic.DisableAutoMacros 1 '0 pour activer
            .Visible = True
            '.Documents.Open Chemin
            .Documents.Open Chemin & memFile
            .Activate
        End With
        Range("I1").Value = ""
    End If
End Sub
0
Merci beaucoup cela fonctionne !
0