Macro pour verrouiller des cellules non vide Fusionnée

Bonjour a tous,

J'ai un petit soucis j'ai réussi a récupérer une macro permettant de verrouiller des cellules non vide grace a un bouton. Le problème c'est qu'il ne verouille pas les cellules FUSIONNEES. Aperemment de ce que j'ai déja lu c'est la commande (SpecialCells(xlCellTypeBlanks).Locked = False) qui ne le permet pas mais je n'ai pas trouvé la bonne commande.

Un Grand merci pour votre aide.

Private Sub CommandButton1_Click()

'Zone utilisée

Dim ZoneUtilisée As String

Dim MotDePasse As String

'Plage utilisée sur la feuil1 de Excel

ZoneUtilisée = "A1:AF650"

'Mot de passe utilisé

MotDePasse = "abcdef"

'On deprotege la feuille par le mot de passe "abcdef"

Feuil1.Unprotect MotDePasse

'Verrouilles toutes les cellules de la plage

Feuil1.Range("A1:AF650").Locked = True

'Deverouilles les cellules vides de la plage

Feuil1.Range("A1:AF650").SpecialCells(xlCellTypeBlanks).Locked = False

'Bloque la saisie des cellules non vides en protégeant la feuil1 par "abcdef"

Feuil1.Protect MotDePasse

End Sub

Bonjour,

Ta première ligne verrouille tout et la deuxième ligne DÉVERROUILLE les cellules vides qu'elles soient fusionnées ou non.

Ta 2ém ligne n'est pas nécessaire.

A+

EDIT : Te relire, le commentaire dans le code dit l'inverse de ton explication.

J'ai testé et ça fonctionne normalement, les cellules fusionnées sont aussi déverrouillées.

Re,

J'ai pas bien compris qu'elle etait ma deuxieme ligne.

J'ai du mal m'exprimé : En fait lorsque je lance la macro tel quelle les cellule fusionnée remplie ne se vérouille pas.

Ce que je souhaite c'est bloqué la saisie des cellules non vides fusionnées ou pas et laissé dévérouiller les cellules vide

Merci !

Maintenant c'est clair et tu à raison, les cellules fusionnées non vide ne sont pas modifiées, Excel n'est pas fort performant avec les fusions de cellules.

N'empêche, il y a (presque) toujours moyen de s'en sortir mais comme je pense que ça peu servir à d'autre

j'ai posté la solution ici

A+

Merci de la part de tout les futurs utilisateurs ayant le meme problème que moi.

J'ai pas encore testé la macro mais qu'est ce que je pourrais rajouter pour la faire marcher avec un bouton comme dans mon exemple. Un bouton qui lance la macro.

Je teste la macro en attendant. Et merci encore !!!

Private Sub CommandButton1_Click()
    PlageAvecMerge
End Sub

C'est tout

Tu doit ajouter la variable MotDePasse dans la sub et adapter la plage et le nom de la feuille.

A+

Merci genial je la teste ce soir ou demain matin et je vous tiens au courant.

À+

Re,

J'ai essayer les deux codes :

  • LigneAvecMerge
  • PlageAvecMerge

Le second ne fonctionne pas chez moi avec les cellules fusionnées.

Mais je n'ai pas réussi malgrès tes indications a le faire tourné avec le bouton je t'envoi mon fichier avec le code VBA j'ai pas trop bien compris ce qu'il fallait que je fasse (Peut importe la plage je la modifierai).

Mais sans bouton aperemment la LigneAvecMErge marche très bien.

Et deuxième question est : est ce que c'est possible que la macro tourne automatiquement sur ce document uniquement.

Merci pour vos conseil

Re,

Effectivement avec Plage ça ne fonctionnait plus, après les tests j'ai voulu simplifier et... mal m'en à pris.

Je retouche la version Plage dans la démo.

Il est mis METTRE DANS UN MODULE.. tu a mis dans un module de feuille, différence ?

Quand tu regarde dans le titre de la fenêtre il y a, par exemple Classeur 1 - Feuil1 (code) -> C'est un module de feuille (pas bon)

Pour ouvrir un Module

Dans l'IDE -> Insertion -> Module il y a dans le titre de la fenêtre par exemple Classeur 1 Module1 (code) -> c'est un bon module quand ont te dis de mettre dans un module (sinon on te dis de mettre dans le module de la feuille.

Et deuxième question est : est ce que c'est possible que la macro tourne automatiquement sur ce document uniquement.

Je ne vois pas ce que tu veux dire.

A+

Merci c'est génial tout marche impéccable

Le hic arrive lorsque je tente de mettre un mot de passe au lieu d'une protection toute simple et il me mette erreur de compilation a chaque fois. J'ai juste rajoutr mon mot de passe sur ton code.

Option Explicit

Sub PlageAvecMerge() --> Qui s'affiche en jaune

Dim Plage As Range

Dim Mg As String, TB

Application.ScreenUpdating = False

With Sheets("Feuil1")

Set Plage = .Range("A1:F700") 'pour l'exemple

.Unprotect MotDePasse = "titi" 'éventuellement MotPasse

For Each Cel In Plage

Mg = Cel.MergeArea.Address

TB = Split(Mg, ":")

If .Range(TB(0)).Value <> "" Then

.Range(Mg).Locked = True

Else

.Range(Mg).Locked = False

End If

Next Cel

.Protect MotDePasse = "titi" 'éventuellement MotPasse

End With

End Sub

Grrr de grrrrrrrrrr

'Tout en haut du module

Option Explicit
Public Const MotPasse = "titi"

Sub PlageAvecMerge()
Dim Cel As Range
Dim Plage As Range
Dim Mg As String, TB
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        Set Plage = .Range("B2:F20") 'pour l'exemple
      .Unprotect MotPasse
       For Each Cel In Plage
            Mg = Cel.MergeArea.Address
            TB = Split(Mg, ":")
            If .Range(TB(0)).Value <> "" Then
                .Range(Mg).Locked = True
                .Range(Mg).Interior.ColorIndex = 3
            Else
                .Range(Mg).Locked = False
                .Range(Mg).Interior.ColorIndex = 6
            End If
        Next Cel
        .Protect MotPasse
   End With
End Sub

Mais la feuille doit d'abord être protégée avec le mot de passe

Clic droit sur l'onglet de la feuille -> Protéger le classeur

Et dans la fenêtre du mot de passe tu tape titi ->OK

Pour ton classeur final enlève les lignes..

    .Range(Mg).Interior.ColorIndex = ..

Ahhhh ces débutants

Je blague... ont à tous étés débutant un jour.

Hésite pas si tu a encore un problème.

A+

Re,

Merci beaucoup ca marche très bien comme ca.

Rechercher des sujets similaires à "macro verrouiller vide fusionnee"