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

Résolu
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. 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
    1. Merci pour votre réponse.
      Cependant je ne saisie pas vraiment votre code.

      Que sont NemFile et NemNom ?

      Merci
    2. 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 ?
    3. @siamens_dujRe,

      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
    4. Merci beaucoup cela fonctionne !