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 :

Copier/coller des lignes avec des cellules verrouillées [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut Copier/coller des lignes avec des cellules verrouillées
    Bonjour,

    J'ai une feuille qui est protégée par mot de passe pour éviter aux utilisateurs (inexpérimentés et mal à l’aise avec les ordinateurs en général) de modifier certaines cellules de ma feuille.
    Quand ces utilisateurs utilisent le tableau, ils sélectionnent une ligne entière pour la reproduire en-dessous. Le souci est que maintenant les cellules contenant des formules sont verrouillées.
    Le copier/coller ne fonctionne plus (et oui parce que dans la ligne j’ai une succession de cellules verrouillées et déverrouillées).
    Quelles solutions existent-ils pour copier/coller une ligne entière sans déverrouiller la feuille?

    Adri

    PS: voir tableau ci-joint (simplifié et censuré pour des raisons professionnelles)
    PS²: allez-y doucement si vous parlez le VBA .
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 956
    Points : 28 965
    Points
    28 965
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    La protection d'une feuille n'empèche pas la copie de cellules sauf si en protégeant la feuille on a décoché dans la zone Autorisé tous les utilisateur à Sélectionner les cellules verouillées.
    Par contre, il est évidemment exclus de coller.
    Sinon en VBA, il y a moyen d'écrire sur une feuille protégée à condition de le faire avec du code VBA mais comme tu as écrit allez-y doucement si vous parlez le VBA, j'attends tes réactions.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    Ok merci de la réponse rapide.
    Quand j'ai dis doucement je voulais dire que c'est pas en me donnant un bout de code dans le but que je le finisse que j'arrive à le finir tout
    seul .
    Mais Ouvrir VBA coller un bout de code et changer le nom de la feuille ou modifier le nom d'une cellule par exemple ne me pose pas de problème
    Donc oui je veux bien une solution VBA si ça correspond à ce que je cherche et que ça ne te prend pas trop de temps.

    Adri

  4. #4
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Points : 1 925
    Points
    1 925
    Billets dans le blog
    5
    Par défaut
    Le copier/coller ne fonctionne plus (et oui parce que dans la ligne j’ai une succession de cellules verrouillées et déverrouillées).
    Quelles solutions existent-ils pour copier/coller une ligne entière sans déverrouiller la feuille?
    Si à la protection tu as coché les choix: Sélectionner les cellules Verrouillées/Déverrouiller, et que tu as l'avance une plage de cellules déverrouillée.

    La protection d'une feuille n'empèche pas la copie de cellules sauf si en protégeant la feuille on a décoché dans la zone Autorisé tous les utilisateur à Sélectionner les cellules verouillées.
    Par contre, il est évidemment exclus de coller.
    Ces explications peuvent être utiles:
    Dans la boîte de dialogue Format de cellule Onglet Protection déverrouille la ou les lignes en dessous du tableau où tu veux autoriser les modifications.

    le copier/coller par défaut dans une feuille non protégée copie le contenu et les formats appliqués aux cellules copiées avec un bouton d'options disponible pour Valeurs ,Format nombre... à l'extrémité droite de la zone destination

    Voici ce qui se passe quand on copie une plage verrouillée vers une plage déverrouillée:
    Dans le cas d'une feuille protégée, les formats et le contenu sont copiés dans la destination sans la protection de cellules.
    Dans une feuille non protégée: les formats et la protection de cellule sont copiées dans la destination.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 956
    Points : 28 965
    Points
    28 965
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Voilà un code VBA qui protège la feuille nommée Feuil1 tout en autorisant le code VBA à écrire dedans et écrit donc ensuite un texte dans la cellule A1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T()
     Dim sht As Worksheet: Set sht = ThisWorkbook.Worksheets("Feuil1")
     sht.Protect Password:="Toto", UserInterfaceOnly:=True
     sht.Range("A1") = "Vous avez dit protégé ?"
    End Sub

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    @NVCfrm: Merci de vos explications

    @Philippe Tulliez: Maintenant j'ai besoin d'explications

    • J'ai changé le nom de la feuille pour mon exemple
    • Le mot de passe de pretection de ma feuille j'ai mis "toto"

    Ce que je ne comprends pas ce que veut dire la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sht.Range("A1") = "Vous avez dit protégé ?"
    Autre question, ou dois-je coller le code que vous m'avez donné?
    Moi j'ai créer un module dans "ThisWorkbook" de mon classeur Excel qui s'appelle "Module1"

    Cordialement,
    Adri

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 956
    Points : 28 965
    Points
    28 965
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par Adri687 Voir le message
    @NVCfrm: Merci de vos explications
    @Philippe Tulliez: Maintenant j'ai besoin d'explications
    • J'ai changé le nom de la feuille pour mon exemple
    • Le mot de passe de pretection de ma feuille j'ai mis "toto"

    Ce que je ne comprends pas ce que veut dire la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sht.Range("A1") = "Vous avez dit protégé ?"
    Cette ligne de code écrit dans la cellule A1 de la feuille Feuil1 le texte "Vous avez dit protégé ?". C'est un clin d'oeil, pour montrer que malgré la protection le code VBA peut tout de même écrire sur cette feuille qui est protégée.
    Autre question, ou dois-je coller le code que vous m'avez donné?
    Moi j'ai créer un module dans "ThisWorkbook" de mon classeur Excel qui s'appelle "Module1"
    Cordialement,Adri
    Le code que j'ai donné n'est qu'un exemple.
    Alors créér un module dans le module ThisWorkbook cela n'est pas possible. Tu veux certainement parler du classeur où se trouve le code VBA.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    Ok j'ai compris. Il faut exécuter la macro pour que le message s'affiche en A1.
    J'y suis arrivé.
    Maintenant, pour que coller une ligne entière je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub copiercollerligne()
        Rows("1:1").Select
        Selection.Copy
        Rows("2:2").Select
        ActiveSheet.Paste
    End Sub
    Comment intégrer la sélection aléatoire de ligne et ou ajouter le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T()
     Dim sht As Worksheet: Set sht = ThisWorkbook.Worksheets("Feuil1")
     sht.Protect Password:="Toto", UserInterfaceOnly:=True
     sht.Range("A1") = "Vous avez dit protégé ?"
    End Sub
    Est-il possible de coller sans passer par Affichage > Macros > Afficher les Macros > Exécuter ?
    Juste en faisant clic droit > coller ?

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 956
    Points : 28 965
    Points
    28 965
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    La procédure T que j'ai mise en ligne est la procédure qui protège la feuille.
    Bien sûr tu enlèves la dernière ligne (le clin d'oeil), c'était juste pour montrer que l'on pouvait écrire malgré la sélection .
    Cette procédure tu l'appelles bien entendu comme tu l'entends Toto, maProtection, LaTienne etc...
    Tu invoques cette procédure une seule fois, le jour où tu veux protéger ta feuille. Exactement comme toi quand tu protèges ta feuille.
    Ensuite tu crées une procédure d'écriture comme celle que tu as affichée mais de préférence sans les (grrrr) Select et les Selection, cela ralenti l'exécution et s'est parfaitement superfétatoire. On le répète sans arrêt sur ce forum.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Points : 22
    Points
    22
    Par défaut
    Ok merci pour ces précisions maître
    Je vais pouvoir coder avec ces éléments j'espère ne pas trop galérer

    A bientôt,
    Adri

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/08/2013, 12h21
  2. Joindre des lignes avec des commandes shell
    Par sab113 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 30/04/2013, 01h32
  3. Réponses: 3
    Dernier message: 09/10/2009, 18h05
  4. Est-il possible de créer des tables avec des lignes identiques ?
    Par raton_laveur dans le forum Développement
    Réponses: 2
    Dernier message: 25/05/2009, 09h10
  5. Copier/coller plusieur ligne avec vb
    Par fred43 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/04/2009, 19h37

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