Macro pour fusionner des cellules sur une feuille protégée

rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   -  
danielc0 Messages postés 1858 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Il n'est plus possible de fusionner des cellule quand la feuille est protégé ord j'ai absolument besoin de le faire donc j'imagine qu'il faudrait un macro. C'est pourquoi je m'en remet à vous.

Il s'agit d'une fiche de conformité de mesure dans laquelle j'utilise 2 formules dans la colonne I sous condition :

- Si la colonne F n'est pas vide alors une formule se met en place.

- Si la colonne F est vide alors une autre formule se met en place.

Pour l'image de marque je dois éviter les cellules vide donc en tant normal je fusionne les cellules D E et F quand c'est la deuxième formule qui se met en place. 

Etant donnée que je protège la feuille j'aimerai savoir si une macro peut fusionner ce que je sélectionne, je précise bien ce que je sélectionne car des fois je peux aussi fusionner 2 cellules d'une même colonne par exemple I18 et I19.

Le fichier : https://fromsmash.com/M4GloFHo1B-ct

Le mot de passe de la protection : il n'y en a pas

Merci d'avance pour vos réponses.


Windows / Chrome 135.0.0.0

2 réponses

danielc0 Messages postés 1858 Date d'inscription   Statut Membre Dernière intervention   230
 

Bonjour,

Fais un clic droit sur l'onglet de la feuille et clique sur "Visualiser le code" pour ouvrir l'éditeur VB. Dans la partie droite de l'éditeur, clique sur :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Count > 1 Then
    ActiveSheet.Unprotect
    Selection.Merge
    ActiveSheet.Protect
  End If
End Sub

Ferme l'éditeur VB et enregistre le fichier au format .xlsm.

Note : ça va fonctionner à chaque fois que tu vas sélectionner plusieurs cellules, même quand tu ne le veux pas. On pourrait activer et désactiver la macro en faisant un double clic n'importe où.

Daniel


1
rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   6
 

Bonjour danielc0,

Merci pour ton retour, je trouve l'idée superbe mais j'ai peur que mes collègues sur un manque d'attention cela se produise. En plus impossible de revenir en arrière.

Pourrait-on sécurisé avec une sélection des cellules + une action sur touche comme Ctrl+D ?

0
danielc0 Messages postés 1858 Date d'inscription   Statut Membre Dernière intervention   230 > rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour,

Pas de souci.

Fais un clic droit sur l'onglet de la feuille et clique sur "Visualiser le code" pour ouvrir l'éditeur VB. Dans la partie gauche, cherche le VBAProject qui a le même nom que ton classeur :

Fais un clic droit dessus, clique sur "Insertion" et sur "Module".

Dans la partie droite, colle :

Sub Fusion()
  ActiveSheet.Unprotect
  Selection.Merge
  ActiveSheet.Protect
End Sub

Ferme l'éditeur VB. Dans Excel, onglet Affichage, clique sur "Macros". La boîte de dialogue suivante s'affiche :

Clique sur "Fusion", clique sur Options :

Entre "d" dans le champ "Touche de raccourci". Valide. Enregistre le classeur au format .xlsm.

Daniel

PS. Petit bémol, le raccourci Ctrl+d est un raccourci Excel servant à recopier vers la droite. Tant que le classeur sera ouvert, ce raccourci servira à fusionner les cellules et le raccourci Excel sera désactivé.

1
rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   6 > danielc0 Messages postés 1858 Date d'inscription   Statut Membre Dernière intervention  
 

C'est génial merci.

Si je me trompe de cellule par contre je ne peux plus revenir en arrière c'est normal ?

0
rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   6 > danielc0 Messages postés 1858 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour danielc0,

Y a t-il un moyen pour revenir en arrière si je me trompe de cellule quand je fait la fusion ?

0
danielc0 Messages postés 1858 Date d'inscription   Statut Membre Dernière intervention   230 > rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour,

1. Remplace la macro par ce code :

Public Rng As Range

Sub Annuler()
  ActiveSheet.Unprotect
  Rng.UnMerge
  ActiveSheet.Protect
End Sub
Sub Fusion()
  ActiveSheet.Unprotect
  Selection.Merge
  Set Rng = Selection
  ActiveSheet.Protect
End Sub

2. Affecte un raccourci clavier à la macro Annuler, celle qui te permettra d'annuler la dernière fusion de cellules tant que tu n'auras pas changé de feuille.

Daniel

0
Nain_Porte_Quoi Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   2
 

Hello,

une autre solution est de protéger la feuille via VBA avec l'option 

 
UserInterfaceOnly:=True

ActiveSheet.Protect UserInterfaceOnly:=True

A partir de là seul le VBA peut utiliser le merge donc le code serait 

 

Sub Machin

Selection.Merge

End Sub

A affecter à un bouton sur la barre d'accès rapide

0
rikano Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   6
 

Bonjour Nain_Porte_Quoi,

Je n'ai absolument rien compris désolé

0