Case à cocher qui rend possible l'écriture dans une plage
Bonjour!!
Je cherche à insérer une case à cocher qui donnerait l'action suivante.
Si non cochée: mon tableau est non modifiable, et si possible apparaît un peu en transparence (comme pour les fenêtres non active)
Si cochée: le tableau est modifiable
2e question:
certaines données de mon tableau sont reprise dans une feuille récapitulative avec une macro. Mais je souhaiterais que seules les données des tableaux actifs soient prises en compte. Pensez-vous que cela est possible?
Merci pour votre aide!!
Silvia
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonsoir à tous,
Simple suggestion, qui ne répond pas à ta question mais qui pourrai te simplifier la vie.
Pourquoi faire un onglet par abonné ?
tu pourrai :
- Regrouper tous tes onglets en un seul en ajoutant une colonne "Nom" et une colonne
"activité".
- Traiter l'ensemble en base de données avec filtres élaborés.
tout devient facile !
Amicalement
Claude.
Bonsoir,
Claude le projet fait partie de quelques fils sur ce forum dans lesquels silvia a reçu des réponses.
Donc attention à ta proposition qui lui ferait changer tout son fichier et revoir toutes les réponses données dans d'autres fils.
Silvia, et si on protégeait la feuille dont la case est cochée ? De là on peut considérer que si la feuille est protégée on ne reprend rien.
Ton avis ?
Amicalement
Dan
Edit Dan :
Silvia, attention, je vois que tes macros SUB Couleur, Trier et CréeBase sont dans la feuille "Récapituatif". Il faut les mettre dans un module et pas là. Seules tes macros Private command bouton click doivent se trouver dans cette feuille.
Dan
Merci pour vos réponses!!
Le soucis de tout regrouper sur une seule page c'est qu'on doit pouvoir imprimer une feuille par client pour qu'il puisse aussi voir le suivi s'il le souhaite.
Pour la protection j'y ai pensé mais par contre il faudrait pouvoir protèger seulement une partie de la page: en effet la majorité des clients ont un abo dressage, mais pas de saut ni horseball. Donc techniquement si une fiche client est crée c'est qu'il y a un abonnement en cours. J'ai essayer de chercher une macro qui grâce à une case à cocher protège une partie du tableau mais j'ai tooujours pas trouvé.
Je vais faire la modif pour les macros SUb couleur, Trier et CréeBase.!
re,
Pour la protection j'y ai pensé mais par contre il faudrait pouvoir protèger seulement une partie de la page: en effet la majorité des clients ont un abo dressage, mais pas de saut ni horseball. Donc techniquement si une fiche client est crée c'est qu'il y a un abonnement en cours.
On protégerait en fonction de quoi ?
J'ai essayer de chercher une macro qui grâce à une case à cocher protège une partie du tableau mais j'ai tooujours pas trouvé.
Je te propose d'éviter la case à cocher. Ce sont des objets à mettre sur une feuille qu'il faudra chaque fois créer et attribuer à chque nouvelle ligne. Bref je trouve cela plus compliqué et sujet à des erreurs.
Je te propose plutôt de mettre un "X" dans la colonne K dès que tu cliques dans cette colonne. Pour enlever, le "X", on reclique de nouveau dans la cellule.
Ton avis ?
A te relire
Dan
C'est vrai que je suis pas vraiment claire... alors voilà comment j'imagine la chose:
Si on regarde les onglets pour chaque client il y a 3 tableaux; un par type d'abonnement. Il faudrait que que chaque tableau soit relier à une case à cocher, si la case est active alors la protection s'enlève, on peut inscrire les données dans le tableau et les valeurs (date dernier paiement et solde des cours) sont alors reprise dans le récapitulatif.
Si la case n'est pas cochée, le tableau est protègé et on ne peut donc rien y inscrire et les valeurs (qui serait donc 0) ne sont pas reprise dans le récapitulatif. il y aurait donc 3 case à cocher sur chaque onglet.
POur le problème de la case à cocher, et de mettre un X à côté, c'est égal, le but était de pouvoir séléctionner seulement les lignes en" rouge". Mais un X va aussi ! (le but étant par la suite de lier un doc pour faire du publipostage.
Plus ça avance et plus je me dis que c'est vraiment compliqué....surtout dans ma tête
re,
Il faudrait que que chaque tableau soit relier à une case à cocher, si la case est active alors la protection s'enlève
Est-ce pensable, que le "X" décache les lignes concernées plutôt que de jouer sur la protection de cellule.
En gros, par défaut les lignes sont cachées et si un "X" on montre les lignes concernées par l'abo.
Ton avis?
Dan
j'ai un peu de peine à voir, mais il me semble que dans l'idée ça joue; par contre est-ce qu'après on peu "intégrer" ce X pour la reprise ou non dans le récap?
Merci!
Silvia
re,
Pas sur que tu aies compris..
En étant dans la feuille RECAPITULATIF, tu mets les X dans les colonnes E, H ou K.
A chaque X correspond un client en colonne A pour qui tu as créés une feuille.
Le fait de mettre ce X cachera les lignes de l'abo en question et ce, dans la feuille client.
Exemple : on met X dans E5, le client A5 est A. Cette action cachera les lignes 11 à 24 dans la feuille A
Dan
maintenant je vois ce que tu veux dire!
Par contre j'ai pas vraiement besoin de cacher les lignes des feuilles clients.
Le fait de protèger les cellules était une idée de ne pas reprendre le résultat de la macro "test" dans le répap.
En remettant de l'ordre dans ma tête, voilà ce qu'il faudrait:
si il n'y a pas de date dans la cellule L13 d'une fiche client par ex., la valeur n'est pas reprise ni pour la date ni pour le nombre de cours en C et D du récap (si pas de date, ça veut dire pas d'abonnement et donc pas de facture de renouvellement à envoyer). Mais le soucis c'est que si un client commençait un abonnement avant d'avoir payé l'info ne se verrait pas dans le récap.
silvia
Re,
Pas rapport à ta demande dans ce fil et ton dernier fil je ne vois pas très bien ce que tu attends.
1. La macro test ne sert plus puisque cela est repris dans la macro Couleurs
2. Si L13 est vide, il n'y aura pas de date en C et D sera à zéro
Mais le soucis c'est que si un client commençait un abonnement avant d'avoir payé l'info ne se verrait pas dans le récap.
Pourquoi tu ne mets pas une date de début en B3 de la feuille client (A3 = date départ). De là si L13 est vide (M13 sera égal à 0), tu reprends la date B3 dans la colonne C de la feuille RECAP et en D on laisse le 0 actuel.
De cette sorte tu verras que tu as démarré un abo et que la première facture est à venir.
A te relire
Dan
1. La macro test ne sert plus puisque cela est repris dans la macro Couleurs
c'est vrai, je vais l'effacer.
2. Si L13 est vide, il n'y aura pas de date en C et D sera à zéro
Mais le soucis c'est que si un client commençait un abonnement avant d'avoir payé l'info ne se verrait pas dans le récap.
Pourquoi tu ne mets pas une date de début en B3 de la feuille client (A3 = date départ). De là si L13 est vide (M13 sera égal à 0), tu reprends la date B3 dans la colonne C de la feuille RECAP et en D on laisse le 0 actuel.
De cette sorte tu verras que tu as démarré un abo et que la première facture est à venir.
ça pourrait jouer mais si D est à zéro il sera en rouge alors que peut-être il n'y a pas d'abo en cours, tu comprends? c'est pour ça que je voulais "activer" ou désactiver les tableau qui n'ont pas de données.
A+
Silvia [/quote]
re,
On peut aussi prévoir de ne pas mettre en rouge et pas de 0 si pas d'abo. Cela joue pour toi cela ?
Si oui il fautdra modifier le code COULEURS
Dan
re,
Essaie en remplaçant le code COULEUR par celui ci-dessous :
Sub couleur()
'Macro Dan pour Silvia le 13/08/09
'http://forum.excel-pratique.com/viewtopic.php?t=12800
Dim cel As Range
Application.ScreenUpdating = False
Sheets("Récapitulatif").Activate
For Each cel In Sheets("Récapitulatif").Range("A5:A" & Range("A65536").End(xlUp).Row)
With cel
.Offset(0, 2) = Sheets(cel.Value).Range("L13")
If Sheets(cel.Value).Range("M13") = 0 Then
.Offset(0, 3) = ""
Union(.Offset(0, 0), .Offset(0, 3)).Interior.ColorIndex = 0
Else: .Offset(0, 3) = Sheets(cel.Value).Range("M13")
If .Offset(0, 3) <= 2 And (.Offset(0, 3) > 0) Then
Union(.Offset(0, 0), .Offset(0, 3)).Interior.ColorIndex = 3
Else: .Offset(0, 3).Interior.ColorIndex = 0
End If
End If
.Offset(0, 5) = Sheets(cel.Value).Range("L28")
If Sheets(cel.Value).Range("M28") = 0 Then
.Offset(0, 6) = ""
Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
Else: .Offset(0, 6) = Sheets(cel.Value).Range("M28")
If .Offset(0, 6) <= 2 And (.Offset(0, 6) > 0) Then
Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 3
ElseIf .Offset(0, 3).Interior.ColorIndex = 3 Then
.Offset(0, 6).Interior.ColorIndex = 0
Else: Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
End If
End If
.Offset(0, 8) = Sheets(cel.Value).Range("L43")
If Sheets(cel.Value).Range("M43") = 0 Then
.Offset(0, 9) = ""
Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
Else: .Offset(0, 9) = Sheets(cel.Value).Range("M43")
If .Offset(0, 9) <= 2 And (.Offset(0, 9) > 0) Then
Union(.Offset(0, 0), .Offset(0, 9)).Interior.ColorIndex = 3
ElseIf .Offset(0, 3).Interior.ColorIndex = 3 Or .Offset(0, 6).Interior.ColorIndex = 3 Then
.Offset(0, 9).Interior.ColorIndex = 0
Else: Union(.Offset(0, 0), .Offset(0, 9)).Interior.ColorIndex = 0
End If
End If
End With
Next cel
End SubAmicalement
Dan
Hello!
J'ai remplacé le code, sur le principe c'est super mais si je rempli par expemple les cours d'un abo (b15 à B24), l'abonnement est donc terminé mais dans le récap c'est comme s'il n'y avait pas d'abo, et donc on peut pas savoir que c'est à facturer. Autre petit soucis: peut-on faire fonctionner la macro couleur avec les chiffres négatifs? (si abo déjà en cours mais pas encore payé)
Merci!
Silvia
et si à la place de m'obstiner à "activer les abo ou non", je faisais simplement chaque onglet avec un seul tableau et si besoin je crée un bouton avec macro qui crée un tableau en dessous, tu crois que ça marcherait?
Silvia
dan,
Je me suis permise de modifier ton code ainsi (pour tester):
Sub couleur()
'Macro Dan pour Silvia le 13/08/09
'http://forum.excel-pratique.com/viewtopic.php?t=12800
Dim cel As Range
Application.ScreenUpdating = False
Sheets("Récapitulatif").Activate
For Each cel In Sheets("Récapitulatif").Range("A5:A" & Range("A65536").End(xlUp).Row)
With cel
.Offset(0, 2) = Sheets(cel.Value).Range("L13")
If Sheets(cel.Value).Range("M13") = "" Then
.Offset(0, 3) = ""
Union(.Offset(0, 0), .Offset(0, 3)).Interior.ColorIndex = 0
Else: .Offset(0, 3) = Sheets(cel.Value).Range("M13")
If .Offset(0, 3) <= 2 Then
Union(.Offset(0, 0), .Offset(0, 3)).Interior.ColorIndex = 3
Else: .Offset(0, 3).Interior.ColorIndex = 0
End If
End If
.Offset(0, 5) = Sheets(cel.Value).Range("L28")
If Sheets(cel.Value).Range("M28") = "" Then
.Offset(0, 6) = ""
Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
Else: .Offset(0, 6) = Sheets(cel.Value).Range("M28")
If .Offset(0, 6) <= 2 Then
Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 3
ElseIf .Offset(0, 3).Interior.ColorIndex = 3 Then
.Offset(0, 6).Interior.ColorIndex = 0
Else: Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
End If
End If
.Offset(0, 8) = Sheets(cel.Value).Range("L43")
If Sheets(cel.Value).Range("M43") = "" Then
.Offset(0, 9) = ""
Union(.Offset(0, 0), .Offset(0, 6)).Interior.ColorIndex = 0
Else: .Offset(0, 9) = Sheets(cel.Value).Range("M43")
If .Offset(0, 9) <= 2 Then
Union(.Offset(0, 0), .Offset(0, 9)).Interior.ColorIndex = 3
ElseIf .Offset(0, 3).Interior.ColorIndex = 3 Or .Offset(0, 6).Interior.ColorIndex = 3 Then
.Offset(0, 9).Interior.ColorIndex = 0
Else: Union(.Offset(0, 0), .Offset(0, 9)).Interior.ColorIndex = 0
End If
End If
End With
Next cel
End Subet 4a pourrait jouer. maintenant il faut juste que je trouve un code pour copier les abo si nécessaire, pour ça j'ai créer un onglet "abo saut" et j'essaye de trouver un code qui me le copie au bon endroit dans les onglets, que je lierais avec un bouton. Qu'en penses-tu?
re,
mais si je rempli par expemple les cours d'un abo (b15 à B24), l'abonnement est donc terminé mais dans le récap c'est comme s'il n'y avait pas d'abo, et donc on peut pas savoir que c'est à facturer
Tu ne vois rien si tu as le chiffre 0 dans la cellule M13, L28 pu M43. C'est ce que tu demandais je pense. Donc je ne comprends pas très bien ton souci.
Comment tu sais qu'un abo est terminé ?
A te relire
Dan
un abo est terminé si 10 cours ont été utilisé. donc si les cellules b15 à b24 sont remplies, l'abo est terminé est donc il faut le notifié au client pour q'il puisse reprendre un abo s'il le désire.
Silvia