Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 10h11   #1
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Par défaut Macro pour enlever protection de cellules

Bonjour à toutes et à tous,

Lors de la suppression via macro d'une plage de cellules B, je suis confronté au problème de protection de celles-ci. Ces cellules B sont en effet des copies de cellules A qui doivent être protégées à tout prix.
L'utilisateur a la possibilité de supprimer les cellules B. Sauf que ma macro de suppression ne fonctionne pas, puisque les cellules B sont protégées.

J'ai essayé de m'inspirer du lien ci-dessous, sans trouver de solution convaincante à mon problème (en fait, je n'arrive pas à utiliser la fonction "unprotect" manifestement..) :

http://www.developpez.net/forums/d42...n-feuille-vba/

Toute idée est la bienvenue
Merci d'avance !
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 10h30   #2
Membre confirmé
 
Homme Denis Morena
Technicien qualité et métrologie industrielle
Inscription : avril 2011
Messages : 115
Détails du profil
Informations personnelles :
Nom : Homme Denis Morena
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Technicien qualité et métrologie industrielle
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 115
Points : 221
Points : 221
Bonjour,

je pense que déprotéger la feuille avant de supprimer et la protéger après la suppression de la colonne B devrait suffire ?

Code :
1
2
3
    ActiveSheet.Unprotect
    Columns("B:B").Delete
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Cordialement
White Mibu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/10/2011, 10h41   #3
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
C'est parfait, merci beaucoup !
Je travaillais trop spécifiquement, avec les cellules, quand il apparaît bien plus simple de jouer sur la protection de la feuille entière !

Une autre petite question : qu'est-ce qui ne va pas dans le code ci-dessous ?

Code :
1
2
3
4
5
6
 
If Range("E9").Value < Range("f18").Value Then
                        Range("c21").Value = 0
                    Else
                        Range("c21").Value = Sum("B4:B8") + Sum("e4:e8")) / (sqrt(3) * Range("m3").Value)
                    End If
Lors de l’exécution de la macro, l'erreur "Sub ou Fonction non définie"

apparaît..

Merci encore !
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 11h24   #4
Membre confirmé
 
Homme Denis Morena
Technicien qualité et métrologie industrielle
Inscription : avril 2011
Messages : 115
Détails du profil
Informations personnelles :
Nom : Homme Denis Morena
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Technicien qualité et métrologie industrielle
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 115
Points : 221
Points : 221
C'est normal la fonction ne s'utilise pas comme ça, essai :

Code :
1
2
3
4
5
If Range("E9").Value < Range("F18").Value Then
    Range("C21").Value = 0
    Else
        Range("C21").Value = Application.Sum(Range("B4:B8")) + Application.Sum(Range("E4:E8")) / (Sqr(3) * Range("M3").Value)
    End If
Et en VBA sqrt devient Sqr(3).

Cordialement
White Mibu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/10/2011, 13h08   #5
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
En plein dans le mille une fois encore !
Merci beaucoup..

Quel est alors le problème avec la syntaxe ci-dessous, avec cel défini comme Range ? L'erreur 'Incompatibilité de type" apparaît, j'ai bien essayé d'enlever les guillemets, sans effet..

Code :
Application.Sum("cel.Offset(0,-3):cel.Offset(i,-3)")
Merci..!
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h34   #6
Membre confirmé
 
Homme Denis Morena
Technicien qualité et métrologie industrielle
Inscription : avril 2011
Messages : 115
Détails du profil
Informations personnelles :
Nom : Homme Denis Morena
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Technicien qualité et métrologie industrielle
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 115
Points : 221
Points : 221
Oula ! ça me parait bizare ce que tu essai de faire...
C'est assez incohérent, l'offset s'utilise comme ceci :

Code :
ActiveCell.Offset(0, -3).Select
Mais dans ton cas je sais pas si cela va t'aider =S

Peut-tu m'expliquer ce que tu veux faire et le but de cette manip ?

Enfin je pense savoir ce que tu essai de faire mais tu dois t'y prendre comme ça :

Code :
1
2
Range(Cells(x, i - 3), Cells(x, i - 3)).Select
Application.Sum(Selection)
d'abords sélectionner les cases et ensuite faire la somme.

En ce qui concerne les variables, comment les mettre en place, il me faudrait plus d'infos sur ce que tu veux exactement pour t'aider =)
White Mibu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h54   #7
Membre du Club
 
Homme
Inscription : janvier 2010
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : janvier 2010
Messages : 176
Points : 67
Points : 67
Grosso modo je voulais sommer les valeurs d'une plage de cellule (décalées de 3 colonnes par rapport à cel), mais tu as su comprendre (et résoudre) mon problème (again !)

Je suis assez déçu des fonctions sommes sous VBA, pas très intuitives et pratiques.. Si ça continue, je vais finir par me fabriquer ma p'tite fonction !

Merci beaucoup !
d0n32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 16h20   #8
Membre confirmé
 
Homme Denis Morena
Technicien qualité et métrologie industrielle
Inscription : avril 2011
Messages : 115
Détails du profil
Informations personnelles :
Nom : Homme Denis Morena
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Technicien qualité et métrologie industrielle
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 115
Points : 221
Points : 221
ça devient intuitif quand on s'y frotte un peu

pour récupérer l'indice de la colonne si elle est variable après ton opération :
Code :
Variable = ActiveCell.Column
il faut être placé au bon endroit bien sûr...

Fin bref si ton problème est résolue tant mieux =).

Mais si t'a d'autres questions n'hésite pas !

Bonne continuation.
White Mibu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h05.


 
 
 
 
Partenaires

Hébergement Web