Moureaucht
XLDnaute Nouveau
Bonjour à tous,
Je suis bon débutant, et je tente de m'initier au vba (avec plus ou moins de succès!).
Pour mon job, nous devons référencer un nombre très important de références et d'informations liées à celles-ci.
J'ai donc créé un fichier Excel tout simple, chaque ligne correspond à une référence, et il y a des groupes de ref qui forment des assemblages... Enfin peut importe ce n'est pas vraiment le sujet.
Le problème est que certaine de ces références n'ont pas une grande importance à apparaître dans le tableau, mais nous ne souhaitons pas les supprimer au cas où. C'est pourquoi je me suis mis en tête de faire une petite macro avec un bouton pour masquer certaines lignes et les afficher si besoin.
Donc je suis mis dans la prog et me suis lancer dans un programme de type :
Union(Rows (XX), Rows(XX), etc...).Select
qui permet de sélection plusieurs ligne et je l'associe à :
Selection.EntireRow.Hidden = True ou Selection.EntireRow.Hidden = False
suivant si c'est le bouton pour masquer ou afficher les lignes en question.
Le problème c'est que la fonction Union n'accepte que 30 arguments, et comme je vous le disais, nous avons un grand nombre de référence, et donc de manière proportionnelle de lignes à masquer.
J'ai donc pensé à une méthode (pas très jolie et pratique certes, mais qui fonctionnait jusqu'à maintenant) de mettre des Union dans des union....
En gros ça donne ça :
Sub SEMI_on()
'Fait apparaitre les semi prod et autre
Union( _
Union(Rows("8"), Rows("10"), Rows("13"), Rows("23"), Rows("31"), Rows("33"), Rows("46"), Rows("48"), Rows("76"), _
Rows("78"), Rows("80"), Rows("82"), Rows("84"), Rows("86"), Rows("88"), Rows("88"), Rows("90"), Rows("92"), Rows("94"), _
Rows("107"), Rows("109"), Rows("111"), Rows("113"), Rows("160"), Rows("163"), Rows("165"), Rows("167"), Rows("169"), _
Rows("171"), Rows("173")), _
Union(Rows("175"), Rows("177:179"), Rows("181"), Rows("183"), Rows("185"), Rows("187"), Rows("189"), Rows("191"), _
Rows("193"), Rows("195"), Rows("197"), Rows("199"), Rows("201"), Rows("203"), Rows("205"), Rows("207"), Rows("210"), _
Rows("212"), Rows("214:216"), Rows("218"), Rows("227"), Rows("229"), Rows("231"), Rows("233"), Rows("235"), _
Rows("237"), Rows("239"), Rows("260:262"), Rows("264"), Rows("266")), _
Union(Rows("268"), Rows("270"), Rows("272"), Rows("274"), Rows("276"), Rows("278"), Rows("280"), Rows("282"), Rows("284:286"), _
Rows("288:290"), Rows("292:294"), Rows("296:298"), Rows("300:302"), Rows("319"), Rows("334:336"), Rows("340"), Rows("343"), _
Rows("347"), Rows("356"), Rows("360"), Rows("364"), Rows("367"), Rows("369"), Rows("371:374"), Rows("389"), Rows("393"), _
Rows("397"), Rows("400"), Rows("404"), Rows("407")), _
Union(Rows("410"), Rows("418:420"), Rows("424"), Rows("426"), Rows("430"), Rows("435"), Rows("437:439"), Rows("446:448"), _
Rows("450"), Rows("455:457"), Rows("459:463"), Rows("468"), Rows("472:475"), Rows("477"), Rows("485"), Rows("488"), _
Rows("492"), Rows("494"), Rows("497"), Rows("499"), Rows("502"), Rows("504"), Rows("506"), Rows("508"), Rows("513"), Rows("515"), _
Rows("517"), Rows("519"), Rows("521"), Rows("526")), _
Union(Rows("544"))).Select
Selection.EntireRow.Hidden = False
End Sub
Le problème est que avant que je tape la dernier Union "Union(Rows("544"))" tout fonctionnait très bien, mais dès lors que je le mets, j'ai une erreur que je n'arrive pas à résoudre! Excel m'envoie un message d'erreur en me disant :
Erreur de compilation: argument non facultatif
Est ce que quelqu'un peut m'aider à comprendre pourquoi? Et si vous avez des améliorations pour ce petit bout de macro pas du tout optimisé je suis preneur (bien que ce ne soit pas ma demande première)
Merci à tous et désolé de vous embêter
Je suis bon débutant, et je tente de m'initier au vba (avec plus ou moins de succès!).
Pour mon job, nous devons référencer un nombre très important de références et d'informations liées à celles-ci.
J'ai donc créé un fichier Excel tout simple, chaque ligne correspond à une référence, et il y a des groupes de ref qui forment des assemblages... Enfin peut importe ce n'est pas vraiment le sujet.
Le problème est que certaine de ces références n'ont pas une grande importance à apparaître dans le tableau, mais nous ne souhaitons pas les supprimer au cas où. C'est pourquoi je me suis mis en tête de faire une petite macro avec un bouton pour masquer certaines lignes et les afficher si besoin.
Donc je suis mis dans la prog et me suis lancer dans un programme de type :
Union(Rows (XX), Rows(XX), etc...).Select
qui permet de sélection plusieurs ligne et je l'associe à :
Selection.EntireRow.Hidden = True ou Selection.EntireRow.Hidden = False
suivant si c'est le bouton pour masquer ou afficher les lignes en question.
Le problème c'est que la fonction Union n'accepte que 30 arguments, et comme je vous le disais, nous avons un grand nombre de référence, et donc de manière proportionnelle de lignes à masquer.
J'ai donc pensé à une méthode (pas très jolie et pratique certes, mais qui fonctionnait jusqu'à maintenant) de mettre des Union dans des union....
En gros ça donne ça :
Sub SEMI_on()
'Fait apparaitre les semi prod et autre
Union( _
Union(Rows("8"), Rows("10"), Rows("13"), Rows("23"), Rows("31"), Rows("33"), Rows("46"), Rows("48"), Rows("76"), _
Rows("78"), Rows("80"), Rows("82"), Rows("84"), Rows("86"), Rows("88"), Rows("88"), Rows("90"), Rows("92"), Rows("94"), _
Rows("107"), Rows("109"), Rows("111"), Rows("113"), Rows("160"), Rows("163"), Rows("165"), Rows("167"), Rows("169"), _
Rows("171"), Rows("173")), _
Union(Rows("175"), Rows("177:179"), Rows("181"), Rows("183"), Rows("185"), Rows("187"), Rows("189"), Rows("191"), _
Rows("193"), Rows("195"), Rows("197"), Rows("199"), Rows("201"), Rows("203"), Rows("205"), Rows("207"), Rows("210"), _
Rows("212"), Rows("214:216"), Rows("218"), Rows("227"), Rows("229"), Rows("231"), Rows("233"), Rows("235"), _
Rows("237"), Rows("239"), Rows("260:262"), Rows("264"), Rows("266")), _
Union(Rows("268"), Rows("270"), Rows("272"), Rows("274"), Rows("276"), Rows("278"), Rows("280"), Rows("282"), Rows("284:286"), _
Rows("288:290"), Rows("292:294"), Rows("296:298"), Rows("300:302"), Rows("319"), Rows("334:336"), Rows("340"), Rows("343"), _
Rows("347"), Rows("356"), Rows("360"), Rows("364"), Rows("367"), Rows("369"), Rows("371:374"), Rows("389"), Rows("393"), _
Rows("397"), Rows("400"), Rows("404"), Rows("407")), _
Union(Rows("410"), Rows("418:420"), Rows("424"), Rows("426"), Rows("430"), Rows("435"), Rows("437:439"), Rows("446:448"), _
Rows("450"), Rows("455:457"), Rows("459:463"), Rows("468"), Rows("472:475"), Rows("477"), Rows("485"), Rows("488"), _
Rows("492"), Rows("494"), Rows("497"), Rows("499"), Rows("502"), Rows("504"), Rows("506"), Rows("508"), Rows("513"), Rows("515"), _
Rows("517"), Rows("519"), Rows("521"), Rows("526")), _
Union(Rows("544"))).Select
Selection.EntireRow.Hidden = False
End Sub
Le problème est que avant que je tape la dernier Union "Union(Rows("544"))" tout fonctionnait très bien, mais dès lors que je le mets, j'ai une erreur que je n'arrive pas à résoudre! Excel m'envoie un message d'erreur en me disant :
Erreur de compilation: argument non facultatif
Est ce que quelqu'un peut m'aider à comprendre pourquoi? Et si vous avez des améliorations pour ce petit bout de macro pas du tout optimisé je suis preneur (bien que ce ne soit pas ma demande première)
Merci à tous et désolé de vous embêter