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

      Que sont NemFile et NemNom ?

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