none
Ouvrir un fichier Exel dont le nom fini par une date RRS feed

  • Question

  • Bonjour, j'ai un petit soucis que je n'arrive pas à comprendre:

    J'ai des fichiers Excel dont le nom comporte une date du type :  "Test décembre 2015" et l'extention du fichier est soit "xlsx" ou "xlsm"

    J'ai deux codes qui me paraissent identique dans la manière de rechercher les fichiers mais l'un fonctionne parfaitement et l'autre me dit que le fichier est introuvable.

    Voici le code qui fonctionne :

    Process.Start("C:\Dropbox\Abattoirs des Crêts\Gestion des stocks\STOCKS JOURNALIERS\STOCKS MENSUEL ABATTOIRS\Stock mensuel " & Date.Now.ToString("MMMM-yyyy") & ".xlsm")

    et le code qui ne marche pas :

       Private Sub Cong_Click(sender As Object, e As RoutedEventArgs)
            Dim open As String = ("Z:\POINTAGES ABATTOIRS 2016\POINTAGES 2016\Congélation " & Date.Now.ToString("MMMM yyyy") & ".xlsm")
            If Not File.Exists(open) Then
                Dim mess = MsgBox("Le fichier spécifié est introuvable,voulez-vous ouvrir le dossier source?", vbOKCancel, "Confirmer")
                If mess = MsgBoxResult.Ok Then
                    Process.Start("Z:\POINTAGES ABATTOIRS 2016\POINTAGES 2016")
                    If mess = MsgBoxResult.Cancel Then
                        Return
                    Else
                        If File.Exists(open) Then
                            Process.Start(open)
                        End If
                    End If
                End If
            End If
        End Sub


    JF Collombet ® CreateSpecificCulture

    lundi 4 janvier 2016 15:05

Réponses

Toutes les réponses

  • Dans le code que vous fournissez il y a une différence d'un "-"...

    Date.Now.ToString("MMMM-yyyy")

    et

    Date.Now.ToString("MMMM yyyy") 

    Est-ce que cela est compatible avec vos noms de fichier?


    Cyrille Precetti
    Bonne Année! Happy New Year!



    lundi 4 janvier 2016 15:39
  • Oui dans un cas le nom de fichier est "...décembre-2015" et dans l'autre c'est "...décembre 2015"

    donc dans le cas 1 le fichier est trouvé est s'ouvre mais pas dans le cas 2


    JF Collombet ® CreateSpecificCulture

    lundi 4 janvier 2016 15:56
  • Je ne sais pas comment vous faite mais en exécutant  Date.Now.ToString("MMMM yyyy") vous allez obtenir "janvier 2016" et jamais plus décembre 2015...

    De plus dans votre code l'appel à Process.start n'est fait que si le fichier n’existe pas...


    Cyrille Precetti
    Bonne Année! Happy New Year!


    lundi 4 janvier 2016 16:26
  • Oui excusez moi j'ai marqué décembre mais c'est juste pour exemple.

    N'en reste pas moins que dans un cas mon fichier s'ouvre et que dans l'autre non


    JF Collombet ® CreateSpecificCulture

    lundi 4 janvier 2016 16:29
  • Dans votre code, le MessageBox demande qqchose et si c'est ok vous faites:

    Process.Start("Z:\POINTAGES ABATTOIRS 2016\POINTAGES 2016")

    Il n'y a rien à démarrer dans cette ligne, c'est l'adresse d'un dossier et non d'un fichier.

    La structure de vos If...Then...Else est déroutante:

    lorsque vous cliquez msgbox.Ok vous n'aurez jamais 'mess = MsgBoxResult.Cancel ' et lancerez immédiatement

    If File.Exists(open) Then
     Process.Start(open)
     End If

    qui n'existe pas à cause du premier test.

    Nettoyez la logique comme ceci peut être:

    If File.Exists(NomFichier) = False Then
                Dim mess = MsgBox("Le fichier spécifié est introuvable,voulez-vous ouvrir le dossier source?", vbOKCancel, "Confirmer")
                If mess = MsgBoxResult.Ok Then
                    'Ouverture de dossier...
                    Process.Start(Application.StartupPath)
                ElseIf mess = MsgBoxResult.Cancel Then
                    Exit Sub
                    'Le dossier est ouvert l'utilisateur peut faire ce qu'il faut dans Explorer....
                End If
            End If


    Cyrille Precetti
    Bonne Année! Happy New Year!



    lundi 4 janvier 2016 16:31
  • Je ne comprends pas bien votre problème. Sous "Z:\POINTAGES ABATTOIRS 2016\POINTAGES 2016\", le fichier que vous voulez ouvrir n'existe pas (puisque le code rentre dans le If). Essayez de voir la valeur de la variable "open" en mode debug et vérifiez qu'elle corresponde à un fichier existant.
    lundi 4 janvier 2016 16:32
  • Je viens de penser à autre chose ,

    C:\  est bien sur le disque dur de mon PC

    Z:\   est quant à lui un lecteur réseau de mon entreprise

    est-ce que cela peut avoir une importance?


    JF Collombet ® CreateSpecificCulture

    lundi 4 janvier 2016 16:43
  • Oui. Si votre application n'a pas les droits suffisants, File.Exists retourne false. Aucune exception n'est levée.
    lundi 4 janvier 2016 16:48
  • Si vous avez les droits cela ne devrait pas avoir d'importance.

    Avez-vous revu la logique de votre Sub?


    Cyrille Precetti
    Bonne Année! Happy New Year!

    lundi 4 janvier 2016 16:49