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 :

VBA-E comment exécuter un code sur un classeur complet?


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut VBA-E comment exécuter un code sur un classeur complet?
    Bonjour

    Je dois traiter plusieur fichiers Excel avec des fonctions de recherches de caractéres, de la concaténation et des calculs. Evidemment chaque classeur contient plusieurs feuilles à traiter. Et mes users ajoutent une feuille chaque mois....
    Donc avec un nom différent.

    Pour éviter de taper 10 000 lignes de codes, je voudrais savoir si il ya un moyen de traiter un classeur en une fois, sans lui spécifier le nom des feuilles?

    Ca m'éviterait de faire une fonction qui vient lire le nom de chaque feuille pour déterminer la derniére....

    A moins que je puisse uniquement traiter la derniére feuille en date?
    Mais ca non plus, je sais pas comment on fait.

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    tu peux parcourir toutes tes feuilles si tu veux en faisant une boucle, en faisant une sorte de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim i as integer
    dim f as worksheet
    for i = 1 to worksheets.count
    set f = worksheets(i)
    ---code a effectuer sur chaque feuille
    next i

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RelireToutesLesFeuilleDeTousLesClasseurs()
        For Each LeClasseur In Application.Workbooks
            If LCase(LeClasseur.Name) <> "perso.xls" Then
                For Each LaFeuille In Workbooks(NomClasseur).Worksheets
                    MsgBox LaFeuille.Name
                    With Workbooks(LeClasseur.Name).Worksheets(LaFeuille.Name)
                         MsgBox Cells(2, 1).Value
      '***** C'est là que tu mets ton code s'il est le même pour toutes les feuilles ***
                    End With
                Next LaFeuille
            End If
        Next LeClasseur
    End Sub
    Tu dis

    A+


    Profites-en pour ajouter le tag VBA-E et modifier ton entête, tous ceux qui posent des questions sont débutant en quelque chose

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par illight
    tu peux parcourir toutes tes feuilles si tu veux en faisant une boucle, en faisant une sorte de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim i as integer
    dim f as worksheet
    for i = 1 to worksheets.count
    set f = worksheets(i)
    ---code a effectuer sur chaque feuille
    next i

    en gros, à chaque tour de boucle, je me sers de f pour me positionner sur la bonne feuille? c'est ca que tu veux dire?

    parce qu'à la rigueur, si je peux directement récupérer la valeur de worksheets.count, mon problème est réglé.

    par contre, ce que j'ai du mal à comprendre c'est comment je vais pouvoir me servir de cette info....

    ets ce qu'un truc de ce genre la ca peut marcher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim i as integer
    dim f as worksheet
    dim v as string
    
    for i = 1 to worksheets.count
    set f = worksheets(i)
    ---code a effectuer sur chaque feuille
    v= worksheets(f).cells(1,3)
    next i

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ouskel'n'or
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub RelireToutesLesFeuilleDeTousLesClasseurs()
        For Each LeClasseur In Application.Workbooks
            If LCase(LeClasseur.Name) <> "perso.xls" Then
                For Each LaFeuille In Workbooks(NomClasseur).Worksheets
                    MsgBox LaFeuille.Name
                    With Workbooks(LeClasseur.Name).Worksheets(LaFeuille.Name)
                         MsgBox Cells(2, 1).Value
      '***** C'est là que tu mets ton code s'il est le même pour toutes les feuilles ***
                    End With
                Next LaFeuille
            End If
        Next LeClasseur
    End Sub
    Tu dis

    A+

    La j'avoue que j'ai pas tout compris.....
    c'est quoi ce perso.xls que tu compare?
    et les leclasseur, la feuille m'embrouille pas mal....

    dsl

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Illight, relis la question :
    Je dois traiter plusieur fichiers Excel avec des fonctions de recherches de caractéres, de la concaténation et des calculs. Evidemment chaque classeur contient plusieurs feuilles à traiter

  7. #7
    En attente de confirmation mail
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 121
    Points : 85
    Points
    85
    Par défaut
    djulegnome à écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim i as integer
    dim f as worksheet
    dim v as string
     
    for i = 1 to worksheets.count
    set f = worksheets(i)
    ---code a effectuer sur chaque feuille
    v= worksheets(f).cells(1,3)
    next i
    vu que f est déclarée comme worksheet, je pense que tu peux faire :

    maintenant je ne sais pas si se que tu as écris marche

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Le perso.xls, qu'on place dans \Program Files\Microsoft Office\Office\XlOuvrir\ est un fichier masqué dans lequel chaque utilisateur peut insérer des macros lui permettant de personnaliser "son" application Excel.
    Et comme il est masqué, si tu mets ce code, il est ignoré.
    Tu peux remplacer ça par une gestion d'erreur au cas où un fichier masqué serait ouvert, avec on error resume next puis if err = 0 then

    Tu dis

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    jimbololo, même conseil qu'à illight relis la question :
    Je dois traiter plusieur fichiers Excel avec des fonctions de recherches de caractéres, de la concaténation et des calculs. Evidemment chaque classeur contient plusieurs feuilles à traiter
    A+

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jimbololo
    vu que f est déclarée comme worksheet, je pense que tu peux faire :

    maintenant je ne sais pas si se que tu as écris marche

    du moment que la variable est déclarée correctement ca marche, reste à savoir si en utilisant f comme ca, ca fonctionne....

  11. #11
    En attente de confirmation mail
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 121
    Points : 85
    Points
    85
    Par défaut
    jimbololo, même conseil qu'à illight relis la question :
    je reprenais juste le code de djulegnome, mais c'est vrai que j'ais pas trop lu se qu'il voulait vraiment faire

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ouskel'n'or
    Le perso.xls, qu'on place dans \Program Files\Microsoft Office\Office\XlOuvrir\ est un fichier masqué dans lequel chaque utilisateur peut insérer des macros lui permettant de personnaliser "son" application Excel.
    Et comme il est masqué, si tu mets ce code, il est ignoré.
    Tu peux remplacer ça par une gestion d'erreur au cas où un fichier masqué serait ouvert, avec on error resume next puis if err = 0 then

    Tu dis

    je veux pas être désagréable mais j'ai toujours pas compris....
    J'ai pas de répertoire \Program Files\Microsoft Office\Office\XlOuvrir\
    ca commence mal pour que je vois de quoi tu veux parler...

    en même temps que j'écrivais ca, j'ai eu une illumination.
    ca y est j'ai compris ton test de perso.xls!!

    je vais bosser le reste maintenant.

    merki

    Ps: je met pas encore résolu parce que je suis pas sur...

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    c'est bon j'ai tout compris, j'ai testé et tout.
    c'est nikel, merki!

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

Discussions similaires

  1. comment excuter des codes matlab sur la carte dsp
    Par kadjuv dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/02/2010, 00h35
  2. Réponses: 12
    Dernier message: 09/06/2009, 10h26
  3. Comment exécuter du code VBA
    Par Alexandre` dans le forum VB.NET
    Réponses: 12
    Dernier message: 04/12/2007, 14h13
  4. Réponses: 5
    Dernier message: 08/01/2007, 21h03
  5. Réponses: 7
    Dernier message: 03/02/2005, 17h20

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