Boucle

N

nicolas 65

Guest
Bonjour,

Je suis à la recherche d'une solution pour transformer les codes suivant en "boucle":

1°)
If ActiveSheet.Range("L50") = "" Then Rows("50:51").EntireRow.Hidden = True
If ActiveSheet.Range("L52") = "" Then Rows("52:53").EntireRow.Hidden = True
If ActiveSheet.Range("L54") = "" Then Rows("54:55").EntireRow.Hidden = True
If ActiveSheet.Range("L56") = "" Then Rows("56:57").EntireRow.Hidden = True
If ActiveSheet.Range("L58") = "" Then Rows("58:59").EntireRow.Hidden = True
If ActiveSheet.Range("L60") = "" Then Rows("60:61").EntireRow.Hidden = True
If ActiveSheet.Range("L62") = "" Then Rows("62:63").EntireRow.Hidden = True
If ActiveSheet.Range("L64") = "" Then Rows("64:65").EntireRow.Hidden = True
If ActiveSheet.Range("L66") = "" Then Rows("66:67").EntireRow.Hidden = True
If ActiveSheet.Range("L68") = "" Then Rows("68:69").EntireRow.Hidden = True

...

2°)J'ai récupéré un bout de code sur Internet qui m'avait paru intéressant
afin de "protéger" le modèle que je suis en train de créer de Facture
Devis. Je ne souhaitais pas en effet utiliser la protection excel car
elle est trop facilement enlevable avec des logiciels comme Acyd mais
seulement protéger mon modèle contre de maunvaises manipulations en
empechant de sélectionner une ou plusiseur cellules. Malhuereusement je
ne suis pas capable d'adapter ce code tout à fait à mon problème. Le
code était le suivant:

If ActiveCell.Address = "$O$37" Then ActiveCell.Offset(0, -6).Select

Comment dois je faire si je veux "protéger" toute une plage par exemple
de O37 à O57 autrement qu'en "recopiant" plusierus fois la formule ?
Peut-on transformer cette formule en boucle dont la traduction
française serait: tant que l'utilisateut sélectionne une cellule
comprise entre O37 et O57 alors se déplacer en colonne B sur la même
ligne ?

Merci
 
P

Pascal76

Guest
Bonjour

Pour le premier point

for x = 50 to 68 step 2
If ActiveSheet.Range("L" & x) = "" Then Rows(x & ":" x + 1).EntireRow.Hidden = True
Next

Pour le deuxième point

If Not Intersect(Target, Range("O37:O57")) Is Nothing Then Range("B" & ActiveCell.Row).Select

Bon courage

Pascal
 
N

nicolas 65

Guest
Bonjour,
Merci pour votre rapidité.
J'ai testé le code de Pascal 76 apparamment il y a une erreur dans le code sur le premier point. Lorsque j'essaye de lancer le code il me dit erreur de compilation erreur de syntaxe
Pour le deuxième point c'est OK.