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 :

Rapatriement de données d'un nombre de feuilles variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 25
    Par défaut Rapatriement de données d'un nombre de feuilles variable
    Bonjour

    Je fais des stats sur des questionnaires de satisfaction d'élèves après des formations. J'ai donc créé une feuille par formation, à l'aide d'un programme.
    Pour compléter ce programme, je voudrais avoir un aperçu global de toutes ces feuilles sur la première feuille (que j'ai nommée menu)
    Formellement, le programme devrait ressembler à ça :

    Pour n allant de 2 à "dernière feuille"
    B3 (Menu) = B3 (Menu) + B3 (feuille n)
    Suivant

    Avec B3 (feuille") correspondant à la cellule B3 de la feuille spécifiée entre les parenthèses
    n étant variable
    Le nom des feuilles est de la forme jj mois(en toutes lettres) aaaa

    Je n'arrive malheureusement pas à l'écrire en VBA

    Est-ce que qqn saurait m'aider?

    Merci

    Marc

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Un début de piste.

    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
     
     
    Sub test()
     
    Dim w As Integer
    Dim laFeuille As String
     
    'parcours des feuilles
    For w = 1 To ActiveWorkbook.Worksheets.Count
        If w.Name <> "MENU" Then 'Si la feuille n'est pas la feuille MENU alors
            laFeuille = w.Name 'Récuperation du nom de la feuille dans une variable
     
            Sheets("MENU").Range("B3") = Sheets("MENU").Range("B3") + Sheets(laFeuille).Range("B3")
     
        End If
    Next w
     
     
    End Sub

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 25
    Par défaut
    Merci.
    Excel ne reconnait cependant pas le w.Name...

    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
     
     
    Sub test()
     
    Dim w As Integer
    Dim laFeuille As String
     
    'parcours des feuilles
    For w = 1 To ActiveWorkbook.Worksheets.Count
        If w.Name <> "MENU" Then 'Si la feuille n'est pas la feuille MENU alors
            laFeuille = w.Name 'Récuperation du nom de la feuille dans une variable
     
            Sheets("MENU").Range("B3") = Sheets("MENU").Range("B3") + Sheets(laFeuille).Range("B3")
     
        End If
    Next w
     
     
    End Sub

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ah ben il est clair que sur un Integer....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim w As Integer
    If w.Name <> "MENU" Then

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour boucler sur les feuilles de calcul d'un classeur

    Exemple 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim f As Integer
     With ThisWorkbook
      For f = 1 To .Worksheets.Count
       MsgBox .Worksheets(f).Name
      Next
     End With
    Exemple 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim sht As Worksheet
     For Each sht In ThisWorkbook.Worksheets
      MsgBox sht.Name
     Next
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Oups... il faut mettre sheets (w).name

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut Différence entre la collection Sheets et WorkSheets
    Bonjour Goldstar,
    Oups... il faut mettre sheets (w).name
    Dans ta réponse (fil #2) tu utilises une boucle (ligne 9 de ta procédure) dont la fin est le nombre d'éléments dans la collection Worksheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'parcours des feuilles
    For w = 1 To ActiveWorkbook.Worksheets.Count
    il faut donc utiliser Worksheets(w).Name et pas Sheets(w).Name

    Il y a une différence entre la collection Sheets et WorkSheets
    Sheet est un objet représentant une feuille quelconque d'un classeur alors que Worksheet est une feuille de calcul.
    Ainsi si tu as cinq feuilles de calcul et une feuille graphique, Sheets.Count renverra 6 alors que Worksheets.Count renverra 5
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre averti
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 25
    Par défaut
    Merci pour votre aide.
    Finalisé, le code donne ceci

    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
     
    sub test ()
    Sheets("MENU").Range("J6") = ""
            Sheets("MENU").Range("J7") = ""
            Sheets("MENU").Range("J8") = ""
            Sheets("MENU").Range("J9") = ""
            Sheets("MENU").Range("J13") = ""
            Sheets("MENU").Range("J14") = ""
            Sheets("MENU").Range("J15") = ""
    For w = 1 To ActiveWorkbook.Worksheets.Count
        If Worksheets(w).Name <> "MENU" Then 'Si la feuille n'est pas la feuille MENU alors
            laFeuille = Worksheets(w).Name 'Récuperation du nom de la feuille dans une variable
     
            Sheets("MENU").Range("J6") = Sheets("MENU").Range("J6") + Sheets(laFeuille).Range("B18")
            Sheets("MENU").Range("J7") = Sheets("MENU").Range("J7") + Sheets(laFeuille).Range("B19")
            Sheets("MENU").Range("J8") = Sheets("MENU").Range("J8") + Sheets(laFeuille).Range("B20")
            Sheets("MENU").Range("J9") = Sheets("MENU").Range("J9") + Sheets(laFeuille).Range("B21")
            Sheets("MENU").Range("J13") = Sheets("MENU").Range("J13") + Sheets(laFeuille).Range("B25")
            Sheets("MENU").Range("J14") = Sheets("MENU").Range("J14") + Sheets(laFeuille).Range("B26")
            Sheets("MENU").Range("J15") = Sheets("MENU").Range("J15") + Sheets(laFeuille).Range("B27")
        End If
    Next w
     
    end sub

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a plus simple.
    Pourquoi effacer cellule par cellule alors que l'on peut gérer la plage complète.
    Exemple pour remplacer les lignes 3 à 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("MENU").Range("J6:J9,J13:J15") = ""
    et je préfère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("MENU").Range("J6:J9,J13:J15").ClearContents
    [EDIT]
    Je me pose la question de la raison d'effacer les valeurs de ces cellules alors que quelques lignes plus bas ont rempli ces mêmes cellules d'une nouvelle valeur.
    A moins de n'avoir rien compris, cette opération est donc inutile
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2010] Moyenne de colonnes d'un nombre de feuilles variables
    Par Piixx_e dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/12/2013, 09h15
  2. [XL-2007] Création nombre de feuilles variable
    Par revans dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 21/06/2012, 23h18
  3. Réponses: 1
    Dernier message: 15/06/2011, 09h57
  4. sélection de données comportant un nombre de lignes variables
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/06/2010, 15h37
  5. Réponses: 1
    Dernier message: 08/07/2009, 17h06

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