Aplliquer macro sur plusieurs onglets

Résolu/Fermé
PLAYA2 Messages postés 15 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 28 janvier 2013 - 10 janv. 2013 à 15:02
 PLAYA2 - 16 janv. 2013 à 16:14
Bonjour,

J'ai créé une macro sur un onglet d'un fichier excel ; savez-vous comment appliquer cette même macro sur d'autres onglets de ce fichier (15 au maximum) ?
De plus, pour 2 onglets de ce fichier, il ne faut pas appliquer cette macro... Eh oui ce serait trop simple...

D'avance merci pour vos lumières !!!



A voir également:

14 réponses

PLAYA2 Messages postés 15 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 28 janvier 2013
10 janv. 2013 à 15:04
Cette demande est pour excel 2002.

Merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 10/01/2013 à 15:59
Bonjour

sans voir la dite macro, peu d'espoir de solution...
et le nom des 2 exclus
au besoin
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse


Michel
0
PLAYA2 Messages postés 15 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 28 janvier 2013
10 janv. 2013 à 16:18
La macro est la suivante :

If Cells(129, "AK").Value = 0 And Not IsEmpty(Cells(129, "AK").Value) Then
Rows("8:133").Hidden = True
Else
Rows("8:133").Hidden = False
End If
If Cells(258, "AK").Value = 0 And Not IsEmpty(Cells(129, "AK").Value) Then
Rows("134:263").Hidden = True
Else
Rows("134:263").Hidden = False
End If
End Sub

et les 2 onglets auxquels ne pas appliquer la macro se nomment : DptVAL et MDG
L'onglet qui contient la macro se nomme VAL01et les autres onglets auxquels appliquer la macro : VAL02, VAL 03, VAL04 etc...

J'espère que ces infos suffiront!!!

D'avance merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
10 janv. 2013 à 17:19
re,

essaies
Sub cacher_ou_non()
Dim Nbre As Byte
Application.ScreenUpdating = False
Nbre = ThisWorkbook.Sheets.Count
For cptr = 1 To Nbre

     If Sheets(cptr).Name <> "DptVAL " And Sheets(cptr).Name <> "MDG" Then
          If Cells(129, "AK").Value = 0 And Not IsEmpty(Cells(129, "AK").Value) Then
               Rows("8:133").Hidden = True
          Else
               Rows("8:133").Hidden = False
          End If
          If Cells(258, "AK").Value = 0 And Not IsEmpty(Cells(129, "AK").Value) Then
               Rows("134:263").Hidden = True
          Else
               Rows("134:263").Hidden = False
          End If
     End If

Next

End Sub

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PLAYA2 Messages postés 15 Date d'inscription mardi 8 janvier 2013 Statut Membre Dernière intervention 28 janvier 2013
10 janv. 2013 à 19:42
Ok, je tente ça dès demain et te tiens au courant.

Merci et bonne soirée !!!
0
Re Miche-m,

Désolée de n'avoir répondu plus rapidement.

J'ai essayé ta macro mais je n'ai pas le résultat escompté, en effet elle fonctionne bien sur un onglet mais ne s'applique pas sur les autres !!!
Pour être sûre de ne pas faire d'erreur de frappe, j'ai fait un copier coller de ta macro et je n'ai pas eu de message d'erreur.

N'y a t-il pas, plus simplement, de syntaxe permettant de "boucler " ???

D'avance merci de votre aide à tous,

Et bonne journée !!!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 janv. 2013 à 14:31
Bonjour

Effectivement, une erreur grossière de ma part, excuse-moi
Sub cacher_ou_non()
Dim Nbre As Byte
Application.ScreenUpdating = False
Nbre = ThisWorkbook.Sheets.Count
For cptr = 1 To Nbre
     With Sheets(cptr)
               If .Name <> "DptVAL " And .Name <> "MDG" Then
                    If .Cells(129, "AK").Value = 0 And Not IsEmpty(.Cells(129, "AK").Value) Then
                         .Rows("8:133").Hidden = True
                    Else
                         .Rows("8:133").Hidden = False
                    End If
                    If .Cells(258, "AK").Value = 0 And Not IsEmpty(.Cells(129, "AK").Value) Then
                         .Rows("134:263").Hidden = True
                    Else
                         .Rows("134:263").Hidden = False
                    End If
          End If
     End With
Next
0
Re,

Je viens d'essayer mais j'ai le message d'erreur suivant :

Erreur d'exucution "1004"
Impossible de définir la propriété Hidden de la classe Range

et dans la macro la ligne suivante est surlignée en jaune :
.Rows("8:133").Hidden = False

Je rappelle que je travaille sur Excel 2002, serait-ce la raison ????

D'avance merci.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 janv. 2013 à 17:39
curieux... j'avais testé sur une maquette et c'était OK !
pour XL2002 je ne pense pas mais je ne l'ai plus, donc...

Je viens de faire l'opération avec l'enregistreur
et après élagage de select-sélection j'ai cette ligne

Rows("10:21").EntireRow.Hidden = True

à essayer, peut-^tre que...

Tu dis, ca peut servir
:o)
0
Hello,

J'ai retesté mais ça ne fonctionne toujours pas enfin que sur l'onglet dans lequel j'ai saisi la macro...

Pour être sûre d'avoir bien compris ton dernier message, voici la macro finalisée (les numéros de lignes ont changés) :

Sub Macropage()
'
'Dim Nbre As Byte
application.ScreenUpdating = False
Nbre = ThisWorkbook.Sheets.Count
For cptr = 1 To Nbre

If Sheets(cptr).Name <> "MDG" Then
If Cells(136, "AK").Value = 0 And Not IsEmpty(Cells(136, "AK").Value) Then
Rows("8:140").EntireRow.Hidden = True
Else
Rows("8:140").Hidden = False
End If
If Cells(280, "AK").Value = 0 And Not IsEmpty(Cells(280, "AK").Value) Then
Rows("163:284").EntireRow.Hidden = True
Else
Rows("163:284").Hidden = False
End If
End If

Next

End Sub

Cdlt.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
15 janv. 2013 à 17:10
Ce n'est pas la dernière macro que je t'ai transmis, le 14/1 à 14:31H...
d'autre part "entirerow" est à écrire aussi pour les "false"
0
Salut,

En effet désolée, j'ai posté la mauvaise macro mais j'avais bien tenté la deuxième version et même problème => Erreur d'exucution "1004"
Impossible de définir la propriété Hidden de la classe Range

Voici la macro testée :

'Dim Nbre As Byte
application.ScreenUpdating = False
Nbre = ThisWorkbook.Sheets.Count
For cptr = 1 To Nbre
With Sheets(cptr)
If .Name <> "MDG" Then
If .Cells(129, "AK").Value = 0 And Not IsEmpty(.Cells(129, "AK").Value) Then
.Rows("8:133").EntireRow.Hidden = True
Else
.Rows("8:133").EntireRow.Hidden = False
End If
If .Cells(258, "AK").Value = 0 And Not IsEmpty(.Cells(258, "AK").Value) Then
.Rows("134:263").EntireRow.Hidden = True
Else
.Rows("134:263").EntireRow.Hidden = False
End If
End If
End With
Next

End Sub

Pour info, quel élément dans cette macro donne l'ordre d'appliquer sur plusieurs onglets ??? J'essaie de décrypter pour mieux apprendre la logique et progresser - merci

A bientôt
0
Pour info, j'ai également la message suivant :

Erreur de compilation : Next sans For
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 janv. 2013 à 11:54
Bonjour

J'avais testé la macro et c'était OK....
donc, sur une maquette, essaies avec l'enregistreur de macro de cacher une sélection de lignes et regarde le code

relance la macro avec les lignes masquées
0
Je ne suis pas sûre d'avoir bien compris !!!

Cette macro fonctionne très bien (masquage de ligne selon condition) :
If Cells(129, "AK").Value = 0 And Not IsEmpty(Cells(129, "AK").Value) Then
Rows("8:133").Hidden = True
Else
Rows("8:133").Hidden = False
End If
If Cells(258, "AK").Value = 0 And Not IsEmpty(Cells(258, "AK").Value) Then
Rows("134:263").Hidden = True
End If
End Sub

Par contre pour celle-ci (appliquer masquage sur tous les onglets) :
Dim Nbre As Byte
application.ScreenUpdating = False
Nbre = ThisWorkbook.Sheets.Count
For cptr = 1 To Nbre

With Sheets(cptr)
If .Name <> "MDG" Then
If Cells(129, "AK").Value = 0 And Not IsEmpty(Cells(129, "AK").Value) Then
Rows("8:133").Hidden = True
Else
Rows("8:133").Hidden = False
End If
If Cells(258, "AK").Value = 0 And Not IsEmpty(Cells(258, "AK").Value) Then
Rows("134:263").Hidden = True
Else
Rows("134:263").Hidden = False
End If
End If

Next

End Sub

Me renvoie le message d'erreur => Next sans For
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 janv. 2013 à 13:45
C'est pas possible! fais un peu attention !!! :-(

regarde la macro que je t'ai envoyé et dis moi si hasard il n'y aurait pas un point devant les références cells et rows...

Abandon du suivi
0
Ok, un grand mea culpa mais vu que sur la 1ère macro qui fonctionne très bien, il n'a pas de point devant rows et cells...

Quoiqu'il en soit un grand merci pour ta patience qui je l'ai compris et c'est normal à des limites !!!
0
Pour info,

Afin que cette macro fonctionne, il faut supprimer les lignes (pour excel 2002):

.Rows("10:20").Hidden = False

Encore un grand merci à ceux qui m'ont bien aidé sur ce forum.

A bientôt.
0