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 :

macro automatique vba [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 13
    Par défaut macro automatique vba
    Bonjour,

    tout d'abord je suis assez novice en vba ! j'ai consulté beaucoup les forums qui sont très riches sur ce sujet mais je commence à bloquer sérieusement...

    voilà mon soucis

    j'ai un dossier répertoire ou s'enregistre des fichiers Excel quelconques toujours au même format, toujours même nombre de cellule et de ligne.

    J'ai récupéré une première macro qui récupère tout les fichiers qui s'ajoute dans ce répertoire pour les ajouter dans une feuille 1 d'un autre fichier fille : macro "extraction". A la fin il efface tout les fichiers mère de mon dossier répertoire.

    Une deuxième macro (répertoire) ajoute au kilomètre mes lignes récupérées de cette feuille dans une autre feuille du même fichier dès qu'une cellule vient à changer dans la feuille 1 (plus ou moins bancales...), les cellules de la feuille 1 sont ensuite effacées.

    je souhaite (car je ne sais pas si c'est vraiment possible) que mes macros fonctionnent l'une derrière l'autre dès qu'il y a un nouveau fichier type Excel detecté dans mon répertoire (puisque ceux qui sont traités sont supprimés). Et pourquoi pas avec ou sans bouton. C'est peut être un peu trop ambitieux...

    Pour cela j'imaginais exécuter un auto open avec une boucle loop.


    ce premier code tourne sans fin et le programme ne répond plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Auto_open()
     
    Do
    Dim gestionFichier As New Scripting.filesystemobject
    If gestionFichier.FilesExists("D:\Users\Desktop\repertoire\*.xls") = True Then
     call extraction
     call repertoire
    End If
     
    Loop
    End sub
    ce code là ne fait rien du tout... j'ai bien ajouté un module de classe pour la fonction recherche

    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
     
    Sub Auto_open()
     
    Do
    Dim MaRecherche As New Recherche
    MaRecherche.Analyse "D:\Users\Desktop\repertoire"
    For ctr = 1 To MaRecherche.ListeFichier.Count
    If Right(MaRecherche.ListeFichier(ctr), 3) = ".xls" Then
        call extraction
        call repertoire
    End If
    Next
    Set MaRecherche = Nothing
     
    Loop
     
    End Sub
    après je sais pas si il faudrait pas le faire avec un filtre sur les fichiers excel avec la fonction fileexists... mais je ne sais pas si on peut combiner ces fonctions...

    voilà en espérant avoir été assez clair et merci d'avance pour vos avis éclairés !
    A bientôt

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Tu dois attendre et permettre les évènements dans ton while (code 1).
    Résultat d'une recherche rapide : Voir ça http://excel.developpez.com/faq/?pag...orisationMacro

    A+

  3. #3
    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 candice27 Voir le message
    ce premier code tourne sans fin et le programme ne répond plus
    C'est normal puisque tu ne lui donnes pas de condition pour sortir de la boucle.
    Mais comme quasiment tous les éléments sont non standard, difficile de dire ce que tu devrais utiliser comme consition.

    Peut-être un simple :
    Mais c'est vraiment sans garantie.

    ce code là ne fait rien du tout... j'ai bien ajouté un module de classe pour la fonction recherche
    Là c'est pareil. Ne sachant pas vraiment ce que contiennent tes objets, difficile d'aider.

    Tu devrais quand même mettre un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print MaRecherche.ListeFichier.Count
    juste avant le For, pour voir si la boucle For a une chance de tourner.

    Cela dit, à nouveau, comme rien à l'intérieur de la boucle Do Loop ne lui dit dans elle doit s'arrêter, elle va tourner indéfiniment.

    Je n'ai pas compris ce que tu cherches à faire exactement, mais il semble que tu souhaites faire tourner deux routines sur chaque fichier d'un répertoire.
    Voici un bout de code qui peut t'inspirer. Il sert à faire un traitement sur tous les fichiers d'un répertoire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Fichier As String
    Fichier = Dir("D:\Users\Desktop\repertoire\*.xlsx")
    While Fichier <> ""
     
       ----- Ta procédure
     
        Fichier = Dir()
    Wend
    Cela dit, il faudrait que tu paramètre tes deux sous-routines pour pouvoir leur transmettre le nom du fichier à traiter.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    C'est normal puisque tu ne lui donnes pas de condition pour sortir de la boucle.

    Mais comme quasiment tous les éléments sont non standard, difficile de dire ce que tu devrais utiliser comme consition.
    la condition peut être l'adresse du fichier source et destinataire si on le déplace

    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
     Private Sub Workbook_Open()
     
    d_scrut = Feuil1.Cells(2, 3).Value
        d_archiv = Feuil1.Cells(3, 3).Value
    Do While Len(fichier) > 0 
    Workbooks.Open d_scrut & fichier
     
    Name d_scrut & fichier As d_archiv & fichier
    donnée_a_recup = Cells(2, 1).Value
     
     Workbooks(fichier).Close False
        Fichier = Dir()
    'le code
    loop
     
    end sub
    mais t'étais sur la piste. Ca marche si on deplace le fichier

    Citation Envoyé par Menhir Voir le message
    Cela dit, il faudrait que tu paramètre tes deux sous-routines pour pouvoir leur transmettre le nom du fichier à traiter.
    enfait il faut definir les mêmes paramètres entre les routines choses que je n'arrivais pas à faire mais c'est bon.

    Merci de votre aide bonne journée

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

Discussions similaires

  1. Macro Excel VBA : création automatique de 140 graphes/graphiques
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2007, 10h13
  2. [VBA-E] Macro automatique ouverture Excel
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/04/2006, 11h42
  3. execute une macro via vba sous access
    Par nes dans le forum Access
    Réponses: 4
    Dernier message: 28/03/2006, 23h15
  4. Réaliser une macro en VBA pour excel afin de créer un graphe
    Par xavier le breuil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 14h41
  5. Réponses: 4
    Dernier message: 19/05/2005, 11h51

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