Macro pr copier des cellule si checkbox coché
Fermé
seb
-
16 sept. 2009 à 16:53
masterchris Messages postés 82 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 8 juillet 2011 - 17 sept. 2009 à 18:09
masterchris Messages postés 82 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 8 juillet 2011 - 17 sept. 2009 à 18:09
A voir également:
- Case cochée word copier coller
- Supprimer une page word - Guide
- Espace insécable word - Guide
- Copier coller pdf - Guide
- Organigramme word - Guide
- Copier une vidéo youtube - Guide
10 réponses
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 12:58
17 sept. 2009 à 12:58
Bonjour seb,
je suis pas sur que ça règle complètement ton pb mais bon.Pour exécuter la copie des cellules:
-tu passe en mode création de vb ds ton fichier excel
-tu double clique sur le check box,ce qui te permet d'éditer le code qui s'exécutera chaque fois que l'on cliquera sur le check box.
-t'entre le code
If CheckBox1.Value = True Then
'action à exécuter si le box est coché
else
End If
je suis pas sur que ça règle complètement ton pb mais bon.Pour exécuter la copie des cellules:
-tu passe en mode création de vb ds ton fichier excel
-tu double clique sur le check box,ce qui te permet d'éditer le code qui s'exécutera chaque fois que l'on cliquera sur le check box.
-t'entre le code
If CheckBox1.Value = True Then
'action à exécuter si le box est coché
else
End If
Bonjour,
Merci pour ta réponse mais voila j'ai déjà fait ces quelques lignes de prog pour chaque checkbox et ça copie bien les cellules où la box est coché mais parfois çà en oubli quelques une et ça ne se met pas a jour automatiquement si je coche ou décoche une box.
Sub Caseàcocher1_Clic()
If Range("a4").Value = faux Then Exit Sub ' case décochée, ne rien faire
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End Sub
Merci pour ta réponse mais voila j'ai déjà fait ces quelques lignes de prog pour chaque checkbox et ça copie bien les cellules où la box est coché mais parfois çà en oubli quelques une et ça ne se met pas a jour automatiquement si je coche ou décoche une box.
Sub Caseàcocher1_Clic()
If Range("a4").Value = faux Then Exit Sub ' case décochée, ne rien faire
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End Sub
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 13:20
17 sept. 2009 à 13:20
Je crois que le pb est dans la condition de ton si, tu dois plutôt mettre:
Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = false Then
Exit Sub
else
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
end if
End Sub
Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = false Then
Exit Sub
else
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
end if
End Sub
J'ai tester tes lignes et ça marche pareil en faite il y a un deuxième problème qui me bloque pour affiner mon programme de copier /coller c'est que lorsque je copie des cellules je les colle sur la feuille 1 ça c'est OK mais si je décoche ces cellules ça ne me les effaces pas de la feuil 1 donc une fois coché les cellules reste toujours copier sur la feuil1 or il faut quel s'efface si je décoche.
Est ce que tu vois ou je veux en venir ?
Est ce que tu vois ou je veux en venir ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 13:44
17 sept. 2009 à 13:44
Bon si jai bien compri ça signifie que tu dois vérifier si les cellules existent lorsque le box est décoché et si c'est le cas les supprimer par code.C'est dans le si que tu le fais:
If Caseàcocher1.Value = false Then
'tu mets le code pr effacer les cellules ici
else
....
If Caseàcocher1.Value = false Then
'tu mets le code pr effacer les cellules ici
else
....
Non en faite je crois que je me suis mal expliqué, je copie les cellules sélectionné sur la feuil 2 et les colle sur la feuil 1 mais la sélection peut changer a tous moment donc il faut être capable de supprimer certaine ligne sur la feuil 1 et d'en rajouter d'autre.
En faite la feuil 2 sert de base et la feuil 1 de synthèse qui se rempli toutes seule.
Je te met un exemple avec de fausse donné pour essayé de te faire comprendre car c'est vrai que c'est pas facile a expliquer et donc a comprendre.
Merci d'avance
En faite la feuil 2 sert de base et la feuil 1 de synthèse qui se rempli toutes seule.
Je te met un exemple avec de fausse donné pour essayé de te faire comprendre car c'est vrai que c'est pas facile a expliquer et donc a comprendre.
Merci d'avance
sebd03
Messages postés
5
Date d'inscription
jeudi 17 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
17 sept. 2009 à 14:21
17 sept. 2009 à 14:21
désolé je ne sais pas comment joindre le fichier a mon message
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 16:04
17 sept. 2009 à 16:04
moi non plus,mais on va essayer de faire sans.
Résumons un peu: T'a un classeur avec deux feuilles;feuil2 coe base et feuil1 coe synthèse.
Tes checkbox sont sur la Feuil2 et tu voudrais que lorsqu'on les coche ils copies une plage de cells qu'ils collent ds la feuille 1 et lorsqu'il st décoché les cellules qui étaient copiées soient supprimées.
C'est bien ça?
Résumons un peu: T'a un classeur avec deux feuilles;feuil2 coe base et feuil1 coe synthèse.
Tes checkbox sont sur la Feuil2 et tu voudrais que lorsqu'on les coche ils copies une plage de cells qu'ils collent ds la feuille 1 et lorsqu'il st décoché les cellules qui étaient copiées soient supprimées.
C'est bien ça?
sebd03
Messages postés
5
Date d'inscription
jeudi 17 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
17 sept. 2009 à 17:05
17 sept. 2009 à 17:05
Oui je crois que cette fois on c'est compris, le tableau de la feuille 1 doit recopier les ligne de la feuille 2 quand les box sont coché et comme les box coché peuvent changer a tout moment il doit aussi se mettre a jour.
Merci pour ton aide
Merci pour ton aide
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 17:24
17 sept. 2009 à 17:24
Ok.Pr la suppression de données il faut savoir cmt tu les mets ds ta feuil1(en ligne ou en colonne),mais en gros ça donne le code suivant:
Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = false Then
'on suppose que tu ranges les données copiées en colonne ds la Feuil1:le code ci-dessous te permet de 'supprimer la colonne A
Feuil1.Columns("A:A").Delete Shift:=xlToLeft
'ou si tu veux juste effacer le contenu d'une plage sélectionnée...
Range("A1:A20").ClearContents
end if
If Caseàcocher1.Value = true Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
end if
End Sub
Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = false Then
'on suppose que tu ranges les données copiées en colonne ds la Feuil1:le code ci-dessous te permet de 'supprimer la colonne A
Feuil1.Columns("A:A").Delete Shift:=xlToLeft
'ou si tu veux juste effacer le contenu d'une plage sélectionnée...
Range("A1:A20").ClearContents
end if
If Caseàcocher1.Value = true Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
end if
End Sub
sebd03
Messages postés
5
Date d'inscription
jeudi 17 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
17 sept. 2009 à 17:34
17 sept. 2009 à 17:34
Sub Caseàcocher1_Clic()
If Range("a4").Value = False Then
'ou si tu veux juste effacer le contenu d'une plage sélectionnée...
Range("A:E20").ClearContents
End If
If Range("a4").Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
On essayant ton code, le prog se bloquait alors j'ai remis les "if range" et ca copie bien mais sa supprime pas la ligne si je décoche la box et il me mais une erreur a "Range("A:E20").ClearContents"
If Range("a4").Value = False Then
'ou si tu veux juste effacer le contenu d'une plage sélectionnée...
Range("A:E20").ClearContents
End If
If Range("a4").Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
On essayant ton code, le prog se bloquait alors j'ai remis les "if range" et ca copie bien mais sa supprime pas la ligne si je décoche la box et il me mais une erreur a "Range("A:E20").ClearContents"
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 17:42
17 sept. 2009 à 17:42
désolé,c'est une erreur de ma part je voulais écrire:
Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = False Then
'ou si tu veux juste effacer le contenu d'une plage sélectionnée...
Range("A:E20").ClearContents
End If
If Caseàcocher1.Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
Sub Caseàcocher1_Clic()
If Caseàcocher1.Value = False Then
'ou si tu veux juste effacer le contenu d'une plage sélectionnée...
Range("A:E20").ClearContents
End If
If Caseàcocher1.Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
sebd03
Messages postés
5
Date d'inscription
jeudi 17 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
17 sept. 2009 à 17:49
17 sept. 2009 à 17:49
Voila ce que j'ai mis pour les 4 première ligne de mon tableau et ça a l'air de fonctionner
Sub Caseàcocher1_Clic()
If Range("a4").Value = False Then
Feuil1.Range("A4:E20").ClearContents
End If
If Range("a4").Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
Je vais essayer ça sur tout mon tableau car il faut que je recopie ces ligne pour chacune de mes box.
Je te tien au courant, Merci beaucoup
P.S : existe il une macro pour supprimer également les lignes du tableau quand les cellules sont vide ?
Exemple j'ai 17 ligne de rempli alors qu'avant yen avait 20 donc je veux supprimé les bordures des lignes 18,19 et 20
Sub Caseàcocher1_Clic()
If Range("a4").Value = False Then
Feuil1.Range("A4:E20").ClearContents
End If
If Range("a4").Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
Je vais essayer ça sur tout mon tableau car il faut que je recopie ces ligne pour chacune de mes box.
Je te tien au courant, Merci beaucoup
P.S : existe il une macro pour supprimer également les lignes du tableau quand les cellules sont vide ?
Exemple j'ai 17 ligne de rempli alors qu'avant yen avait 20 donc je veux supprimé les bordures des lignes 18,19 et 20
sebd03
Messages postés
5
Date d'inscription
jeudi 17 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
17 sept. 2009 à 18:03
17 sept. 2009 à 18:03
Bon alors c mieux mais quand j'ai une box décoché il ne la copie pas mais laisse des cellules vide or il faut pas qu'il y ai de cellule vide, tu vois ce que je veux dire.
Voila un exemple de ce qui est mon code pour les lignes 4 et 5 par exemple :
Sub Caseàcocher1_Clic()
If Range("a4").Value = False Then
Feuil1.Range("d4:e4").ClearContents
End If
If Range("a4").Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
Sub Caseàcocher2_Clic()
If Range("a5").Value = False Then
Feuil1.Range("d5:e5").ClearContents
End If
If Range("a5").Value = True Then
Range("b5:C5").Copy Destination:=Sheets("Liste").Range("d5:e5")
End If
End Sub
Voila un exemple de ce qui est mon code pour les lignes 4 et 5 par exemple :
Sub Caseàcocher1_Clic()
If Range("a4").Value = False Then
Feuil1.Range("d4:e4").ClearContents
End If
If Range("a4").Value = True Then
Range("b4:C4").Copy Destination:=Sheets("Liste").Range("d4:e4")
End If
End Sub
Sub Caseàcocher2_Clic()
If Range("a5").Value = False Then
Feuil1.Range("d5:e5").ClearContents
End If
If Range("a5").Value = True Then
Range("b5:C5").Copy Destination:=Sheets("Liste").Range("d5:e5")
End If
End Sub
masterchris
Messages postés
82
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011
5
17 sept. 2009 à 18:09
17 sept. 2009 à 18:09
C'est très surprenant que se soit : If Range("a4").Value = False Then .... qui ai marché au lieu de If Caseàcocher1.Value = False Then ....
Tu peux supprimer une ligne entière avec le code:
Feuil1.Rows("10:10").Delete Shift:=xlUp
Mais ton pb viens du fait que tu copie coordonnées pr coordonnées,dc après qd la case est décochée les lignes sont effacées:ce qui laisse des vides. Pour régler ton pb tu peux utiliser insérer :
If Range("a4").Value = False Then
Feuil1.Range("d4:e4").ClearContents
'code de suppression de lignes
Feuil1.Columns("D:D").Delete Shift:=xlToLeft
Feuil1.Columns("E:E").Delete Shift:=xlToLeft
End If
Tu peux supprimer une ligne entière avec le code:
Feuil1.Rows("10:10").Delete Shift:=xlUp
Mais ton pb viens du fait que tu copie coordonnées pr coordonnées,dc après qd la case est décochée les lignes sont effacées:ce qui laisse des vides. Pour régler ton pb tu peux utiliser insérer :
If Range("a4").Value = False Then
Feuil1.Range("d4:e4").ClearContents
'code de suppression de lignes
Feuil1.Columns("D:D").Delete Shift:=xlToLeft
Feuil1.Columns("E:E").Delete Shift:=xlToLeft
End If