VBA EXcel
Résolu/Fermé
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
-
28 févr. 2013 à 10:53
djeff94 Messages postés 26 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 25 avril 2013 - 1 mars 2013 à 09:28
djeff94 Messages postés 26 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 25 avril 2013 - 1 mars 2013 à 09:28
A voir également:
- VBA EXcel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
14 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
Modifié par pilas31 le 28/02/2013 à 11:57
Modifié par pilas31 le 28/02/2013 à 11:57
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,
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 13:13
28 févr. 2013 à 13:13
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 :)
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
28 févr. 2013 à 13:28
28 févr. 2013 à 13:28
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 ?
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 14:12
28 févr. 2013 à 14:12
c est excactement sa et pour etre plus precis c est pas que la valeur ne dois pas 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
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 14:28
28 févr. 2013 à 14:28
ou bien metttre la case en gris par contre si on chosi autre chose on pourra modifier et remplacer nos cellule normalment
merciiiiii
javoue je suis vrement un novice
merciiiiii
javoue je suis vrement un novice
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 13:56
28 févr. 2013 à 13:56
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
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 14:10
28 févr. 2013 à 14:10
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
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
Modifié par pilas31 le 28/02/2013 à 15:33
Modifié par pilas31 le 28/02/2013 à 15:33
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,
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 16:00
28 févr. 2013 à 16:00
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
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 16:07
28 févr. 2013 à 16:07
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
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 16:31
28 févr. 2013 à 16:31
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
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 16:35
28 févr. 2013 à 16:35
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 :)
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
Modifié par pilas31 le 28/02/2013 à 16:52
Modifié par pilas31 le 28/02/2013 à 16:52
ç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,
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 16:53
28 févr. 2013 à 16:53
merci c est trés gentille je vais voir et je te tiens au courant :)
merci
merci
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
28 févr. 2013 à 17:36
28 févr. 2013 à 17:36
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
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
643
28 févr. 2013 à 18:24
28 févr. 2013 à 18:24
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
djeff94
Messages postés
26
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
25 avril 2013
1 mars 2013 à 09:28
1 mars 2013 à 09:28
merci pilas31 sa marche super bien tu est un expert merciiiiii