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 :

Rapatrier des fichiers par VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut Rapatrier des fichiers par VBA
    Imaginons que je crée un fichier, appelons le Alpha.xlsm.
    Je diffuse ce fichier auprès de mes utilisateurs, qui peuvent le dupliquer à l'infini, et l'enregistrer sous un autre nom.

    Quelle pourrait être le code VBA pour rapatrier en un seul clic tous les fichiers qui ont été créés à partir du fichier Alpha.xlsm?

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour,

    comment savoir qu'un classeur a été créé à partir d'un autre ?!

    Sans une présentation technique claire & exaustive …


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par victorzecat Voir le message
    Quelle pourrait être le code VBA pour rapatrier en un seul clic tous les fichiers qui ont été créés à partir du fichier Alpha.xlsm?
    Aucun puisque la duplication peut se faire sans utiliser Excel.

    Si en plus le nom a pu changer, la seule méthode serait de lancer une recherche globale sur tout ton réseau en scrutant chaque fichier et en vérifiant s'il ne contient pas une particularité propre au tien.

    Mais rien n'interdit de penser que les utilisateurs auraient pu modifier cette particularité.

    En bref, le seul conseil sensé qu'on puisse te donner : oublie cette idée.

    La seule fois où j'ai voulu faire un truc de ce genre, j'avais mis dans une macro protégée un test qui vérifiait la date du jour et qui, à une date données, sortait de la macro et affichait une TextBox indiquant une erreur interne et suggérant de passer me voir.
    Je te garantis que le jour donné, je ne m'attends pas à voir autant de personnes venir me consulter (j'ai même eu des appels de concurrents).
    Mais j'étais jeune et joueur. Je ne conseille pas cette méthode.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    sur ebay j'ai vu une fois un film en nylon a coller sur l'ecran pour voir a travers des fichiers excel je sais pas si on peut toujours le trouver


    non sans rire il y aussi la possibilité de jouer avec les properties fait une recherche

    allez par ce que j'ai bien rigolé
    http://silkyroad.developpez.com/VBA/...asseurs/#LII-A
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    J'ai déjà trouvé une autre solution, beaucoup plus simple, toutefois la demande faisant l'objet de mon post est intellectuellement intéressante, et pour le côté joueur j'aimerai trouver la méthode, même si - en pratique - ce n'est pas la solution la plus réaliste.

    Je ne clos pas encore le sujet, car il mérite d'être approfondi.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    il y aussi la possibilité de jouer avec les properties fait une recherche

    allez par ce que j'ai bien rigolé
    http://silkyroad.developpez.com/VBA/...asseurs/#LII-A
    ok merci pour l'info, c'est justement la piste que je recherchais sans pouvoir la nommer :
    Intégrer une forme de signature non visible dans le fichier "alpha" et identifier sur le réseau les fichiers qui ont cette signature.

    Si fichier = signature, alors copier coller fichier vers répertoire de rapatriement.

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    i
    dentifier sur le réseau les fichiers qui ont cette signature.

    Si fichier = signature, alors copier coller fichier vers répertoire de rapatriement.
    Rien que cela ! Sur certaines machines (en fait la plupart) tu auras le temps de prendre un bon repas pendant cette recherche ...
    Si par "rapatrier", tu entends remettre le fichier dans un dossier prédéfini et/ou sous un nom obligatoire prédéfini, il sera peut-être plus simple de forcer la main (par macro) dans ce sens à l'ouverture de chacun de ces fichiers (si pas dans le bon dossier et/ou pas avec le bon nom --->> un saveas de ton choix). Il te suffit de mémoriser où tu veux (u compris dans une cellule cachée d'une feuille) et comme tu l'entends le chemin du dossier et/ou le nom "forcé" du fichier
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tant qu'à y être, organise-toi pour que chaque fois qu'un fichier est créé le chemin d'accès soit ajouté à une vraie base de données comme ACCESS.

    (Je suis sûr qu'il y en a quelques uns qui vont comprendre l'ironie de la réponse.)

    Ou bien tu réfléchis 3 secondes et tu réalises que ton idée n'a pas d'allure et que Excel n'est pas Access Junior.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour clementmarcotte
    Je ne puis non plus m'empêcher de penser qu'un projet dont on accepte que les utilisateurs le "dupliquent à l'infini", "en modifient même le nom" est probablement un projet qui utilise toujours les mêmes données et n'est là que pour servir d'interface pour la gestion d'une ... base de données
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 38
    Points
    38
    Par défaut
    C'est exactement ça ! et la solution qui a préalablement été trouvée et appliquée est la remontée des infos saisies à chaque save (d'alpha ou rejeton), dans une feuille excel centralisée qui est une table liée à Access (Access sert surtout à sauvegarder les données par transfert des datas dans une table en dur)

    Maintenant comme je le disais l'histoire de repérer une forme de signature dans un fichier afin de le "rapatrier" c'est surtout pour la curiosité intellectuelle, le côté joueur.

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    bonjour
    a rester sur excel puisque visibleblement ce fichier est un interface je ferait que le fichier ne soit pas modifiable mais que le travail effectué avec par les utilisateur soit enregistrer sous un nom commun dumoins une partie

    du genre save as msjour & envrion("UserName").xlx et peut etre meme une date en abrégé
    ce qui nou donnerais des fichier du genre msjourthomas1916.xlx
    pourquoi xlx? parceque sans macro il sont plus facilement exploitable !!!

    de meme que pourquoi pas on pourrais meme aller plus loin dans ce raisonnement

    des l'utilisation du fichier base dans un pc une base xlx se créé et cette base se mettrais a jour a chaque utilisation du fichier par l'utilisateur
    autrement dit
    tu n'aurait plus qu'a chercher les fichier par "msjour*.xlx" ca reduirais aussi le moteur de recherche

    ouvre un classeur destiné a etre l'interface
    colle lui ca dans le module thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Environ("UserName") <> "polux" Then ' met le user de ton pc a la place de polux
    Cancel = True
     
        Sheets("travaux quotidiens").Copy
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Users\" & Environ("UserName") & "\Desktop\" & "msjour" & Environ("Username") & Format(Date, "dmyy") & ".xlsx", FileFormat:= _
            xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWindow.Close
    Application.DisplayAlerts = False
    Application.Quit
    End If
    End Sub
    voila si l'utilisateur fait enregistrer sous ou enrgistrer tout court le travail de la journé va s'enregistrer sous le nom formé avec l'user et date abrégée en xlx et l'interface se ferme
    quand tu reouvrira l'interface il est vierge les donné sont dans le xlx

    c'est quand meme un peu moins bourrin non!!!!!
    surtou qu'il t'es facile de rechercher tout les xlx dont le nom commence par "msjour"
    voila

    adit:
    j'ajouterais aussi que le format csv est tout indiqué dans cet exercice
    on pourrais ajouter aussi al'ouverture du fichier interface la récupération du csv de l'utilisateur pour le remetre dans un tableau de l'interface par exemple comme ca il peut ouvrir mille fois dans la journée
    il n'y aura qu'un seul "msjourthomas21013.xlx"
    et je dirais meme mieux
    en nommant ces fichiers comme cela ca te permetrais de recupérer un nom bien distinct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if dir("blablam\msjourthomas21016.xlx")<>"" then
    voila

    pour info :
    j'utilise cette methode pour mon application devisfacture depuis 6 ans deja et je n'ai jamais eu de soucis bien sur le nom de destination des xlsx sont créés avec les données client
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [Regexp] pattern pour trouver des fichiers par exclusion d'extension
    Par mnementh64 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 07/09/2006, 10h34
  2. Trier des fichiers par taille par le VB
    Par tedparker dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2006, 11h59
  3. ouvrire des fichiers par un boucle for
    Par stiko dans le forum C++
    Réponses: 5
    Dernier message: 08/07/2006, 15h14
  4. accès à des fichiers par une japplet
    Par gabest dans le forum Applets
    Réponses: 4
    Dernier message: 27/05/2006, 17h39
  5. Réponses: 1
    Dernier message: 14/02/2006, 00h40

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