VBA pas plus simple ?

Fermé
ya_v_ka Messages postés 28 Date d'inscription lundi 27 septembre 2004 Statut Membre Dernière intervention 9 octobre 2004 - 29 sept. 2004 à 13:50
ya_v_ka Messages postés 28 Date d'inscription lundi 27 septembre 2004 Statut Membre Dernière intervention 9 octobre 2004 - 29 sept. 2004 à 18:08
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 ????
A voir également:

2 réponses

DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
29 sept. 2004 à 14:17
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
ya_v_ka Messages postés 28 Date d'inscription lundi 27 septembre 2004 Statut Membre Dernière intervention 9 octobre 2004
29 sept. 2004 à 14:32
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
ya_v_ka Messages postés 28 Date d'inscription lundi 27 septembre 2004 Statut Membre Dernière intervention 9 octobre 2004
29 sept. 2004 à 15:57
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
DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
29 sept. 2004 à 16:36
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
ya_v_ka Messages postés 28 Date d'inscription lundi 27 septembre 2004 Statut Membre Dernière intervention 9 octobre 2004
29 sept. 2004 à 18:08
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