Comment sélectionner des onglets à partir d'une variable - VB/VBA/VBS - Programmation
Marsh Posté le 14-05-2014 à 13:37:22
Salut,
Tu n'étais pas bien loin en effet.
Le Array va renvoyer à une variable de type variant, à partir d'arguments (arglist). onglet ne peut donc être string.
Essaie comme ça:
Code :
|
Au plaisir
Marsh Posté le 14-05-2014 à 14:13:23
Bonjour,
qui plus est peut se faire directement sans variable …
Marsh Posté le 14-05-2014 à 14:30:53
Merci Laebruhtra pour ta réponse mais cela m'amène à un autre souci :
Ma variable dépend de conditions : En fait, selon les valeurs de certaines cellules je dois imprimer certains onglets.
Voici ci dessous mon programme complet. l'onglet 1 doit être toujours imprimé et les autres onglets dépendent de la valeur des cellules "RESULTxx".
J'ai par ce fait créer une variable de type string.
Sub impression()
'Création de la variable onglet
Dim onglet As String
onglet = "1"
'Conditions pour la sélection des onglets
If Range("RESULT1" ).Value <> 0 Then
onglet = onglet & ", 2"
End If
If Range("RESULT2" ).Value <> 0 Then
onglet = onglet & ", 3"
End If
If Range("RESULT3" ).Value <> 0 Then
onglet = onglet & ", 4"
End If
'etc.......
Sheets(onglet).Select
'Impression
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
'Réinitialisation des onglets
Sheets(Array(1)).Select
End Sub
Sincères salutations
Marsh Posté le 14-05-2014 à 15:37:48
En fait, il y a maldonne dès la ligne n° … Ah zut ! Le code n'a pas été balisé !
Merci d'éditer le message et de baliser le code grâce à l'icône dédiée conformément aux règles du forum …
Marsh Posté le 15-05-2014 à 07:50:44
Désolé, je suis nouveau, je n'ai pas encore l'habitude des us et coutumes de ce site. Voici le code balisé :
Code :
|
Marsh Posté le 15-05-2014 à 16:17:28
Un tableau (Array) est nécessaire mais du texte est utilisé … La fonction Split convertit le texte en tableau :
Code :
|
Marsh Posté le 20-05-2014 à 12:42:02
Marc L a écrit :
|
Merci, pour ton aide mais j'ai un message d'erreur qui apparait :
J'ai retranscrit ton programme, je l' ai adapté à mes besoins ça donne ceci :
Code :
|
Cela donne ceci en message box : 1 2 3 5
Et lorsque je valide la box, le message d'erreur apparaît : Erreur d'exécution "9" : L'indice n'appartient pas à la sélection
La ligne 21 se met en surbrillance. Est-ce un problème de format ? ou ne dois-je pas utiliser le format string en ligne 5 ?
Marsh Posté le 20-05-2014 à 16:57:29
Autant pour moi, mea culpa !
En fait quand le tableau renvoyé est de type String, VBA s'attend aux noms des feuilles et non à pas leurs numéros (Index) :
Code :
|
Le Dim est inutile car déjà compris dans la ligne n°2 (sauf si contrainte instruction Option Explicit) …
Effectuer un double clic dans le cadre du code avant de procéder à sa copie …
Marsh Posté le 20-05-2014 à 17:18:04
Marc L a écrit :
Le Dim est inutile car déjà compris dans la ligne n°2 (sauf si contrainte instruction Option Explicit) … |
Ah merci beaucoup, ça fonctionne, j'ai été cependant obligé de rajouter le Dim. Et remerci pour avoir utiliser un peu de votre temps à mon problème.
Sincères salutations
Marsh Posté le 13-08-2015 à 16:40:41
Une autre proposition de solution qui fonctionne.
Par exemple, pour copier les onglets qui commencent par "1", puis "2", puis"3"...
Code :
|
Marsh Posté le 14-05-2014 à 12:00:08
Bonjour,
Je travaille sous Excel et j'essaie de programmer une sélection d'onglet à partir d'une variable (onglet). L'erreur "l'indice n'appartient pas à la sélection" apparaît pour la dernière ligne de commande :
Sub TEST()
Dim onglet As String
onglet = "1, 2"
Sheets(Array(onglet)).Select
End Sub
Je pense que c'est un problème de type de données. Est-ce que quelqu'un peut m'aider sur ce problème. Merci d'avance