Pb Argument non facultatif

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.... :eek:

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 :)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Pb Argument non facultatif

Bonjour Moureaucht, bonjour le forum,

Peut-être comme ça :

Code:
Sub SEMI_on()
Dim PL As Range
Dim TC As Variant

Set PL = Range("A1")
TC = Array(8, 10, 13, 23, 31, 33, 46, 48) 'à completer
For I = 0 To UBound(TC, 1)
    Set PL = IIf(PL.Cells.Count = 1, Rows(TC(I)), Application.Union(PL, Rows(TC(I))))
Next I
PL.EntireRow.Hidden = False
End Sub
 

mutzik

XLDnaute Barbatruc
Re : Pb Argument non facultatif

bonjour Moureaucht, Salut Robert

pourrais-tu nous expliquer s'il y a une relation ou un champ commun à toutes les ref que tu ne veux pas voir affichée
cela permettrait de ne pas revenir sur la macro chaque fois que tu ajoutes des ref
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Pb Argument non facultatif

Bonjour moureaucht, Bertrand, bonjour le forum,

Faut se calmer Moureaucht ! On fait ce qu'on peut !... Reprendre tout ton code nécessite de la patience...

Ton erreur venait de la dernière ligne ou tu demandais une union avec un seul élément...
En écrivant :

Code:
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("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")), (Rows("544"))).Select
ton code fonctionne...

Voilà, j'espère que ça va te calmer...
 

Moureaucht

XLDnaute Nouveau
Re : Pb Argument non facultatif

Bonjour à tous,

Alors oui ils ont un élément commun, c'est que le fond de cellule est d'une couleur d'une variante de rouge. Je ne sais pas si cela peut t'aider ?

Merci de ta réponse je vais regardé cela avec attention quand j'aurai un petit moment pour comprendre ce que tu m'as expliqué, cependant je ne vois pas en quoi je dois me calmer je n'ai absolument rien dit. Peut-être est-ce ironique de ta part ? Désolé d'être curieux d'avoir envie d'apprendre de mes erreurs, mais je n'ai mis la pression à personne et je trouve déplacé ta réponse.

Sur ce, merci encore pour votre aide à tous
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Pb Argument non facultatif

Bonjour le fil, bonjour le forum,

Quelqu'un pourrait tout de même m'expliquer pourquoi cette erreur apparaît avec la solution pour que je comprenne mon erreur ?

Arf ! le ton, mon cher, le ton... Sache que c'est toujours de l'humour même s'il il y a parfois foutage de gueule. Mais je réitère, faut se calmer Moureaucht...
 

Discussions similaires

Réponses
3
Affichages
360

Statistiques des forums

Discussions
315 093
Messages
2 116 140
Membres
112 669
dernier inscrit
Guigui2502