VBA pas plus simple ?

ya_v_ka Messages postés 28 Date d'inscription   Statut Membre -  
ya_v_ka Messages postés 28 Date d'inscription   Statut Membre -
Salut tout le monde
Enfin... j'ai réussi à faire une chose que je souhaitais, mais je crains fort de faire eclater de rire tous els pro du forum et du VBA.
Je joins mon ti code au cas ou quelqu'un trouve un moyen de simplifier tout ca et qu'il peut me le faire comprendre...
Merci d'avance et longue vie au forum's
ya'v

Private Sub worksheet_activate()
jsold = Worksheets("BD").[F22].Value
ActiveSheet.Unprotect Password:="ZAZA"
Rows("20:49").Select
Selection.EntireRow.Hidden = False
Rows("59:88").Select
Selection.EntireRow.Hidden = True
If jsold = "1" Then
Rows("20:49").Select
Selection.EntireRow.Hidden = True
Rows("59:88").Select
Selection.EntireRow.Hidden = False
ElseIf jsold = "2" Then
Rows("21:49").Select
Selection.EntireRow.Hidden = True
Rows("60:88").Select
Selection.EntireRow.Hidden = False
ElseIf jsold = "3" Then
Rows("22:49").Select
Selection.EntireRow.Hidden = True
Rows("61:88").Select
Selection.EntireRow.Hidden = False

et caetera jusqu'à ...

ElseIf jsold = "30" Then
Rows("49:49").Select
Selection.EntireRow.Hidden = True
Rows("88:88").Select
Selection.EntireRow.Hidden = False
ElseIf jsold < "31" Then
Beep
End If
ActiveSheet.Protect Password:="ZAZA", DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("F18").Select
End Sub

bien de la job pour rien non ????

2 réponses

  1. DaNot Messages postés 221 Statut Membre 163
     
    Salut,

    En effet, le code est impressionnant !
    tu peux utiliser l'objet Cells qui selectionne une cellule en indiquant le numero de ligne et le numero de colonne.
    Ainsi, tu peux remplacer :
    If jsold = "1" Then
       ...
       Beep
    End If

    par
    Cells(20 + jsold, 49).EntireRow.Hidden = True
    Cells(59 + jsold, 88).EntireRow.Hidden = False

    Remarque : Si dans la cellule [F22], il y autre chose qu'un numerique, tu risque d'avoir une erreur. Si ca peut arriver, il faut faire un test sur la valeur avec la fonction VarType.

    DaNot
    un Libre ouvert à la source ...
    0
    1. ya_v_ka Messages postés 28 Date d'inscription   Statut Membre
       
      bin merci, ca parrait tellement simple présenté comme cela !
      quant au problème du non-numérique, je suis couvert, c'est juste la différence entre une date de début et de fin (+1 pour que tous les jours soient pris en considération !) et j'aurais un message d'erreur dejà sur la première feuille en cas de fausse entrée.
      Encore merci et longue vie aux forum's
      ya'v
      0
    2. ya_v_ka Messages postés 28 Date d'inscription   Statut Membre
       
      arghhhh, ca coince ...
      en effet si jsold = 24
      il me masque la ligne 44 et affiche la 83 au lieu de masquer de 44 à 49 et d'afficher de 83 à 88
      ai déjà tenté une dizaine de bidouillages sans succès...
      et en plus je n'arrive pas à avoir une vérification ou un message d'erreur si jsold>31...
      merci en tous cas pour la solution proposée qui me mettra peut-être un jour sur la bonne voie
      ya'v
      0
  2. DaNot Messages postés 221 Statut Membre 163
     
    Dans ce cas, essayes plutot :

    Private Sub worksheet_activate()

       jsold = Worksheets("BD").[F22].Value
       ActiveSheet.Unprotect Password:="ZAZA"

       Rows("20:49").EntireRow.Hidden = False
       Rows("59:88").EntireRow.Hidden = True

       If jsold < 31 Then
          Rows((20 + jsold - 1) & ":49").EntireRow.Hidden = True
          Rows((58 + jsold) & ":88").EntireRow.Hidden = False
       Else
          Beep
       End If

       ActiveSheet.Protect Password:="ZAZA", DrawingObjects:=True, Contents:=True, Scenarios:=True
       Range("F18").Select
    End Sub

    En relisant ton code, je m'apercois que je n'avais pas tres bien compris ce que tu voulais faire.

    DaNot
    un Libre ouvert à la source ...
    0
    1. ya_v_ka Messages postés 28 Date d'inscription   Statut Membre
       
      merci pour le temps investi pour moi, et là je me tappe la tête contre les murs, j'ai testé 15 - 20 solutions sans tomber sur les parenthèses & ... et le reste
      merci encore et merci à tous ceux qui ont aussi essayé de trouver...
      ya'v
      0