VBA EXcel
Résolu
djeff94
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
djeff94 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
djeff94 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
c est encors moi je découvre vrement VBA donc j aimerai savoir si il ya un moyen d interdir l ecriture sur une cellule par exemple B8 si A8="Non" si c est pas le cas on peut ecrire normalement j est essayer avec la validation de donnée sur ms c est pas vrement sa car si on fait du copier coller sa ne marche plus
merci :)
c est encors moi je découvre vrement VBA donc j aimerai savoir si il ya un moyen d interdir l ecriture sur une cellule par exemple B8 si A8="Non" si c est pas le cas on peut ecrire normalement j est essayer avec la validation de donnée sur ms c est pas vrement sa car si on fait du copier coller sa ne marche plus
merci :)
A voir également:
- VBA EXcel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
14 réponses
Bonjour,
Une solution en VBA.
1/Selectionner la feuille entière et dévérouiller toutes les cellules
2/ Dans le code associé à la feuille (clic droit sur le nom et "visualiser le code")
Copier coller la macro suivante :
Ainsi chaque fois que l'on modifie la valeur de A8 si on met la valeur "Non" cela protége la cellule B8 qui ne peut plus être modifiée.
A+
Cordialement,
Une solution en VBA.
1/Selectionner la feuille entière et dévérouiller toutes les cellules
2/ Dans le code associé à la feuille (clic droit sur le nom et "visualiser le code")
Copier coller la macro suivante :
Private Sub Worksheet_Change(ByVal Target As Range) ActiveSheet.Unprotect Range("B8").Locked = Not Intersect(Target, Range("A8")) Is Nothing And Range("A8").Value = "Non" ActiveSheet.Protect End Sub
Ainsi chaque fois que l'on modifie la valeur de A8 si on met la valeur "Non" cela protége la cellule B8 qui ne peut plus être modifiée.
A+
Cordialement,
merci sa marche a merveille
si je peux me permettre comment faire la macro sa sur toute la cologne A jusqu'a se qu on atteigne une cellule vide
merciiiii :)
si je peux me permettre comment faire la macro sa sur toute la cologne A jusqu'a se qu on atteigne une cellule vide
merciiiii :)
Je ne comprend pas bien.
Il faut que cela fonctionne sur toute la colonne A. C'est à dire que pour n'importe quelle ligne (tant que l'on est pas à la fin). Donc prenons un exemple si il y a des valeurs jusqu'a la ligne 20.
Aors si A1 faut Non on ne peut pas modifier B1.. si A2 vaut Non on ne peut pas modifier B2 etc... Jusqu'a si A20 vaut Non on ne peut pas modifier B20.
C'est bien cela ?
Il faut que cela fonctionne sur toute la colonne A. C'est à dire que pour n'importe quelle ligne (tant que l'on est pas à la fin). Donc prenons un exemple si il y a des valeurs jusqu'a la ligne 20.
Aors si A1 faut Non on ne peut pas modifier B1.. si A2 vaut Non on ne peut pas modifier B2 etc... Jusqu'a si A20 vaut Non on ne peut pas modifier B20.
C'est bien cela ?
ah dsl ms finalement sa marche pas sa me bloque mon choix une une fois que j ai choisi non je peu plus rechoisir oui sa ne modifie plus ma cellule a8 elle reste figé a une valeur
voila c est excactement sa et pour etreplus precis c est pas que la valeur dois etres modifier ms sa doit reste une case vide car si il mentionne non sa veu dire qu il refuse quelque service dc pas besoin de mettrede prix sa dois tt simplement se verouiller
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voila une nouvelle proposition pour la macro. Toujours clic droit sur l'onglet de la feuille et "visualiser le code". Remplacer la macro précédente par celle-ci
Si on met "Non" en A la cellule se grise en B et est mise à vide
Il faut toujours en préalable déverrouiller toutes les cellules (sélectionner toutes les cellules par le carré en haut à gauche puis "format de cellule"/"Protection" décocher la case "verrouillée")
Juste une remarque : La feuille est protégée sans mot de passe par la macro. A la fin elle reste protégée donc il faut penser à la déprotéger si besoin. Mais dès que l'on modifie une valeur dans la colonne A la macro se déclenche et reprotége la feuille.
Cordialement,
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then ActiveSheet.Unprotect Application.EnableEvents = False DerLig = Range("A" & Rows.Count).End(xlUp).Row For Lig = 1 To DerLig If Range("A" & Lig).Value = "Non" Then Range("B" & Lig).Interior.Color = RGB(200, 200, 200) Range("B" & Lig).Value = "" Range("B" & Lig).Locked = True Else Range("B" & Lig).Interior.Pattern = xlNone Range("B" & Lig).Locked = False End If Next Lig Application.EnableEvents = True ActiveSheet.Protect End If End Sub
Si on met "Non" en A la cellule se grise en B et est mise à vide
Il faut toujours en préalable déverrouiller toutes les cellules (sélectionner toutes les cellules par le carré en haut à gauche puis "format de cellule"/"Protection" décocher la case "verrouillée")
Juste une remarque : La feuille est protégée sans mot de passe par la macro. A la fin elle reste protégée donc il faut penser à la déprotéger si besoin. Mais dès que l'on modifie une valeur dans la colonne A la macro se déclenche et reprotége la feuille.
Cordialement,
MERCI POUR LA REPONSE
ms voila une fois que je me mais sur A1 ET que je choisi ma reponse sa me bloque b2 ET ensuite sa bloque tt les autre case je ne peu rien changer meme si j avais choisi non je ne peu plus le retirer par exemple si je me ss tromper ou bien je ne peu meme plus saisir sur A3.... sa bloque tt
merciiii
ms voila une fois que je me mais sur A1 ET que je choisi ma reponse sa me bloque b2 ET ensuite sa bloque tt les autre case je ne peu rien changer meme si j avais choisi non je ne peu plus le retirer par exemple si je me ss tromper ou bien je ne peu meme plus saisir sur A3.... sa bloque tt
merciiii
il ya aussi un soucis c est qu on verouillant la feuille sa marche parfaitement ms il empeche ms autre macros de fonctionner il me dis qu il ya des erreru lorsque la macros dois colorier une celllule esque ya moyen d arranger sa
merci
et désolé de vs deranger autant
merci
et désolé de vs deranger autant
parse que apré chaque saisie notre feuille se verouille donc a chaque nouvelle saisie de ligne en dois oter la protection dc si ya moyen de se passé de sa sa serai tt simplement parfait
et la feuille verouille toute les cellules pas selement celle que je voulai verouillé donc une fois lancé rien ne peut etre change meme les cologne non utiliser dans le programme :)
ça ne devrait pas bloquer d'autres cellules que celles qui sont dans la colonne B en face de cellule A qui sont à "Non". Chez moi cela fonctionne parfaitement
Si c'est la cas c'est que les cellules sont vérouillées.
Il faut dévérouillier toutes les cellules de la feuille avant tout.
Le principe de protection de la feuille en Excel c'est que cela ne protége que les cellules vérouillées.
Pour les autres macros. Effectivement je n'avais pas pensé à cela. Il faut mettre dans chaque macro.
Au début :ActiveSheet.Unprotect
A la fin :ActiveSheet.Protect
Si ça ne marche toujours pas il faudra me communiquer le fichier en le déposant sur www.cjoint.com ( en enlevant les données confidentielles) et en me donnant le lien pour le télécharger et je pourrais ainsi le corriger.
A+
Cordialement,
Si c'est la cas c'est que les cellules sont vérouillées.
Il faut dévérouillier toutes les cellules de la feuille avant tout.
Le principe de protection de la feuille en Excel c'est que cela ne protége que les cellules vérouillées.
Pour les autres macros. Effectivement je n'avais pas pensé à cela. Il faut mettre dans chaque macro.
Au début :ActiveSheet.Unprotect
A la fin :ActiveSheet.Protect
Si ça ne marche toujours pas il faudra me communiquer le fichier en le déposant sur www.cjoint.com ( en enlevant les données confidentielles) et en me donnant le lien pour le télécharger et je pourrais ainsi le corriger.
A+
Cordialement,
https://www.cjoint.com/?3BCrINfVfgp
voici le liens ou tu pourra trouver le code donc voila une fois ke je remplis ma cologne et que ton programme se lance sa empeche les autre macros de fonctionné :)
merci
voici le liens ou tu pourra trouver le code donc voila une fois ke je remplis ma cologne et que ton programme se lance sa empeche les autre macros de fonctionné :)
merci
J'ai regardé le code, je te propose la modification suivante :
Dans le code de la feuille "site offer" mettre le code suivant :
J'ai un peu simplifié car les colonnes se suivent.
Et dans le code de la feuille "test coherence" car je crois que c'est depuis cette feuille que tu lances toutes les macros :
Voila,
a Tester
Dans le code de la feuille "site offer" mettre le code suivant :
Private Sub Worksheet_Activate() ActiveSheet.Protect End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("W:W")) Is Nothing Then ActiveSheet.Unprotect Application.EnableEvents = False DerLig = Range("W" & Rows.Count).End(xlUp).Row For Lig = 8 To DerLig If Range("W" & Lig).Value = "Non" Then Range("X" & Lig & ":AE" & Lig).Interior.Color = RGB(200, 200, 200) Range("X" & Lig & ":AE" & Lig).Value = "" Range("X" & Lig & ":AE" & Lig).Locked = True Else Range("X" & Lig & ":AE" & Lig).Interior.Pattern = xlNone Range("X" & Lig & ":AE" & Lig).Locked = False End If Next Lig Application.EnableEvents = True ActiveSheet.Protect End If End Sub
J'ai un peu simplifié car les colonnes se suivent.
Et dans le code de la feuille "test coherence" car je crois que c'est depuis cette feuille que tu lances toutes les macros :
Private Sub Worksheet_Activate() Sheets("site offer").Unprotect End Sub
Voila,
a Tester