IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Verrouillage cellules VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut Verrouillage cellules VBA
    Bonjour à tous!

    Alors voila, j'ai programmé un logiciel en VBA. Il fonctionne bien! Sauf que maintenant je souhaite verrouiller des informations et là les soucis arrivent!
    J'arrive à sélectionner ce que je veux verrouiller automatiquement (en VBA) mais je bloque au moment où j'insère des valeurs dans un tableau.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sheets("Compte rendu").Unprotect
     
        For compteur = 5 To 20000
     
            If Sheets("Compte rendu").Cells(compteur, 1).Value <> "" Then
                If Sheets("Compte rendu").Cells(compteur, 1).Value > date_reunion Then
                    Sheets("Compte rendu").Rows(compteur).Insert
                    Sheets("Compte rendu").Rows(compteur).Locked = False
    ...
               End If
           End if
    Next compteur
    Et la ligne qui plante est celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Compte rendu").Rows(compteur).Locked = False
    Ce que je ne comprends pas c'est que j'enlève la protection de ma feuille (voir Unprotect) avant de faire ces opérations, et ça ne fonctionne quand même pas...

    Si j'essaie de ne pas déverrouiller les cellules, le code plante à la ligne d'aprés (changement de valeur dans une cellule).

    Est-ce que quelqu'un peut m'aider à résoudre mon problème svp?

  2. #2
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Bonjour,

    J'ai essayé ton code, il fonctionne sur ma machine. Et je ne vois pas d'erreur dans ton code... Je ne comprends pas ton bug

    Par contre je pense qu'il y a une incohérence sauf erreur de ma part dans ton code. Unprotect déprotège la feuille, peut être veux tu mettre Protect à la place non?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Non justement, au départ elle est protégée et je la déverrouille pour pouvoir ajouter des lignes etc...
    Ce code ne fonctionne pas chez moi, il me dit que Locked de Range à échoué...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Bon je n'y comprends rien, je ne change rien du tout et je n'ai plus d'erreur...
    Merci quand même de ton aide!

  5. #5
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Attend je suis sur ton cas, je viens de l'exécuter cas par cas.
    En mettant un nombre j'ai obtenu la même erreur que toi
    Les valeurs en colonne A sont bien des nombres?
    J'ai presque compris le problème, quelle est la valeur de date_reunion?

    Alors voici ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub test()
     
    Sheets("Compte rendu").Unprotect
     
        For compteur = 5 To 2000
     
            If Sheets("Compte rendu").Cells(compteur, 1).Value <> "" Then
                If Sheets("Compte rendu").Cells(compteur, 1).Value > date_reunion Then
                    Sheets("Compte rendu").Rows(compteur).Insert
                    Sheets("Compte rendu").Rows(compteur).Locked = False
     
               End If
           End If
    Next compteur
    End Sub
    Celui ci est correct, il n'affichera pas d'erreur sauf bien sur si tu le stop avec ctrl+pause (vu que tu vas jusqu'à la 20000 lignes sa prends 1 min d'exécution, peut être tu as voulu la stopper avant la fin d'où ton impression d'erreur). Essayes avec 200 tu veras en 4 secondes le programme s'arrête.
    Maintenant je t'explique ton code, celui ci insert des lignes à chaque fois qu'il trouve une valeur cad si tu as une valeur 3 ligne 6(en imaginant que date_reunion=0) ton 3 va se décaler à la 20 001 lignes...
    Personnellement je pense pas que c'est cela que tu veux faire. Alors pour avancé peux tu me dire ce que tu veux que ton programme fasse?

    J'espere avoir été clair

    Cdt

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    T'inquiète pas je connais mon code je viens de le programmer, j'ai pas donner la suite du For car j'ai pas mal de cellules que je change mais ne t’inquiète pas, mon If se finit par un Exit For ce qui fait que le programme ajoute seulement une ligne où je le souhaite pour ensuite remplir les cellules de la nouvelle ligne.

    Désolé j'aurais du dire que j'avais coupé mon code, mes ". . ." n'étaient pas assez explicites ^^

    Dans la première colonne j'ai soit un vide, soit une date.

    Enfin, je viens de comprendre d'où venait le problème. J'ai ajouté un DoEvents juste en dessous du Unprotect. J'ai lu dans un vieux sujet que l'on devait associer les deux sinon, de temps en temps (un peu aléatoirement), le Unprotect s'éxécutait mal d'où l'impossibilité de modifier les cellules ensuite (mon erreur).
    Et j'avoue que depuis le DoEvents, je n'ai plus d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Modifier cellules VBA
    Par vannily dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2011, 14h48
  2. Selection cellules vba
    Par iperkut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2010, 20h31
  3. recuperer la couleur d'une cellule VBA
    Par fernier dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/07/2008, 12h46
  4. Verrouillages des cellules VBA
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2008, 11h40
  5. Fusionner cellules VBA
    Par Go_Ahead dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 19/05/2008, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo