IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

vérifier si un fichier est vide [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut vérifier si un fichier est vide
    Bonjour à tous, je m'adresse à vous pour une petite aide car ce forum m'a jamais déçus.
    je souhaite supprimer un fichier si il est vide , finalement après beaucoup de tentations j'ai pu faire une petite macro simple mais le problème c'est que mon fichier il est vide malgré ça il m'affiche le message " le fichier contient des données "
    pourriez vous m'aider s'il vous plait ci dessous le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Function FchierEstVide()
    Dim res, LePath As String
     
    LePath = Dir("P:\Mercure\CONTENTIEUX OUTILS\PROG CREATION SMS\SMS NON ENVOYES DU " & Format(Now(), "dd mm yy") & ".xlsx")
    res = FileLen("P:\Mercure\CONTENTIEUX OUTILS\PROG CREATION SMS\SMS NON ENVOYES DU " & Format(Now(), "dd mm yy") & ".xlsx")
     
    If res = 0 Then
            Do While LePath <> ""
                Kill "P:\Mercure\CONTENTIEUX OUTILS\PROG CREATION SMS\" & LePath
                LePath = Dir
            Loop
        MsgBox ("fichier supprmé")
    Else
        MsgBox ("fichier pas vide")
    End If
     
    End Function
    Merci par avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Un fichier Excel ne peut pas être totalement vide au sens File System (taille de fichier 0). Il n'y a que les fichiers texte qui peuvent l'être.
    Même s'il ne contient pas de données (classeur vierge), il contient beaucoup d'autres informations de structure et d'options.

    Pour savoir si un fichier est vide au sens Excel (pas de données), il faut l'ouvrir et compter les cellules non vides.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut vérifier si un fichier est vide
    Citation Envoyé par Menhir Voir le message
    Un fichier Excel ne peut pas être totalement vide au sens File System (taille de fichier 0). Il n'y a que les fichiers texte qui peuvent l'être.
    Même s'il ne contient pas de données (classeur vierge), il contient beaucoup d'autres informations de structure et d'options.

    Pour savoir si un fichier est vide au sens Excel (pas de données), il faut l'ouvrir et compter les cellules non vides.
    Merci pour votre réponse rapide ,
    oui j'ai bien compris, j'ai déjà tombé sur une discussion qui traite comme ce genre de situation voici le lien https://www.developpez.net/forums/d9...e/#post5363109
    je l'ai testé mais le problème qu'elle traite que les feuilles pas les classeurs.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par slakhdine Voir le message
    je l'ai testé mais le problème qu'elle traite que les feuilles pas les classeurs.
    Il suffit de faire une boucle sur la collection Worksheets (au pluriel) du classeur.

    Il y a autre chose qui me semble anormal dans ton code de départ, c'est que c'est une Function.
    Une Function est faire pour renvoyer une valeur, pas pour réaliser une action.

    Il y a aussi ta boucle While qui est suspect.
    Ton Dir étant fait sur un fichier unique (pas d'alias dans la désignation), je ne vois pas l'intérêt de faire une boucles pour chercher d'autres fichiers dans le même répertoire avec le même nom.
    Et même dans l'éventualité où plusieurs fichiers seraient trouvés, ça voudrait dire que le code teste si le premier fichier est vide et, si c'est le cas, supprime tous les autres ???

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 107
    Par défaut vérifier si un fichier est vide
    Citation Envoyé par Menhir Voir le message
    Il suffit de faire une boucle sur la collection Worksheets (au pluriel) du classeur.

    Il y a autre chose qui me semble anormal dans ton code de départ, c'est que c'est une Function.
    Une Function est faire pour renvoyer une valeur, pas pour réaliser une action.

    Il y a aussi ta boucle While qui est suspect.
    En gros, dans ton code, tu testes si le premier fichier est vide et, si c'est le cas, tu supprimes tous les autres ???
    je ne vois pas comment franchement , c'est possible de me le précisé svp , désolé si je vais t’embêter
    en fait j'ai fat une fonction parce que mon programme s’exécute avec un ensemble de macros en même temps avec " call "
    oui je veux le supprimer si il est vide .

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par slakhdine Voir le message
    je ne vois pas comment franchement
    5 min entre ma réponse et la tienne.
    C'est sûr que si tu ne cherches pas, tu ne risques pas de trouver.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Vérifier si une ligne est vide dans un fichier texte avec bash
    Par david633 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 26/04/2017, 21h16
  2. Tester si un fichier est vide ?
    Par stepd dans le forum Réseau
    Réponses: 15
    Dernier message: 27/07/2006, 19h04
  3. [Tableaux] Vérifier si un champ est vide !
    Par Tr@nkill dans le forum Langage
    Réponses: 9
    Dernier message: 16/05/2006, 16h11
  4. Ksh - tester si un fichier est vide ou pas?
    Par mzt.insat dans le forum Linux
    Réponses: 1
    Dernier message: 25/04/2006, 14h22
  5. Réponses: 4
    Dernier message: 18/01/2006, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo