Macro excel blocage cellule et format [Résolu/Fermé]

- - Dernière réponse : michel_m
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
- 4 avril 2011 à 18:33
Bonjour,
Je suis controleur de gestion.
Pourriez vous m'aider svp?
1/ si je mets une croix dans une cellule de la colonne L je ne peux en mettre une dans la cellule correspondante (voisine) colonne M.
2/ si je mets une croix dans une cellule de la colonne M je ne peux en mettre une dans la cellule (voisine) correspondante colonne L.

3/ colonne P: la cellule ne peut être remplie que si on a une croix dans la colonne L + si l'utilisateur n'applique pas la regle du format DD/MM/YYYY-DD/MM/YYYY doit apparaitre un message d'erreur "error format" + impossibilité de noter qq chose dans la cellule correspondante (voisine) de la colonne Q
4/ colonne Q: la cellule ne peut être remplie que si on a une croix dans la colonne M + si l'utilisateur n'applique pas la regle du format DD/MM/YYYY doit apparaitre un message d'erreur "error format" + impossibilité de noter qq chose dans la cellule correspondante (voisine) de la colonne P

En vous remerciant pour votre aide
Afficher la suite 

7 réponses

Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780
0
Merci
Bonjour,

1/ que fait on si je saisis un autre caractère que "x" dans L ou M ,

2/ si je me suis trompé (par ex "x" dans L au lieu de M) et/ou en 2° étape après le message d'erreur suite à un mauvais format ?
En résumé, comment ré-initialiser (tout ou par étape)? puisque des cellules sont condamnées

Pas simple!
lermite222
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
977 -
Salut michel
Si ont vide la cellule (exemple M ) les deux possibilités sont accessibles.
Édit : Et l'indexation des postes sur CCM n'est pas pour rendre la lecture aisée.
michel_m
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780 -
Salut Lermite
effectivement l'indexation n'est pas terrible sur CCM

comme le problème était intéressant, j'ai fini par faire pour moi (vis à vis de ciel) une bidouille qui marche mais ca devrait pouvoir être simplifié

comme toi, abandon du suivi

bonne soirée et à 1 2 C 4
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
977
0
Merci
Bonjour,
Ce que tu cherche n'est pas facile à faire.
1°) Sélectionner les colonnes M et P
2°) Clic droit >> Format cellules >> Protection >> et décocher Verrouiller
3°) Outils >> Protection >> Protéger la feuille (pas mettre de mot de passe)
4°) clic droit sur l'onglet de la feuille >> Visualiser le code.
4°) Dans la fenêtre coller le code ci-dessous
Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim TB 
    Application.EnableEvents = False 
    ActiveSheet.Unprotect 
    If Not Intersect(Target, Columns("L")) Is Nothing Then 
        'bloque/débloque la cellule M 
        Target.Offset(0, 1).Locked = UCase(Target) = "X" 
        If UCase(Target) = "X" Then 
            Target.Offset(0, 4).Locked = False 
            Target.Offset(0, 4).Select 
        End If 
    ElseIf Not Intersect(Target, Columns("M")) Is Nothing Then 
        'bloque/débloque la cellule L 
        Target.Offset(0, -1).Locked = UCase(Target) = "X" 
        If UCase(Target) = "X" Then 
            Target.Offset(0, 4).Locked = False 
            Target.Offset(0, 4).Select 
        End If 
    ElseIf Not Intersect(Target, Columns("P")) Is Nothing Then 
        'vérifier les conditions et éventuellement afficher un message 
        TB = Split(Target, "-") 
        If UBound(TB) <> 1 Then 
            MsgBox "Vous devez entrer les dates sous le format JJ/MM/AAAA-JJ/MM/AAAA" 
            Target = "" 
        ElseIf Not (IsDate(TB(0)) Or IsDate(TB(1))) Then 
            MsgBox "Vous devez entrer les dates sous le format JJ/MM/AAAA-JJ/MM/AAAA" 
            Target = "" 
        End If 
         
    End If 
    ActiveSheet.Protect 
    Application.EnableEvents = True 
End Sub

Il y a moyen d'être encore plus précis mais c'est une piste, à toi de l'améliorer.
A+
Note : pour mettre des double date dans les colonnes P et G tu doit les configurer avec le format texte.
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
merci mais ça ne me va pas
apres j'peux plus rien rentrer dans les colonnes M et P
c pr des utilisateurs c pas pr moi ce fichier, ils doivent me le remplir
merci en tt cas pr ton aide!
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
977
0
Merci
1/ si je mets une croix dans une cellule de la colonne L je ne peux en mettre une dans la cellule correspondante (voisine) colonne M.
????
Tu n'a pas suivi l'ordre des opérations à effectuer ???
Recommence avec un nouveau classeur

Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
MERCI CA MARCHE JE M'ETAIS TROMPEE EN EFFET
par contre pour le format de la colonne Q il n'y a rien dans la macro quand je duplique dessous celle de la colonne P en changeant P par Q et en changeant le format date rien ne se passe?
lermite222
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
977 -
pas compris, explique mieux
pardon c vrai que moi j'ai le fichier devant moi
ça je ne le retrouve pas dans la macro?
4/ colonne Q: la cellule ne peut être remplie que si on a une croix dans la colonne M + si l'utilisateur n'applique pas la regle du format DD/MM/YYYY doit apparaitre un message d'erreur "error format" + impossibilité de noter qq chose dans la cellule correspondante (voisine) de la colonne P
En vous remerciant pour votre aide
désolée je dois pas reussir à m'en sortir avec le verrouillage et tout meme ton exemple si dessus j'arrive pas à le faire fctionner
ggggggr ça marche plus du tout!
je crois aussi qu'on s'emmele dans mes colonnes toute à l'heure tu m'as parlé de la G dont moi je n'ai pas parlé?
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780
0
Merci
SUPPRIME, JE NE SUIS PAS UN CERVEAU MACRO
lermite222
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
977 -
Salut Michel
Quel rapport ???
Haarfff.. j'ai suivi les autres postes.. (ce que je n'avais pas fait)
Abandon du suivi..
Messages postés
11
Date d'inscription
jeudi 31 mars 2011
Statut
Membre
Dernière intervention
1 avril 2011
0
Merci
Bonjour
Merci mais ça ne fctionne pas
si je mets x en cellule L5 (mes enonces vt de lignes 1 à 4) je reussis à mettre x en cellule M5 et vice versa
si je mets un format date faux apparemment la colonne Q le prend
si je mets une croix sans L5 j'arrive quand meme à rentrer une date dans Q alors que je devrais ne pouvoir que la rentrer dans P
si je mets une croix dans M5 j'arrive quand meme à rentrer une date dans P alors que je ne devrais pouvoir la rentrer que dans Q
j'en peux plus de cette macro ;-)
je veux un cerveau macro!
ciel2505
Messages postés
11
Date d'inscription
jeudi 31 mars 2011
Statut
Membre
Dernière intervention
1 avril 2011
-
je parle de moi quand je dis que je veux un cerveau macro, je suis meme pas capable de sortir un end sub contrairement à vous sur le forum!
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780
0
Merci
je veux un cerveau macro!

Le débile qui a essayé de t'aider te remercie
ciel2505
Messages postés
11
Date d'inscription
jeudi 31 mars 2011
Statut
Membre
Dernière intervention
1 avril 2011
-
je m'excuse j'ai essayé aussi en majuscule mais ça marche pas...
ciel2505
Messages postés
11
Date d'inscription
jeudi 31 mars 2011
Statut
Membre
Dernière intervention
1 avril 2011
-
Bonjour Michel
Dans la macro que tu me prposes ci dessus qui fctionne ce matin (?suis vraiment nulle tu vois) ce qui derange c'est que on saute automatiquement de la cellule x à la cellule date.
Comment puis je faire pr que apres ma croix en colonne L ou M on saute sur la cellule N puis O puis P si la croix etait en L ou Q si la croix etait en M?
Je te remercie à l'avance pour ton aide precieuse
michel_m
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780 -
Allez, on va être sympa, je n'ai guère le temps aujourd'hui, mais tes observations étaient justifiées. J'ai donc bidouillé un truc qui a l'air de marcher mais je n'ai pas encore vérifié à fond ni optimisé
pour plaider coupable: ton problème est super-piègeux
ciel2505
Messages postés
11
Date d'inscription
jeudi 31 mars 2011
Statut
Membre
Dernière intervention
1 avril 2011
-
oui je suis d'accord avec toi
je dirais meme que c assez dangereux comme macro surtout que je serais pas d'une assistance super !
michel_m
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780 -
OK, Il me reste un piège à déjouer: croix dans L, format correct en P, écriture en Q
si je m'amuse à écrire dans P 'toto" pas de réaction de mauvais format
idem pour M
je regarderai certainement samedi, donc sois patiente!
histoire d'avoir un peu la paix,Je t'enverrai proposition par message personnel comme c'est déjà prévu pour l'ami Lermite car il est souvent de bon secours
Messages postés
7791
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
10 août 2019
1194
0
Merci
Bonjour le Forum,

Moi aussi de suis ... à la retraite.

J'ai rapidement compris qu'il fallait appliquer quelques règles fondamentales avec l'utilisateur lambda pour éviter de nombreux problèmes, en particulier quand on reçoit de nombreux fichiers de différentes sources :
- ne jamais mettre de macro dans les fichiers utilisateurs
- demander des informations simples (éviter toute syntaxe particulière)
- utiliser la puissance de calcul d'Excel pour transformer ces informations
- protéger les feuilles de calcul (sans mot de passe, ça ne sert qu'à être oublié)
- définir le format numérique des valeurs à saisir, notamment des dates.
- utiliser des formules qui laissent des libertés à l'utilisateur, beaucoup de SI() et N()
- utiliser la validation des données chaque fois que c'est utile pour :
----- afficher un message d'information pour la saisie
----- contrôler l'information saisie et afficher le message d'erreur éventuel

Donc pour répondre aux question :
1) en L2 : Données / Validation / Personnalisé / Formule : =M2<>"x"
2) en M2 : Données / Validation / Personnalisé / Formule : =L2<>"x"
3) en P2 : Données / Validation / Date ou Personnalisé ....
4) idem
Cordialement
Patrice
Patrice33740
Messages postés
7791
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
10 août 2019
1194 -
Michel, cette réponse est destinée à ciel 2505 je n'ai fait que recopier ici ma réponse faite dans ce post :
http://www.commentcamarche.net/...

Ce sont des conseils avisés, destinés au « contrôleur de gestion »
michel_m
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780 -
Bien sûr, si ca vient de part, ca ne peut ¨être que "des conseils avisés", en toute modestie!
lermite222
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
977 -
Bel essais de rattrapage :-)
Je te rappel que nous sommes tous bénévoles et que nous aidons dans le mesure de nos moyens qui ne sont certes pas aussi illimités que les tient.
Et nous ne sommes pas ici pour que tu arrive avec tes gros sabots pour nous faire la leçon.
comment puis je faire pour cloturer ce sujet (j'ai completement changé mon projet pr en faire un plus simple où il me faut qu'une mini macro?)
michel_m
Messages postés
15906
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
24 août 2019
2780 -
c'est fait, je t'ai mis en résolu