Problème de macro : Verrouillage de cellule non fixe

Bonjour.

Je cherche à me faire un tableau de bord automatisé qui va me lister les taches que j'ai à faire et dans quel délai, avec des systèmes de priorité / urgence avec des affichages couleurs différents.

En gros :

Ma feuille 1 liste toutes les taches non encore accomplies de chaque mois.

Les feuilles 2 à 13 représentent chaque mois.

Chaque feuille de mois à une 50aine de lignes de liste de taches.

Quand je saisi une tache dans janvier, je dois cliquer sur un bouton 'Mise à jour' pour MaJ la feuille 1 récapitulative. La macro que j'ai faite copie donc la dernière ligne non vide du mois, pour la coller dans la dernière ligne vide du tableau récapitulatif.

Le système actuel recopie également les mises en forme conditionnelles pour les alertes couleurs donc pour ça tout va bien.

Mon problème :

Quand je clique sur le bouton Mise à jour je n'arrive pas à modéliser ce qui suit :

Verrouiller les cellules C, D, E et G de la dernière ligne non vide

Déprotéger les cellules C, D, E, F, G de la dernière ligne vide.

J'utilise l'application End(xlDown).Offset(0).Select mais ça ne fonctionne pas d'où mon problème. alors soit j'ai fais une faute de frappe soit ya un truc qui plante mais je ne sais pas quoi.

Pouvez vous m'aider svp?

Merci

Bonjour,

Tu peux visualiser la valeur de la dernière ligne renseignée en utilisant une variable et le mode pas à pas (F8).

Exemple de code pour la dernière ligne renseignée de la colonne A de la feuille "Feuil1".

Dim DerLig As Long
DerLig = Worksheets("Feuil1").Range("A2").End(xlDown).Row

Traduction : on se positionne sur la cellule A2 et on descend la colonne jusqu'à la dernière ligne renseignée.

En exécutant la procédure en pas à pas, dans la fenêtre Variables locales tu vois s'afficher la valeur de DerLig.

A+

Bonjour

Merci de cette réponse rapide mais ça ne fonctionne pas malheureusement je dois me planter.

Avec cette formule. Est-ce que tu peux la compléter pour que ça sélectionne les cellules des colonnes C à G s'il-te-plaît? que je vois ou est mon problème.

Merci

Merci de cette réponse rapide mais ça ne fonctionne pas malheureusement je dois me planter.

Je veux bien t'aider mais il faut que tu donnes un peu de grain à moudre.

"Ca ne fonctionne pas" c'est un peu court comme explication.

Est-ce que tu peux la compléter pour que ça sélectionne les cellules des colonnes C à G

Tout d'abord, tu dois savoir qu'il est inutile de "sélectionner" la cellule. Ce qui importe, c'est de définir l'emplacement de l'action à réaliser. En clair, trouver le numéro de ligne.

Pour trouver le numéro de la dernière ligne renseignée, il y a plusieurs possibilités. Le choix dépend de la disposition de tes données.

Pour voir quelle instruction donne un résultat correct, il faudrait que tu joignes un exemple de ton classeur (sans données confidentielles).

A+

Je vais l'upload en milieu d'après midi. La j'ai modifié ma macro et ça a foiré tout mon travail précédent je dois tout recommencer pour en revenir au point ou j'ai fais ce post -_-'

j'ai été rapide ^^

En gros dans la feuille "Janv" les cellules C à G de la dernière ligne vide (la ou ya les bordures mais pas de texte) doivent être déverrouillées, et la ligne précédente doit être entièrement lock a l'exception de 'Fais le'

Désolé c'est assez moche ma macro mais j'ai appris VBA tout seul depuis peu alors je fais ce que je peux

Tu peux déjà tester ces instructions

Sub test()
Dim LastJanv As Long
    With Worksheets("Janv")
        'Dernière ligne renseignée
        LastJanv = .Range("C65536").End(xlUp).Row
        'on verrouille la dernière ligne renseignée
        .Rows(LastJanv).Locked = True
        'on déverrouille la cellule en colonne F
        .Cells(LastJanv, 6).Locked = False
        'on déverrouille la ligne suivante
        .Rows(LastJanv).Offset(1).Locked = False
    End With
End Sub

A+

NIKEL ça marche ^^

EDIT

en fait le bouton juste avec ta macro marche. Intégré dans la mienne il y a une erreur, impossible de définir la propriété locked de la classe range

Voila ma macro :

Sub MAJJANVIER()
'
' MAJJANVIER Macro
'

'
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("Liste de Taches").Select
    ActiveSheet.Unprotect
    Range("C1").End(xlDown).Offset(1).Select
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    ActiveCell.Rows.RowHeight = 15
    Dim lastline As Integer
    lastline = Sheets("Liste de Taches").Range("C65536").End(xlUp).Row + 1
    Sheets("Liste de Taches").Cells(7, 1).EntireRow.Copy
    Sheets("Liste de Taches").Select
    Sheets("Liste de Taches").Cells(lastline, 1).EntireRow.Select
    ActiveSheet.Paste
    ActiveCell.Rows.RowHeight = 15
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Sheets("Janv").Select
        Dim LastJanv As Long
        With Worksheets("Janv")
            LastJanv = .Range("C65536").End(xlUp).Row
            .Rows(LastJanv).Locked = True
            .Cells(LastJanv, 6).Locked = False
            .Rows(LastJanv).Offset(1).Locked = False
        End With
End Sub

Bonjour,

A tester.

J'ai placé des commentaires pour que tu puisses adapter le code

22tbsafe.xlsm (27.08 Ko)

A+

frangy a écrit :

Bonjour,

A tester.

J'ai placé des commentaires pour que tu puisses adapter le code

A+

Ok c'est parfait j'ai compris mon erreur via ta macro : j'avais tout simplement pas déverrouillé la feuille d'où le fait que ça ne marchait pas correctement.

Il me reste plus qu'un gros problème mais je vais faire un autre sujet pour demander un avis (pas une solution pour le moment je veux chercher ^^ )

Merciiii

à lock

Rechercher des sujets similaires à "probleme macro verrouillage fixe"