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 compilation excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par le petit excelleur Voir le message
    [...]

    WkName = Dir(Path & "S*.xlsx")

    Ce qui voudra dire tous les fichiers qui commence par un S, nous sommes bien d'accord ?[...]
    Oui, n'oublie pas le \ si tu ne l'as pas mis dans la variable Path...

    N'oublie pas que tu peux démarrer la macro avec F8 (losque le curseur d'édition est dans la macro) pour l'exécuter en pas à pas. Tu peux alors vérifier tes variables, notamment les variables locales en affichant la fenêtre idoine (Menu Affichage/Fenêtre variables locales).

    La ligne jaune n'a pas encore été exécutée. Sur l'illustration ci-dessous, tu peux voir la fenêtre des variables locales après l'attribution du nom du fichier récupéré par DIR à la variable WkName. Tu comprends ainsi que tu dois recomposer le nom complet avec son chemin en concaténant le path et le nom de fichier, sans oublier le \ entre les deux...

    Nom : 2017-04-03_214507.png
Affichages : 238
Taille : 82,4 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 46
    Par défaut
    Oui je me sert du pas à pas quand j'exécute la macro pour voir si il n'y a pas d bug par endroit.

    Oui donc ça sera plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WkName = Dir(Path & "\S*.xlsx")
    Tel que ça ça devrait fonctionner !!!

    Allez je t'ai assez embêté pour ce soir je pense, bonne soirée à toi

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pas de soucis... Il n'y a pas d'embêtement, sinon je ne répondrais pas.

    J'espère que ça va fonctionner.

    Bonne soirée également
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 46
    Par défaut
    Salut Pierre, et les autres membres de la communauté,

    Alors, j'ai bien testé ta macro hier soir.
    Or comme lors de mes précédents test, je nai pas de message d'erreur mais rien ne fonctionne.

    J'ai copié la macro tel que tu me l'as donné en changeant les éléments suivants :

    ShName = "export"
    SourceRangeAddress = "A2:G15"
    Path = "D:\Users\Documents\testexport"
    Set TargetRange = Range("A2")

    Or rien ne se passe, je ne comprends pas trop ce que je rate car il me semble pourtant avoir fait toutes les modifs...

    Si quelqu'un à une idée maintenant que je m’approche du but

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Peux-tu donner le code de la macro utilisée?

    L'as-tu bien testée en pas à pas? => regarde après chaque ligne exécutée si ce qu'elle est censée réalisé a bien été effectué.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2016
    Messages : 46
    Par défaut
    Bonjour Pierre,

    Oui je l'ai testé en pas à pas et je ne trouve pas le problème en fait c'est d'ailleurs ce qui m'étonnes un peu...

    Le code est ci-dessous :
    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
    19
    20
    21
    22
    23
    24
    25
     
    Sub CopyWorkbooks()
      Dim Path As String ' Nom complet, racine comprise, du chemin des fichiers à scanner
      Dim ShName As String ' Nom de la feuille source dont il faut copier les données. Doit être Identique dans tous les classeurs source
      Dim SourceRangeAddress As String ' Adresse de la plage à copier. Doit être identique sur toutes les feuilles source
      Dim SourceRange As Range ' sera utilisé pour définir la plage source à copier
      Dim SourceWk As Workbook ' Objet qui pointera vers chaque classeur source dans la boucle
      Dim TargetRange As Range ' Adresse de la première cellule de la plage d'arrivée. Sera recalculée à chaque boucle
      Dim WkName As String ' Nom du classeur source à ouvrir. Sera redéfini à chaque boucle
     
      ShName = "export" ' Nom de la feuille source qui contient les données. IDENTIQUE pour tous les classeurs source
      SourceRangeAddress = "A2:G15" ' Plage à copier dans le classeur source. IDENTIQUE à chaque classeur source
      Path = "D:\Users\Documents\testexport" ' Nom complet du dossier, sans \
      Set TargetRange = Range("A2") ' Première plage de collage. Sera "offsetée" en fonction des données copiées à chaque boucle
      WkName = Dir(Path & "\S*.xlsx") ' Nom du premier classeur trouvé dans le dossier source
      Do While WkName <> "" ' Boucle tant qu'il y a un fichier non traité dans le dossier. DIR "épuise" les fichiers correspondant au pattern
        Set SourceWk = Workbooks.Open(Path & "\" & WkName) 'Ouverture du fichier source et attribution du fichier à SourceWk
        ThisWorkbook.Activate ' Activation du classeur de traitement (celui qui contient la macro) et, a priori, les plages d'arrivée
        Set SourceRange = SourceWk.Worksheets(ShName).Range(SourceRangeAddress) ' Instanciation de la plage source
        SourceRange.Copy TargetRange ' Copie de la plage source sur la plage d'arrivée, définie plus haut pas son coin supérieur gauche
        Set TargetRange = TargetRange.Offset(SourceRange.Rows.Count) ' Recalcul du nouveau coin supérieur gauche pour la prochaine copie (décalage du nombre de lignes copiées)
        SourceWk.Close savechanges:=False ' Fermeture du classeur d'origine sans sauvegarde
        WkName = Dir() ' Recherhce du nom du classeur suivant. Si DIR est passé sur tous les classeurs, renvoie "" pour sortir de la boucle
      Loop ' Boucle
    End Sub
    Pierre,

    En fait après avoir refait le F8, rien ne semble poser problème dans la première feuille.
    Dès que j'arrive à la seconde feuille au niveau de SET SourceRange

    il apparaît : "erreur d’exécution '9': L'indice n'appartient pas à la sélection.

    Si tu veux je peux t'envoyer plus pour que tu comprennes je ne sais pas ce qui pourrait t'aider car honnêtement je suis un peu à court là...

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Tu es sûr que la structure des tes fichiers source est bonne?

    Tu as bien dans chaque fichier source une feuille qui porte le nom que tu as donné à shName?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Graphe et Macro et Excel et VBA
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 18/11/2005, 17h24
  2. Activation des macros sous Excel
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2005, 11h44
  3. macro sous excel
    Par julien13200 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2005, 15h49
  4. Macro dans excel permettant de voir si un fichier est ouvert
    Par VirginieGE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2004, 07h51
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

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