Zone d'impression par rapport au résultat d'une InputBox
Bonjour tout le monde,
Je viens vers vous car j'aurai besoin d'aide.
Contexte : Je vais communiquer un fichier excel à de nombreuses personnes, ne sachant pas le niveau (excel) des futurs utilisateurs j'ai simplifié ce fichier avec des macros.
Mon problème : Chaque utilisateur va devoir imprimer l'onglet qu'il aura crée, toutefois son onglet sera basé sur un tableau de 50 groupes de 3 colonnes, toutefois certains vont remplir 1 groupe d'autres 2, etc.
J'ai actuellement crée après différentes recherches une InputBox dans laquelle la personne renseigne le nombre de groupe remplis, et en fonction de la saisie une MsgBox renseigne la plage de la zone d'impression à saisir dans une nouvelle InputBox qui apparait après avoir cliqué sur OK de la MsgBox.
J'aimerai bien que seule le nombre soit à saisir et que la zone d'impression soit définie, s'il faut en créant un tableau annexe. Je pense bien que la solution doit exister mais après de nombreuses tentatives je n'ai pas réussi à trouver.
Ci dessous mon code actuel qui résume tout ce que j'ai dit précédemment :
Sub Nb_act()
Dim Nombre As Integer
'En cas de mauvaise saisie, on va à MauvaiseSaisie
On Error GoTo MauvaiseSaisie
Nombre = InputBox("Saisissez le nombre d'activités : ", "Saisie numérique")
Select Case Nombre
Case Is = 12: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:aj81"
Case Is = 11: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:ag81"
Case Is = 10: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:ad81"
Case Is = 9: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:aa81"
Case Is = 8: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:x81"
Case Is = 7: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:u81"
Case Is = 6: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:r81"
Case Is = 5: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:o81"
Case Is = 4: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:l81"
Case Is = 3: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:i81"
Case Is = 2: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:f81"
Case Is = 1: MsgBox "La zone d'impression à saisir" & Chr(10) & "à l'étape suivante est donc :" & Chr(10) & Chr(10) & "a1:c81"
Case Else: MsgBox "Procédez manuellement pour la zone d'impression" & Chr(10) & "La zone démarre en A1 et fini en ?81"
End Select
Dim plage As Range
Set plage = Application.InputBox(Prompt:="Sélectionner la zone d'impression" & Chr(10) & Chr(10) & "Rappel : A1:?81", Type:=8)
ActiveSheet.PageSetup.PrintArea = plage.Address
Exit Sub 'Sortie pour ne pas traiter MauvaiseSaisie
MauvaiseSaisie:
MsgBox "Vous n'avez pas saisi un nombre entier", vbCritical
End SubJe vous remercie d'avance pour toutes les réponses que vous pourrez apporter à mon problème
Damien
Bonjour
essayez avec ce code
Sub Nb_act()
Dim Nombre As Byte
'En cas de mauvaise saisie, on va à MauvaiseSaisie
On Error GoTo MauvaiseSaisie
Nombre = InputBox("Saisissez le nombre d'activités : ", "Saisie numérique")
If Nombre = 0 Then
MsgBox "Procédez manuellement pour la zone d'impression" & Chr(10) & "La zone démarre en A1 et fini en ?81"
Else: ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(81, Nombre * 3)).Address
End If
Exit Sub 'Sortie pour ne pas traiter MauvaiseSaisie
MauvaiseSaisie:
MsgBox "Vous n'avez pas saisi un nombre entier", vbCritical
End SubSi ok, cliquez sur le petit v en haut à droite pour cloturer le fil.
Cordialement
Merci beaucoup, c'est parfait
Cordialement Damien