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

Résolu
siamens_duj -  
 siamens_duj -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. siamens_duj
       
      Merci pour votre réponse.
      Cependant je ne saisie pas vraiment votre code.

      Que sont NemFile et NemNom ?

      Merci
      0
    2. siamens_duj
       
      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
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > siamens_duj
         
        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
    3. siamens_duj
       
      Merci beaucoup cela fonctionne !
      0