Problème avec la méthode Range de l'objet Worksheet ...

HakunaMatata

XLDnaute Nouveau
Bonjour à tous,

Je suis actuellement sur un projet depuis quelques temps. Et je n'arrive plus à trouver les bonnes solutions. Toutes les recherches que j'ai pu faire etc n'ont pas abouti à grand chose de très intéressant.

Je suis sur une feuille Excel nommée par exemple Juillet. Cette feuille représente un tableau. donc, il y a des colonnes intitulées tout comme les lignes. Les colonnes concernent le jour :
- colonne C = 01 --> 1er juillet ;
- colonne D = 02 --> 2 juillet ;
- ...
Et les lignes ont un titre pour expliquer ce à quoi elles servent...

Quand on va sur cette feuille, automatiquement, on se retrouve sur la case correspondant au jour actuel.
Aujourd'hui, on se retrouvera sur la case R3. Ceci se fait via une macro et elle fonctionne. pas de problèmes sur ce point là.

C'est à partir d'ici que j'ai un souci :
pour une question de sécurité, je voudrais mettre les cellules précédentes en "blocage". Et faire en sorte qu'on ne puisse pas débloquer tant qu'on ne passe pas par une étape particulière.

Pour faire le blocage, je voulais faire une boucle de la façon suivante :
Code:
        For i = 1 To (numCol - 1)   ' numCol étant le numéro de colonne que représente le jour donc, -1 vu 
                                             ' que je veux garder ma colonne active.
            For j = 1 To 200           ' j pour les lignes
                Range(j, i).Protect    ' je veux protéger la cellule en question
            Next j
        Next i

A la base, je voulais directement faire la sélection de cells(1,1) vers cells(200,numCol) ou quelque chose de ce genre.

Cependant, pour les deux cas, un message d'erreur s'affiche :
Erreur d'exécution 1004 : La méthode 'Range' de l'objet '_Worksheet' a échoué.

Là, je ne sais plus comment faire. Svp, pouvez vous m'aider ? Peut être qu'avec un oeil "nouveau" j'y arriverais plus facilement ?!

Merci à l'avance !
 

Pierrot93

XLDnaute Barbatruc
Re : Problème avec la méthode Range de l'objet Worksheet ...

Bonjour,

la propriété "Protect" ne s'applique pas à des cellules mais à la feuille de calcul... pour les cellules, voir la propriété "locked"', à noter que par défaut les cellules sont vérouillées, mais que cela n'a d'effet que si la feuille est protégée...

bon après midi
@+
 

HakunaMatata

XLDnaute Nouveau
Re : Problème avec la méthode Range de l'objet Worksheet ...

Tout d'abord, merci pour la réponse.

Ensuite :

la propriété "Protect" ne s'applique pas à des cellules mais à la feuille de calcul... pour les cellules, voir la propriété "locked"', à noter que par défaut les cellules sont vérouillées, mais que cela n'a d'effet que si la feuille est protégée...

J'avais aussi testé avec Locked mais ça n'avait pas fonctionné non plus... c'est pourquoi après, je me suis dit peut être qu'il fallait le tester avec Protect.
Par contre, je ne savais pas que ca ne fonctionnait que dans le cas si la feuille est protégée...
Comment puis je faire du coup ?

Je pensais que ca marchait puisque sur une ancienne application, une personne avait mis ceci :

Code:
Sub saisidonnes()
   num = 0
   Sheets("SaisieDonnees").Select
   ActiveSheet.Unprotect
   i = 3
   While Worksheets("SaisieDonnees").Cells(3, i) <> ""
     i = i + 1
   Wend
   Worksheets("SaisieDonnees").Range(Cells(3, 2), Cells(126, i - 1)).Select
   Selection.Locked = True
   Cells(3, i).Select
   ActiveSheet.protect
End Sub

... Voilà pourquoi j'ai voulu tester ...
 

HakunaMatata

XLDnaute Nouveau
Re : Problème avec la méthode Range de l'objet Worksheet ...

Alors, j'ai fait un exemple de ce que j'aurais besoin.

Il y a pas mal de commentaires, ce sont les éventuels tests que j'ai fait mais qui n'ont pas marché... peut être pour une erreur de méthodes ou autres...

J'ai fait un peu à la va vite cette mini appli... vraiment pour montrer le truc. Je n'ai pas pris le temps de tout mettre genre le masquage des feuilles à l'ouverture de l'appli, etc.

Donc, c'est dans la feuille JUILLET que j'aimerais qu'on empêche toutes actions sur les cellules précédentes à celle où on est quand on va dans la feuille. et plus précisément les colonnes avant celle ou l'on est !

J'espère m'être fait comprendre ... =S

Merci pour ton aide !
 

Pièces jointes

  • test_vba.xlsm
    29.8 KB · Affichages: 58
  • test_vba.xlsm
    29.8 KB · Affichages: 68
  • test_vba.xlsm
    29.8 KB · Affichages: 67

Pierrot93

XLDnaute Barbatruc
Re : Problème avec la méthode Range de l'objet Worksheet ...

Bonjour,

regarde ceci, fonctionne sous 2003, pas 2007 sous le coude...
Code:
Option Explicit
Sub test()
Dim numCol As Integer
numCol = Day(Date) + 2
With Sheets(UCase(MonthName(Month(Date))))
    .Visible = True
    .Protect "toto", userinterfaceonly:=True
    .Columns(numCol).Resize(, Columns.Count - numCol).Locked = False
End With
End Sub
 

HakunaMatata

XLDnaute Nouveau
Re : Problème avec la méthode Range de l'objet Worksheet ...

Pierrot93 !!!!!!!!!!!
Je ne sais pas comment te remercier !! Ça marche ! C'est exactement ce dont j'avais besoin !!!!!!!!!!
Franchement : MERCIIIII !!! =)

(Désolée pour le temps de réponse par contre ... Je n'ai pu tester que ce matin ... :eek: Au moins, la journée commence bien =D)
 
Dernière édition:

HakunaMatata

XLDnaute Nouveau
Re : Problème avec la méthode Range de l'objet Worksheet ...

Re-bonjour,

J'aurais une question... Est ce normal que toutes les colonnes soient protégées sauf une seule (dans mon cas, c'est celle qui concerne le 11 juillet, colonne : M ) ?

J'ai pourtant suivi le code que tu m'avais donné mais ...

Je ne comprends pas ! Après, si personne ne cherche à faire quoi que ce soit dessus, ca peut aller mais il y a toujours des petits malins ...
 

HakunaMatata

XLDnaute Nouveau
Re : Problème avec la méthode Range de l'objet Worksheet ...

Mmmh... Bon, eh bien, je vais voir ce que ça donnera dans quelques jours. Ou plutôt début Août. Comme ça, je verrais bien si ce n'est que pour le mois de juillet et plus précisément le 11 ..
Merci quand même pour ta réponse. :)
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 393
Membres
103 537
dernier inscrit
alisafred974