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 pour glissade d'un tableau sur plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Macro pour glissade d'un tableau sur plusieurs feuilles
    Bonjour,

    Je vous voudrais de l'aide svp. Je ne suis pas un expert en macro pour me présenter.

    J'ai réçu de l'aide à créer un macro pour glissade d'un tableau (ie ajout automatique des jours sur un tableau excel) sur une feuille cela marche sans probème.

    Voici le macro:
    Dans module :
    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
    Sub Tableau_Ajout(Tableau As String)
     
    Dim y As Long, objListRows As Object, derdate As Date, Jour As Integer
     
        With ActiveSheet.ListObjects(Tableau)
            y = .ListRows.Count
            derdate = .ListRows(y).Range.Cells(1, 1).Value
            If derdate <> Date - 1 Then
                For Jour = 1 To Date - 1 - derdate
                    Set objListRows = .ListRows.Add
                    .ListRows(y + Jour).Range.Cells(1, 1).Value = derdate + Jour
                Next Jour
            End If
        End With
     
    End Sub
    Et dans workbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Open()
        For Each Tableau In Worksheets("Donnée").ListObjects
            Call Tableau_Ajout(Tableau.Name)
        Next Tableau
    End Sub

    Je voudrais maintenant l'exécuter sur quelques feuilles mais j'ai n'y arrive pas. Je voudrais quelqu'un m'aide svp.

    Voici comment j'essaye d'écrire sur workbook mais toujours bug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Workbook_Open()
     
    Application.ScreenUpdating = False
     
    Dim kWh As Worksheet
    For Each kWh In Worksheets
     
      If kWh.Name <> "kW ER1" And kWh.Name <> "kW ER2" And kWh.Name <> "kW ER3" And kWh.Name <> "Graph" And kWh.Name <> "Main Menu" And kWh.Name <> "Explanation" Then
         Call Tableau_Ajout(Tableau.Name)
      End If
    Next
    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Points : 79
    Points
    79
    Par défaut
    Et si dans ton nouveau code tu active la worksheet avant de relancer ta macro ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Application.ScreenUpdating = False
     
    Dim kWh As Worksheet
    For Each kWh In Worksheets
     
      If kWh.Name <> "kW ER1" And kWh.Name <> "kW ER2" And kWh.Name <> "kW ER3" And kWh.Name <> "Graph" And kWh.Name <> "Main Menu" And kWh.Name <> "Explanation" Then
         kWh.activate
         Call Tableau_Ajout(Tableau.Name)
      End If
    Next

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Workbook_Open()
     
    Application.ScreenUpdating = False
     
    Dim kWh As Worksheet
    For Each kWh In Worksheets
     
      If kWh.Name <> "kW ER1" And kWh.Name <> "kW ER2" And kWh.Name <> "kW ER3" And kWh.Name <> "Graph" And kWh.Name <> "Main Menu" And kWh.Name <> "Explanation" Then
         Call Tableau_Ajout(Tableau.Name)
      End If
    Next
    Application.ScreenUpdating = False --> n'oublie pas à la fin Application.ScreenUpdating = True

    Call Tableau_Ajout(Tableau.Name) --> Tableau.Name = quoi ?

    c'est quoi le but de If kWh.Name <> "kW ER1" And .... ?
    si tu cible un seul onglet alors active cet onglet
    ou ajoute un paramètre OngletName as String dans Sub Tableau_Ajout(Tableau As String) --> Sub Tableau_Ajout(Tableau As String,OngletName as String)

    la solution de "Limace_hurlante" --> kWh.activate --> active tous les autres onglets qui ne sont pas dans la liste des "<>" et le dernier sera toujours activé

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci JP pour ta réponse.

    Call Tableau_Ajout(Tableau.Name) --> Tableau.Name , c'est pour appeler le macro tableau_ajout à s'exécuter sur une feuille donnée.
    If kWh.Name <> "kW ER1" And ... c'est pour éviter que ledit macro s'exécuter sur les feuilles que je cite.

    Mais je n'arrive pas à exécuter.
    J'ai toujours un bug.

    Le principe est que mon macro d'ajout automatique des jours puisse s'exécuter sur les feuilles que j'ai mis des tableau, il n'ya que quatre alors que dans le fichier j'ai plus de 10 feuille

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Thanks
    en faisant cela je lebug ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Tableau_Ajout(Tableau.Name)

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur amateur VBA Excel
    Inscrit en
    Janvier 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur amateur VBA Excel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 69
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par mjpmjp
    la solution de "Limace_hurlante" --> kWh.activate --> active tous les autres onglets qui ne sont pas dans la liste des "<>" et le dernier sera toujours activé
    Oui je pensait utiliser le fait que dans sa macro Tableau_Ajout il y à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.ListObjects(Tableau)
    pour ne pas finir sur la derière feuille on peux aussi modifier comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
    Dim FeuilleDejaOuverte As Worksheet
    Set FeuilleDejaOuverte = ActiveSheet
        For Each Tableau In Worksheets("Donnée").ListObjects
            Call Tableau_Ajout(Tableau.Name)
        Next Tableau
    FeuilleDejaOuverte.Activate
    End Sub
    C'est bête ?

  7. #7
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Je voudrais maintenant l'exécuter sur quelques feuilles mais j'ai n'y arrive pas. Je voudrais quelqu'un m'aide svp.
    Testes ceci en ayant au préalable inscris les noms des feuilles cible dans l'Array() (donc, différents des "kW ER1", "kW ER2", "kW ER3", etc...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Workbook_Open()
     
        Dim Fe As Worksheet
        Dim Tableau As ListObject
     
        'ici, tu inscris les noms des feuilles cible
        For Each Fe In Worksheets(Array("Feuil1", "Feuil4", "Feuil6"))
     
            For Each Tableau In Fe.ListObjects: Tableau_Ajout Tableau.Name: Next Tableau
     
        Next Fe
     
    End Sub

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

Discussions similaires

  1. [XL-2010] macro pour ouvrir des fichiers TXT sur plusieurs onglets
    Par dafchap dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/04/2016, 20h16
  2. Macro pour masquer des lignes vides sur plusieurs feuillés.
    Par baloote69 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 03/11/2015, 11h38
  3. [XL-2007] transfert d'un tableau sur plusieurs feuilles
    Par cindy6311 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 21/08/2009, 13h35
  4. [JSP]affichage d'un tableau sur plusieurs pages
    Par MAJIK_ENIS dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2005, 11h21
  5. [CR8] Problème tableau sur plusieurs pages???
    Par christophe28 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/11/2004, 15h46

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