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 :

vérouiller la ligne si A2 contient OUI


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chargée appui pilotage
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée appui pilotage
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut vérouiller la ligne si A2 contient OUI
    Bonjour cher forum!

    J'ai besoin de vos lumières pour une macro.
    je souhaite créer une boucle qui verrouille la ligne (format de cellule, protection, verrouillée) si dans la colonne A il y a "OUI".
    Ex: ligne 2, A2 contient OUI alors la ligne 2 se verrouille
    ligne 3, A3 contient NON alors la ligne reste déverrouillée
    Voici le code que j'ai rédigé mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Prot_ligne()
    Application.ScreenUpdating = False
    dernière_ligne = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
    For i = dernière_ligne To 1 Step -1
    If Application.WorksheetFunction.CountA(Rows(i)) = "OUI" Then
    Rows(i).Locked
    End If
    Next i
    End Sub
    Un petit coup de main svp

  2. #2
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Je ne comprend pas trop la façon dont tu compte les lignes, du coup je remplacerais la ligne 1 par la 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dernière_ligne = ActiveCell.SpecialCells(xlCellTypeLastCell).Row
    dernière_ligne = Worksheets("TaFeuille").Columns(X).Find("*", , , , xlByRows, xlPrevious).Row
    Avec X la colonne ou tu va compter les lignes

    Ensuite, je remplacerais la ligne 1 par la 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.WorksheetFunction.CountA(Rows(i)) = "OUI"
    Worksheets("TaFeuille").cells(i, 1).value = "OUI"

  3. #3
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.WorksheetFunction.CountA(Rows(i)) = "OUI" Then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    par If cells(i,1)= "OUI" Then
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if range("a" & I)= "OUI" then

  4. #4
    Membre averti
    Femme Profil pro
    Chargée appui pilotage
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée appui pilotage
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut corrections proposées
    Merci Nico d'avoir répondu!
    J'ai essayé de faire les modifs que tu m'as proposé et ça ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Prot_ligne()
    Application.ScreenUpdating = False
    dernière_ligne = Worksheets("RenseignementsVisites").Columns(A).Find("*", , , , xlByRows, xlPrevious).Row
    For i = dernière_ligne To 1 Step -1
    If Worksheets("TaFeuille").Cells(i, 1).Value = "OUI" Then
    Rows(i).Locked
    End If
    Next i
    End Sub
    Le débogage me montre un problème sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dernière_ligne = Worksheets("RenseignementsVisites").Columns(A).Find("*", , , , xlByRows, xlPrevious).Row
    Ma feuille s'appelle RenseignementsVisites et la colonne ou je compte est la colonne A.

    Merci pour ton aide

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour, bonjour !

    Très mauvaise utilisation de la méthode Find ‼ Et pourtant tout est clair dans l'aide VBA intégrée et son exemple …


  6. #6
    Membre averti
    Femme Profil pro
    Chargée appui pilotage
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée appui pilotage
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Par défaut
    Bonjour Keygen08,
    J'ai tenté tes corrections mais j'ai une erreur d’exécution '1004 "la méthode locked de la classe range a échoué"
    Merci pour ton aide.

    Marc-L,
    Merci pour ton commentaire constructif...
    J'essaie de trouver la solution par moi même, j'ai jamais eu de formation, donc c'est pas simple pour moi.
    Je tire cette macro d'un manuel de formation qu'on m'a prêté...

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Merci d'indiquer les références de ce manuel afin de conseiller de ne pas l'acheter ‼


    Directives (B-A-BA de l'utilisation de l'aide VBA intégrée, justement pour débutant !) :

    • Placer le curseur texte clignotant dans le code sur l'instruction Find.

    • Appuyer sur la touche !

    • Lire en particulier la partie s'appliquant à l'objet Range

    Que renvoie cette méthode Find si rien n'est trouvé ? Déduction ?

    Juste appliquer l'exemple de l'aide …


    _________________________________________________________________________________________________
    L'avenir n'appartient pas qu'à ceux se levant tôt mais surtout à ceux se donnant la peine de lire …

Discussions similaires

  1. Suppression de ligne si cellule contient "prov"
    Par mathis86 dans le forum Excel
    Réponses: 3
    Dernier message: 06/07/2015, 14h47
  2. [XL-2007] Suppression ligne qui ne contient pas de cellule de couleur.
    Par chpierro62 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/01/2015, 09h58
  3. [MySQL] Formulaire qui ne se réaffiche pas après submit - une fois en ligne, mais en local oui
    Par SunSeeker dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/01/2015, 14h29
  4. Réponses: 4
    Dernier message: 10/02/2010, 21h07
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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