Aplliquer macro sur plusieurs onglets
Résolu
PLAYA2
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
PLAYA2 -
PLAYA2 -
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 !!!
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 !!!
14 réponses
-
Cette demande est pour excel 2002.
Merci -
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 -
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 -
re,
essaiesSub 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
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ok, je tente ça dès demain et te tiens au courant.
Merci et bonne soirée !!! -
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 !!!-
Bonjour
Effectivement, une erreur grossière de ma part, excuse-moiSub 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
-
-
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.-
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)
-
-
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. -
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 -
-
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
-
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 -
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 !!! -
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.