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 ne fonctionne que sur la première feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut Macro ne fonctionne que sur la première feuille
    Bonjour,

    Je connais peu le vba et je bloque sur un truc:
    j'ai réussi tant bien que mal à faire tourner ma macro sur plusieurs onglets mais celle-ci ne fonctionne correctement que sur le premier onglet. Je souhaite faire apparaitre une colonne cachée dans les onglets mais cela ne s'applique que sur la première feuille...

    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
    Sub Macro5()
    '
    ' Macro5 Macro
    '
     
    '
        Sheets(Array("TSR1 29.12.2011", "TSR2 29.12.2011")).Select
        Sheets("TSR1 29.12.2011").Activate
        Columns("G:P").Select
        Range("G2").Activate
        Selection.EntireColumn.Hidden = False
        Columns("I:O").Select
        Range("I2").Activate
        Selection.EntireColumn.Hidden = True
    End Sub
    des idées pour débeuguer le truc??
    merci d'avance!!

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Et comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("TSR1 29.12.2011").Columns("G:P").EntireColumn.Hidden = False
    Sheets("TSR2 29.12.2011").Columns("G:P").EntireColumn.Hidden = False
    A éviter les select et activate

  3. #3
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    super merci bien! un problème se rajoute...chaque jour le nom de mes onglets change...je pourrai alors mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(1).Columns("G:P").EntireColumn.Hidden = False
    Sheets(2).Columns("G:P").EntireColumn.Hidden = False
    ...mais ma macro doit tourner sur des feuilles qui comportent parfois 2 parfois 4 onglets...y a t-il un code du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(1 to end).Columns("G:P").EntireColumn.Hidden = False
    ???

    merci d'avance!

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    oui, en bouclant sur tous les onglets du classeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim sh as Worksheet
     
    For each Sh in Thisworkbook.Worksheets
     
       Sh.Columns("G:P").EntireColumn.Hidden = False
     
    Next

  5. #5
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    Ok, alors jusqu'à là, je comprenais...voila comment j'ai modifier mon code suite à ton précédent post:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Sheets("TSR1 29.12.2011").Columns("G:P").EntireColumn.Hidden = False
        Sheets("TSR1 29.12.2011").Columns("I:O").EntireColumn.Hidden = True
        Sheets("TSR2 29.12.2011").Columns("G:P").EntireColumn.Hidden = False
        Sheets("TSR2 29.12.2011").Columns("I:O").EntireColumn.Hidden = True
    par contre, j'ai un peu de mal à intégrer ta dernière proposition pour boucler sur tout les onglets du classeur...

    pfff...désolé de mon ignorance...
    je fais encore qqls essais...

    merci!

    ...voila ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Macro7()
    '
    ' Macro7 Macro
    '
     
     
        Dim sh As Worksheet
        For Each sh In ThisWorkbook.Worksheets
           sh.Columns("G:P").EntireColumn.Hidden = False
           sh.Columns("I:O").EntireColumn.Hidden = True
        Next
     
    End Sub
    ...et rien ne se passe...
    une erreur te saute au yeux?

    Luc

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Avec quelques commentaires

    N'hésites pas a poser des questions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'Déclaration d'une variable de type feuille
    Dim sh as Worksheet
     
    'Boucle sur tous les onglets du classeur  (Remplacer ThisWorkbook par ActiveWorkbook si la boucle doit s'effectuer sur le classeur actif et non sur le classeur qui contient la macro
    For each Sh in Thisworkbook.Worksheets
     
       Action a faire sur la feuille
       Sh.Columns("G:P").EntireColumn.Hidden = False
       Sh.Columns("I:O").EntireColumn.Hidden = True
     
    Next

  7. #7
    Futur Membre du Club
    Homme Profil pro
    chercheur
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chercheur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Par défaut
    ok ça commence à devenir claire! donc à ce point ça fonctionne bien!
    maintenant, quand je rajoute des actions à faire, elles ne s'appliquent qu'au premier onglet
    voici ou j'en suis dans mon écriture...j'ai tout mis!

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Dim sh As Worksheet
        For Each sh In ActiveWorkbook.Worksheets
            sh.Columns("G:P").EntireColumn.Hidden = False
            sh.Columns("I:O").EntireColumn.Hidden = True
     
    ' jusque-là, tout fonctionne, puis les actions suivantes ne s'applique qu'à mon premier onglet...
     
            Rows("2:3").Select
            Range("D3").Activate
            Selection.Font.Bold = True
            Range("P2").Select
            ActiveCell.FormulaR1C1 = "Pers"
            Range("P2").Select
            Selection.Copy
            Range("Q2:S2").Select
            ActiveSheet.Paste
            Range("T2").Select
            Application.CutCopyMode = False
            ActiveCell.FormulaR1C1 = "15-49"
            Range("T2").Select
            Selection.Copy
            Range("U2:W2").Select
            ActiveSheet.Paste
            Columns("P:W").Select
            Range("P2").Activate
            Application.CutCopyMode = False
            With Selection
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlBottom
                .WrapText = False
                .Orientation = 0
                .AddIndent = False
                .ShrinkToFit = False
                .MergeCells = False
            End With
            Range("P4:Q4").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.NumberFormat = "0"
            Range("T4:U4").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.NumberFormat = "0"
            Columns("T:T").Select
            Range("T2").Activate
            Selection.Cut
            Columns("Q:Q").Select
            Range("Q2").Activate
            Selection.Insert Shift:=xlToRight
            Columns("S:S").Select
            Range("S2").Activate
            Selection.Cut
            Columns("V:V").Select
            Range("V2").Activate
            Selection.Insert Shift:=xlToRight
            Columns("T:T").Select
            Range("T2").Activate
            Selection.EntireColumn.Hidden = True
            Columns("W:W").Select
            Range("W2").Activate
            Selection.EntireColumn.Hidden = True
            Columns("D:D").EntireColumn.AutoFit
            Columns("F:F").EntireColumn.AutoFit
            Columns("P:P").EntireColumn.AutoFit
            Columns("Q:Q").Select
            Range("Q2").Activate
            Columns("Q:Q").EntireColumn.AutoFit
            Columns("R:R").EntireColumn.AutoFit
            Columns("S:S").EntireColumn.AutoFit
            Columns("U:U").EntireColumn.AutoFit
            Columns("V:V").EntireColumn.AutoFit
       Next
     
    End Sub
    est-ce que je dois tout ré-écrire? comme par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Rows("2:3").Select
            Range("D3").Activate
            Selection.Font.Bold = True
    devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("D3").Font.Bold = True
    ???

    merci de ton aide!

    Luc

Discussions similaires

  1. Macro ne fonctionne que sur mon ordinateur
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/06/2009, 14h24
  2. Page fonctionne que sur FireFox
    Par Nicos77 dans le forum Langage
    Réponses: 9
    Dernier message: 20/12/2006, 15h53
  3. Help: Script d'arborescence ne fonctionnant que sur Internet Explorer
    Par cyrilk dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/10/2006, 19h28
  4. Réponses: 2
    Dernier message: 30/10/2005, 14h38
  5. Programme ne fonctionnant que sur certaines machines
    Par Marekh dans le forum DirectX
    Réponses: 14
    Dernier message: 30/08/2005, 14h09

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