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 :

Sélectionner une feuille avec variable


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
    Contrôleur de gestion
    Inscrit en
    Avril 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 30
    Par défaut Sélectionner une feuille avec variable
    Bonjour,

    C'est tout bête mais j'essaie de modifier ma macro pour qu'elle puisse traiter une liste d'onglets et ca bug :

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Range("G8:G22").Select      'plage de données 
     
        For Each Cell In Selection
        numCC = Cell.Value
     
    MsgBox (numCC) 'ca me rapporte bien ma donnée qui correspond au nom d'un onglet (exemple : 1421)
     
        Sheets(numCC).Select   'ca bug ici
        .....
    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il vous faut déclarer vos variables.

    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
    Sub EssaiSelect()
     
    Dim Cell As Range
    Dim NumCC As String
     
        With ActiveSheet
           .Range("G8:G22").Select      'plage de données
     
        For Each Cell In Selection
            NumCC = Cell.Value
            MsgBox (NumCC) 'ca me rapporte bien ma donnée qui correspond au nom d'un onglet (exemple : 1421)
            Sheets(NumCC).Select   'ca bug plus ici
     
        Next Cell
     
        End With
     
    End Sub
    Nb : Il est rarement utile de sélectionner un onglet. Regardez plutôt la façon de travailler avec un Set Sh = Sheets(NumCC) où Sh est déclaré comme Worksheet par exemple.

    Cordialement.

  3. #3
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 30
    Par défaut
    Tout juste :-) j'ai tendance à oublier de déclarer mes variables et comme souvent ça fonctionne sans je ne pense pas à ca quand ca bug....
    Par contre je n'ai pas bien saisi l'intérêt du Set Sh et comment l'utiliser dans mon cas car j'ai besoin de sélectionner les onglets pour faire ma mise en forme et créer le pdf de chaque onglets par la suite.

    Voici la macro :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub MEF_et_génération_PDF_pour_reporting_DA()
    '
    '
     
    Application.ScreenUpdating = False
     
        Dim Cell As Range
        Dim NumCC As String
        Dim CheminRep As String
        Dim MoisAnnée As String
     
        Sheets("INDEX").Select
     
        CheminRep = Range("G2").Value
        MoisAnnée = Range("G3").Value
     
        Range("G8:G22").Select 'plage de données des CC
     
        For Each Cell In Selection
        NumCC = Cell.Value
     
     
    'MsgBox (NumCC)
     
     
        Sheets(NumCC).Select
     
        Range("B3").Select
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2 'ouvre les regroupements de colonnes
        Columns("Y:AA").EntireColumn.Hidden = True
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 'ferme les regroupements de colonnes
        Columns("Y:AA").EntireColumn.Hidden = False
        Range("B3").Select
     
        ActiveSheet.Outline.ShowLevels RowLevels:=2 'ouvre les regroupements de lignes
        Rows("77:80").EntireRow.Hidden = True
        ActiveSheet.Outline.ShowLevels RowLevels:=1  'ferme les regroupements de lignes
        Rows("77:80").EntireRow.Hidden = False
        Range("B3").Select
     
        Columns("Z:Z").EntireColumn.AutoFit
        Rows("81:81").EntireRow.AutoFit
     
        Range("B3").Select
     
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminRep & "\" & NumCC & "_" & MoisAnnée & "_Suivi Frais " & ".pdf"
     
        Range("B3").Select
     
        ActiveSheet.Outline.ShowLevels RowLevels:=2 'ré-ouvre les regroupements de lignes
     
        Next
     
        MsgBox ("Les fichiers pdf sont créés dans le répertoire : " & CheminRep)
     
     
     
    Application.ScreenUpdating = False
     
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Un exemple avec votre code sans utiliser Select. Le temps de traitement est-il plus rapide ?

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    Option Explicit
     
    Sub MEF_et_génération_PDF_pour_reporting_DA()
     
    Dim CheminRep As String
    Dim MoisAnnee As String
     
    Dim AireDesOnglets As Range
    Dim Cell As Range
     
    Dim ShEnCours As Worksheet
     
            Application.ScreenUpdating = False
     
            With Sheets("INDEX")
                 CheminRep = .Range("G2").Value
                 MoisAnnee = .Range("G3").Value
                 Set AireDesOnglets = .Range("G8:G22") 'plage de données des CC
              '  Set AireDesOnglets = .Range("G8:G10") ' Essai sur 3 onglets
            End With
     
            For Each Cell In AireDesOnglets
     
                Set ShEnCours = Sheets(Cell.Value)
     
                With ShEnCours
                     .Outline.ShowLevels RowLevels:=0, ColumnLevels:=2 'ouvre les regroupements de colonnes
                     .Columns("Y:AA").EntireColumn.Hidden = True
                     .Outline.ShowLevels RowLevels:=0, ColumnLevels:=1 'ferme les regroupements de colonnes
                     .Columns("Y:AA").EntireColumn.Hidden = False
                     .Outline.ShowLevels RowLevels:=2 'ouvre les regroupements de lignes
                     .Rows("77:80").EntireRow.Hidden = True
                     .Outline.ShowLevels RowLevels:=1 'ferme les regroupements de lignes
                     .Rows("77:80").EntireRow.Hidden = False
                     .Columns("Z:Z").EntireColumn.AutoFit
                     .Rows("81:81").EntireRow.AutoFit
                     .ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminRep & "\" & Cell & "_" & MoisAnnee & "_Suivi Frais" & ".pdf"
                     .Outline.ShowLevels RowLevels:=2 'ré-ouvre les regroupements de lignes
               End With
     
               Set ShEnCours = Nothing
     
            Next
     
            Set AireDesOnglets = Nothing
     
            Application.ScreenUpdating = False
     
            MsgBox "Les fichiers pdf sont créés dans le répertoire : " & Chr(10) & Chr(10) & CheminRep, vbInformation
     
    End Sub
    Nb : Pour plus de lisibilité, utilisez les balises de code (# dans le menu) pour encadrer votre code.

    Cordialement.

  5. #5
    Membre averti
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Avril 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 30
    Par défaut
    Merci Eric, désolé pour les # je ne savais pas..

    J'ai testé ce matin et ca bug à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set ShEnCours = Sheets(Cell.Value)
    merci pour ton aide

    a+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Quel message as-tu ?
    As tu bien respecté la syntaxe ?
    Les noms dans G8:G22 correspondent-ils tous à des onglets ?

    Sinon, mets ta procédure complète en ligne.

    Cordialement.
    Dernière modification par AlainTech ; 19/05/2015 à 07h34. Motif: Suppression de la citation inutile

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

Discussions similaires

  1. [XL-2007] Sélectionner une feuille (variable) via une Commandbar
    Par antha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/05/2014, 16h30
  2. [XL-2007] Appel nom interne d'une feuille avec variable
    Par friout dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2011, 12h52
  3. [XL-2007] Rechercher et copier une colonne sans sélectionner la feuille (avec find)
    Par Danieldu54 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/07/2011, 20h06
  4. Sélectionner une cellule avec une variable
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/12/2008, 18h05
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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