Case a cocher excel

AyGss -  
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une colonne avec beaucoup de cases à cocher liées à des cellules (mais une case à cocher par cellule).

J'aimerais pouvoir "copier/coller" cette colonne dans une nouvelle colonne mais que les cases à cocher soient attribuées aux cellules de la nouvelle colonne.

Ex: j'ai une colonne avec une case à cocher liée à la cellule B3 existante, une autre en B12 et une autre en B16. J'aimerais pouvoir "copier-coller" cette colonne afin d'avoir une case à cocher liée à C3, une C12 et une en C16.

J'espère avoir été assez clair, merci par avance de votre aide précieuse qui me ferait gagner un temps fou!

A voir également:

8 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Il serait plus simple de se passer des cases à cocher et de se contenter d'écrire un x dans la cellule correspondante (plus besoin de cellule liée).

Avec une macro simple pour feuille de calcul (à adapter au besoin), on peut transformer les cellules en "pseudo case à cocher" :

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

  If Intersect(Target, Range("B3:C16")) Is Nothing Then Exit Sub 
  If Target.Count > 1 Then Exit Sub 
  If Target.Formula = "" Then Target.Formula = "X" Else Target.Formula = "" 

End Sub 



Cordialement
Patrice
2
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
Re!

Je viens de tester cette solution et je pense que c'est celle qui convient!
Par contre comment fait-on pour modifier les plages (j'en ai beaucoup!), j'ai réussi à rajouter une plage dans Range("B3:C16")), mais je n'arrive pas à en rajouter d'autres...ne connaissant pas le langage de programmation, j'ai beau essayé de transformer le Range, je n'y arrive pas.
Merci encore pour ton aide!

Cordialement,
Tom
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Malheureusement, il faut redéfinir les cellules liées case par case !
1
AyGss
 
Okey, tant pis!
Je ne suis pas très doué avec excel, mais même en passant par une macro (simple?) je ne pourrais pas y arriver?
Merci!
0
AyGss
 
Merci beaucoup, ça me simplifie effectivement énormément la tache!

Bonne après-midi,

Cordialement,

Aymeric
0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Ma demande s'apparente un peu à celle d'AyGss/Aymeric, à savoir que j'aimerais créer une checklist avec des cases à cocher sans être obligé de faire du copier/coller à tout va et de passer des heures à repositionner les cases...
D'autre part, je voudrais pouvoir réduire la checklist (avec l'outil grouper) et n'avoir plus qu'une seule ligne visible avec une case qui se coche (ou si c'est trop compliqué que l'on coche manuellement) pour signaler que toute la checklist est vérifiée.
Merci d'avance pour votre aide !

Tom

PS: J'ai posté une autre demande sur la création de jalons dans un planning...si vous avez des idées...
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Tout ça n'est pas très clair.

Plutôt que des cases à cocher, des cellules renseignée d'un X et un filtre automatique ne feraient-ils pas l'affaire ?

Patrice
0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

ma foi les cellules à cocher me paraissent plus "pro", et plus facile à checker (un clic suffit). Le problème demeure que lorsque je groupe des lignes les cases à cocher demeurent (en se superposant) et se reportent du coup sur la ligne du dessous.
Je me prends la tête je sais mais si ça peut le faire ainsi ça donnerait un truc vraiment chouette.Mais votre solution du filtre m'intéresse, comment le définiriez vous?
Merci !!!

Tom

PS: on ne peut pas joindre de document sur ce forum ?
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Pour "joindre" un document, il suffit de le placer sur http://cijoint.fr/ et d'écrire le lien obtenu dans ton prochain post.
0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
ok, merci du tuyau ! voici le lien vers le type de document que j'utilise (le mien est beaucoup plus rempli mais confidentiel) http://www.cijoint.fr/cjlink.php?file=cj201103/cijcyjoHu9.xls
J'ai mis des commentaires (2 en tout) pour préciser ce qui coince.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Re,

Le diagramme que tu as mis en exemple ne comprend aucune tache à réaliser !

les cellules à cocher me paraissent plus "pro" : les cases à cocher, comme tous les objets, sont des "verrues" déposées sur les feuilles de calcul. Si leur utilisation offre un aspect visuel plus agréable, ce n'en est pas professionnel pour autant.
Ce qui est professionnel, c'est d'utiliser un programme adapté au besoin, dans ton cas, un logiciel de gestion de projet.

Comme je t'ai dis précédemment, plutôt que d'utiliser des cases à cocher et un plan, j'écrirais un x dans les cellules correspondantes et je placerais un filtre automatique sur la ligne 10.

Pour les jalons l'exemple n'est pas parlant.
0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
N'y connaissant pas grand chose je te fais confiance sur ce sujet quand tu dis que les cases à cocher ne sont pas l'idéal...Je vais essayer avec les x mais du coup je n'ai pas bien saisi l'idée du filtre automatique...et n'y aurait-il pas une macro qui permettrait d'afficher un pourcentage de progression en fonction du nombre de case avec un x dedans?
Et je suis en train d'essayer sur Ganttproject en parallèle, mais ça n'est pas très adapté pour la quantité de donnée que j'ai (qui est très importante)
merci encore !
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Re,

Quand tu parles de macro, je suppose que tu veux parler de formule !

Avec Excel, faire un macro-programme pour calculer un pourcentage c'est comme utiliser un semi-remorque pour faire ses courses, c'est possible mais pas idéal.

Pour calculer un pourcentage il faut 2 valeurs !
le nombre de X peut être obtenu avec =NB.SI(Plage;"X")

Patrice.
0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
Merci !! Je vais tenter comme ça du coup. :)

Cordialement!

Tom
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Essaie de poser tes questions à la fin de la discussion plutôt qu'à l'intérieur (avec le classement automatique par vote, on a du mal à suivre).

Bienvenue dans le monde du Visual Basic pour Application (VBA).

Pour utiliser la macro dans plusieurs plages, c'est à peine plus compliqué, il suffit de définir une variable (plage) qui représente l'ensemble des plages :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim plage As Range

  If Target.Count > 1 Then Exit Sub
  Set plage = Union(Range("B3:C16"), Range("E3:E16"), Range("G3:G16"), Range("H3:H16"))
  If Intersect(Target, plage) Is Nothing Then Exit Sub
  If Target.Formula = "" Then Target.Formula = "X" Else Target.Formula = ""

End Sub

0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
Bien compris Patrice, désolé.
Nickel pour la formule, merci beaucoup. Je me demandais par contre si y avait pas moyen d'aller plus vite (le fait est que j'ai 36 intervalles...)et surtout de trouver quelque chose de plus flexible. En effet si j'insère une seule ligne, tous mes intervalles sont changés et je suis bon pour les retaper à la main pendant des heures. Du coup je pensais à une solution où au lieu de travailler par intervalle, on travaillerait par défaut. A savoir mettre comme condition de validité de la propriété le fait que la cellule soit initialement vide ou possédant un X (pour le cas où l'on veut recliquer sur la cellule pour enlever le X). Je ne sais pas si j'ai été très clair...(je ne sais pas si c'est utile mais petite précision: la propriété n'a besoin d'être validée que sur une seule colonne)
Désolé d'insister, mais ça prend forme grâce à toi !!

cordialement,

tom
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Re,

Effectivement ton idée de "marquer" les cellules concernées est exploitable mais elle présente des contraintes.

On peut adopter une méthode très simple : Dans les cellules qui sont susceptibles de recevoir les x tu va mettre une validation des données toute simple (qui n'interdit rien):
Données / Validation / Autoriser : Personnalisé / Formule : =1

Tu peux utiliser l'outil Reproduire la mise en forme (ou copier / collage special : formats) pour recopier ce format sur l'ensemble des cellules concernées.

Si tu n'utilises pas du tout la validation des données, voici la macro simple qui permet de mettre/enlever le x dans ces cellules

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim plage As Range

  If Target.Count > 1 Then Exit Sub
  On Error Resume Next
  Set plage = ActiveSheet.Cells.SpecialCells(xlCellTypeAllValidation)
  On Error GoTo 0
  If plage Is Nothing Then Exit Sub
  If Intersect(Target, plage) Is Nothing Then Exit Sub
  If Target.Formula = "" Then Target.Formula = "X" Else Target.Formula = ""

End Sub
Contrainte : ne pas utiliser la validation des données dans d'autres cellules.

Si tu utilises la validation des données c'est aussi possible, la contrainte est différente : Il faut définir une cellule de référence qui contient la validation définie ci-dessus (par exemple B3) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim plage As Range

  If Target.Count > 1 Then Exit Sub
  Set plage = ActiveSheet.Range("B3")
  On Error Resume Next
  Set plage = plage.SpecialCells(xlCellTypeSameValidation)
  On Error GoTo 0
  If plage Is Nothing Then Exit Sub
  If Intersect(Target, plage) Is Nothing Then Exit Sub
  If Target.Formula = "" Then Target.Formula = "X" Else Target.Formula = ""

End Sub

0
amiraltom Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Patrice!

Merci pour ces codes, c'est déjà un net progrès, mais j'ose encore insister :)...n'est-il pas possible en gros d'appliquer une propriété à toute une colonne (qu'on définit dans le code) mais que cette propriété ne soit valide que lorsque la cellule est vide ou contenant un X? du coup ça laisse une extrême liberté de modifier les cellules de cette colonne et il n'y a aucun paramètre à modifier...parce que dans le code que tu m'as donné selon l'endroit où l'on insère une ligne, la cellule de la colonne concernée aura ou pas la propriété, du coup selon ce que l'on veut il faudra changer les paramètres de cette nouvelle cellule ...tandisque que dans ma proposition, il suffit d'inscrire quelque chose (comme un pourcentage d'avancement par exemple)dans la cellule pour que celle-ci ne soit plus considérée comme une case à cocher...Je ne sais pas si je suis très clair...en résumé, par défaut, lorsqu'il n'y a rien dedans ou bien un X les cellules de la colonne concernée possède la propriété, mais dès lors qu'elles sont remplies par autre chose elles ne l'ont plus...(ainsi il n'y a pas de risque d'effacer une cellule de cette colonne possédant un pourcentage d'avancement mais à qui on aurait oublié de changer les paramètres et d'enlever la propriété)...
Merci encore pour ta patience !!

Cordialement!

Tom
0