Test de Verification existence d'un fichier sur un HD [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
lundi 24 juin 2019
Statut
Membre
Dernière intervention
25 avril 2021
-
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
-
Bonjour,
Dans un formulaire de saisie je donne le nom d'un Oiseau ( ex.Merle )
Dans la procédure qui est initiée par le clic sur un bouton " voir la photo de l'Oiseau " je donne la précision suivante :

Private Sub VOIR_PHOTO_Click(sender As System.Object, e As System.EventArgs) Handles VOIR_PHOTO.Click
        <ital>  '         LE CHEMIN DU DOSSIER OU SONT STOCKÉES LES photos DES OISEAUX</ital>
          LE_HD = "D:\LES_OISEAUX\"
          IDENTIFIE = TX_NOM_OI.Text & ".jpg"
        <ital>  '         CONTRÔLE D'EXISTANCE DE L'OISEAU IDENTIFIÉ</ital>
MsgBox("Le nom complet du fichier à trouver dans " & vbLf & " le dossier du HD est : " & LE_HD & IDENTIFIE)

---------------------------------------------------------------------------

Ici je n'arrive pas écrire correctement le code pour teste de si la photos existe ou pas

---------------------------------------------------------------------------

Ce ci après affiche la photo si elle existe
MsgBox("Le  fichier Existe : " & IDENTIFIE)
                    AFFICHE_IMAGE.VUE_IMAGE_OISEAU.Image = System.Drawing.Bitmap.FromFile(LE_HD & TX_NOM_OI.Text & ".jpg")

                    AFFICHE_IMAGE.TX_NOM_IMAGE.Text = TX_NOM_OI.Text
                    '   MsgBox("Nom de l'oiseau à afficher est : " & TX_NOM_OI.Text)

                    AFFICHE_IMAGE.Show()
Si elle n'existe pas ( ou le nom de l'oiseau  est mal orthographié ) il doit afficher
  MsgBox("l'Oiseau non trouvé est bien " & PAS_TROUVE)
                     AFFICHE_IMAGE.Show()
                    LBL_INFO_RIEN1.Visible = True
                    PAS_TROUVE.Visible = True
                    PAS_TROUVE.Show()


Comment écrire le IF THEN ELSE END IF

Un ptit coup de pouce sera le bienvenu

Grand merci pour vos réponses à lire
Amicalement
Luc

2 réponses

Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
bonjour, moi j'essaierais ainsi:
dim lenomdufichier as string
lenomdufichier = LE_HD & TX_NOM_OI.Text & ".jpg"
if dir(lenomdufichier) = "" then
    ' fichier absent
else
    ' fichier présent
end if
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
9
Date d'inscription
lundi 24 juin 2019
Statut
Membre
Dernière intervention
25 avril 2021

Bonjour,
Avec un peu de retard je prends le clavier afin de vous remercier pour votre aide, de retour d'un petit séjour en Alsace, je découvre ce jour votre réponse.
L'âge et quelques séquelles de mon récent AVC sont probablement la cause de cette défaillance à me concentrer sur l'essentiel, en effet je faisait compliqué alors que la solution était on ne peut plus simple.
Grâce à votre aide, j'obtiens bien maintenant ce contrôle d'existence du fichier solliciter.
Permettez moi de vous solliciter à nouveau pour une remise sur Rail ou solution à un second souci que je rencontre. Voici de quoi il est question.
Je lance le projet qui m'affiche un formulaire de saisie dans lequel le champ de saisie Nom de l'oiseau est lié à la variable TX_NOM_OI.
En bas du formulaire j'ai un Bouton qui une fois sollicité me permet d'afficher la Photo de l'oiseau dans une nouvelle fenêtre (Jusqu'ici tout est OK )
Cette nouvelle fenêtre possède également un bouton qui doit ouvrir une seconde fenêtre pour pouvoir visualiser La Fiche d'identification et caractéristique de l'oiseau. ( C'est à ce niveau que cela me pose souci )
Dans le Premier formulaire TX_NOM_OI est donc assimilé à MERLE lorsque je clique sur voir la Photo, la Variable NOM_FICHE prends la valeur texte de TX_NOM_OI ( Merle ) via un MsgBox je vérifie et c'est OK, Mais lorsque je sollicite la vue de la fiche cette Variable NOM_FICHE est vide et ne me permet pas de continuer et d'avoir accès à la dite fiche.
Je précise que j'ai essayé de dimensionné en Dim NOM_FICHE As String ou encore Public..... Mais rien n'y fait.
A mon avis je ne formate pas correctement la variable ou alors cela n'est pas exécuté au bon endroit.

Si vous estimé que la réponse ne fera pas bon ménage avec le forum, Voici mon adresse courriel :
Adresse mail supprimée Modération CCM
Encore Merci
Amicalement
Luc (77 ans et débutant avec VB Net )
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867 >
Messages postés
9
Date d'inscription
lundi 24 juin 2019
Statut
Membre
Dernière intervention
25 avril 2021

en général, il est préférable d'ouvrir un nouveau sujet pour une nouvelle question indépendante.
il est découragé de montrer son adresse email ou de donner des informations personnelles dans les messages.
pour en venir au fond. il y a sans doute moyen de récupérer le contenu d'un champ du premier formulaire à partir du deuxième. (ce serait plus simple si tu donnais un nom à chaque formulaire)
cependant, je pense qu'une variable bien déclarée devrait également convenir. essayons donc de trouver ce qui ne va pas avec la variable NOM_FICHE. deux choses me viennent en tête:
- as-tu bien ajouté "option explicit" au début de chaque module de code
- n'as-tu déclaré (avec dim) qu'une seule fois la variable NOM_FICHE?
Messages postés
9
Date d'inscription
lundi 24 juin 2019
Statut
Membre
Dernière intervention
25 avril 2021

Bonjour,
En premier je prends bonne note de vos remarques soit ouvrir un nouveau sujet et ne pas donner son adresse perso. donc Mea Culpa Méa maxima...........
Pour Info mes deux formulaires sont Nommés: le premier celui qui affiche la photo est donc identifié par le nom : AFFICHE_IMAGE
Le second formulaire qui est donc appelé par le clic sur le Bouton Voir_Fiche qui se trouve sur le Formulaire AFFICHE_IMAGE est quant à lui nommé AFFICHE_FICHE.
Je vais donc reconsidéré mon approche sur cette phase de Vue sur la fiche identificatrice de l'oiseau affiché dans le formulaire AFFICHE_IMAGE

Pour rappel j'utilise donc Visual Basic Express 2010 et je n'ai vraiment aucune idée quant à savoir si c'est VBA, VB6 ou .NET mais ce que je peux vous dire c'est que votre réponse sur comment vérifier l'existence.......
L'option proposée soit " IF Dir(chemin du fichier ) then " fonctionne 100% ok
Par contre la solution suggéré par soit If File.Exists(chemin du fichier) then, lui il Bug et le mot file est souligné rouge qui en le sollicitant m'informe que ' File n'est pas déclaré. il peut être......... ' alors qu'avec Dir tout est Ok.

Merci
Luc
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
708
Bonjour
Voici un petit tuto sur différentes façons de passer des informations entre forms
https://codes-sources.commentcamarche.net/faq/11107-interactions-entre-form-en-net-c-et-vb-net

Je me permets une remarque sur la solution proposée par yg_be (que je salue).
Ce n’est pas du vb.net, c’est du Vb6 ou du vba. Comme tu n’as pas précisé yg_be n’a pas forcément fait attention.

Cela fonctionne car Microsoft tolère certaines instructions de vb6 dans vb.net. Cependant vb.net est un langage tout objet, alors que vb6 était orienté objet. Et de fait mélanger torchons et serviettes n’est pas la meilleure façon de bien apprendre à utiliser les torchons.
Et puis il y a quelques cas, rares, où ça buggue de façon assez incompréhensible, donc très difficile à détecter.

En .net pour vérifier l’existence d’un fichier, il faut utiliser la classe File et sa méthode Exists
If File.Exists(“chemin du fichier”) then


Si tu veux plus d’informations sur les différences entre vb6 et vb.net, tu peux lire ce petit article https://codes-sources.commentcamarche.net/faq/11151-pourquoi-mon-code-vb6-vba-ne-marche-pas-en-vb-net
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
merci de la clarification et des infos, je n'avais effectivement pas fait attention.
par ailleurs, en Belgique, nous appelons "torchon" une serpillière, et "essuie de vaisselle" un torchon. ce qui fait que nous avons peu de chance de mélanger nos torchons et nos serviettes, :-)
Messages postés
16017
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juin 2021
867
@Whismeril
(ne parvenant pas à t'envover un message privé)
vers la fin de ton article intéressant comparant vb à vb.net, tu écris
"Quand on revient à VB.Net, on ne fait plus de mélange."

moi je lirais plutôt, soit:
Quand on revient à VB, on ne fait plus de mélange.
soit
Quand on va vers VB.Net, on ne fait plus de mélange.
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
708
Mon wallon est un peu rouillé, il y plus de 25 ans que j’ai quitté la frontière Lorraine pour le sud ouest ;)

Pour ta remarque sur l’article, comme au départ je le destinais à des codeurs de vb6/vba qui se lançaient avec plus ou moins de réussite dans .net, y’avait comme une idée de détour par c#, puis d’un éventuel retour à VB.Net. Mais ta proposition est plus générale, ce qui est mieux.
Je ne ferais pas la correction tout de suite, je n’ai pas accès à un ordinateur pour le moment.

Bonne soirée
Messages postés
9
Date d'inscription
lundi 24 juin 2019
Statut
Membre
Dernière intervention
25 avril 2021

Bonjour,
Pour info " Grand débutant " j'utilise donc Visual Basic Express 2010 et je n'ai vraiment aucune idée quant à savoir si c'est VBA, VB6 ou .NET.
Je viens de tester la suggestion utiliser " If File.Exists(“chemin du fichier”) then " cela ne marche pas après avoir remplacer mon If Dir () par votre If File.Exists( ) le mot File est souligné d'un petit rectangle rouge qui une fois cliqué m'informe que ' File n'est pas déclaré. il peut être......... '
Néanmoins Merci pour votre intérêt à ma demande
Amicalement
Luc
Messages postés
16032
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 juin 2021
708
Visual Basic Express 2010 est l’environnement de développement pour le langage VB.Net.

Pour avoir accès à une classe, il faut importer son espace de nom dans ton code. Certains sont inclus par défaut et d’autres non.
Quand il manque un espace de nom, en faisant click droit sur le mot clé souligné VB te propose la solution à appliquer. Pour 2010, je ne sais plus comment cela se présente.

Si tu veux résoudre à la main, dans ce cas, il faut ajouter
Import System.IO
tout en haut de ton fichier de code.