XL 2010 Transfert / annulation de données de feuil1 vers feuil2 via Case à cocher

  • Initiateur de la discussion Initiateur de la discussion Eric C
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour à toutes & à tous

Je galère depuis hier suite à une demande formulée sur le site. Il s'agit de transférer (copier) une ou des phrases depuis la feuille1vers la feuille2 via une CheckBox si sa valeur est à "True" et de la ou les supprimer lorsque la valeur est à "False. J'ai bien réussi à l'aide d'une case à cocher ActiveX mais uniquement pour une phrase.
Sur ce, j'ai tenté de poursuivre en essayant d'appliquer la méthode sur plusieurs phrases via un Select Case mais en vain. Si je parviens à mettre en œuvre la première partie (copier les données vers la feuil2), il n'en est pas de même pour leur effacement.
J'ai essayé avec des contrôle ActiveX et des contrôles de formulaire mais je dois accepter mon incompétence.

Je vous remercie d'avance de l'attention que vous voudrez porter à ce fichier et vous souhaite un bon appétit.
@+ Eric c
 

Pièces jointes

Solution
Bonjour à tous,

Un essai. Le code est dans le module de la feuille "Feuil1" :
VB:
Option Explicit
Const coche = 253, decoche = 168

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ref, derlig&, t, i&
   If Target.Count = 1 And Target.Column = 1 And Target.Offset(, 1) <> "" Then
      Target = IIf(Asc(Target) = coche, Chr(decoche), Chr(coche))
      Target.Offset(, 1).Select
      ref = Target.Offset(, 1).Value
      With Sheets("Feuil2")
         derlig = .Cells(.Rows.Count, "a").End(xlUp).Row + 1
         t = .Range("a1").Resize(derlig)
         Select Case Asc(Target.Value)
            Case coche
               derlig = .Cells(.Rows.Count, "a").End(xlUp).Row
               If derlig = 1 And .Cells(1, "a") = "" Then...
Bonsoir,

Voici une approche non-vba :

1 - Dans la feuille "DONNEES", tu insères une colonne juste avant tes contrôles de formulaires et tu associes/lies chacun d'eux à la cellule Ax en face (Clic droit sur le CF / Format de contrôle / Contrôle / Cellule liée ..)

1635549737611.png


2 - Dans la feuille "IMPRESSION LISTE", tu saisies la formule ci-dessous dans une cellule de ton choix, ensuite tu tires 4 lignes vers le bas et enfin tu valides ta formule par CTRL+MAJ+ENTREE (car il s'agit d'une formule matricielle)

=SIERREUR(INDEX(DONNEES!C$1:C$4;PETITE.VALEUR(SI(DONNEES!$A$1:$A$4=VRAI;LIGNE(DONNEES!$A$1:$A$4));LIGNE()));"")

Les valeurs sont copiées et collées vers la première ligne vide de la plage choisie dans ta feuille cible.

Cdlt,
M92
 

Pièces jointes

  • 1635549719393.png
    1635549719393.png
    6.8 KB · Affichages: 15
  • 1635549852679.png
    1635549852679.png
    12 KB · Affichages: 14
Bonjour @Eric C, @M92_

Je te propose beaucoup plus simple et facile à gérer

Dans cet exemple on contrôle l'utilisation du clic droit et du double clic)
1==> Un double clic dans la colonne A ==> le double clic met un X dans la cellule ==> Re double clic le X disparait
2==> Un clic droit dans la colonne A ==> la ligne disparait et va se copier sur l'autre feuille

*Merci de ton retour

@Phil69970
 

Pièces jointes

Bonjour le fil

Je m'excuse d'avoir très mal exprimé la demande hier midi (l'appel de l'assiette peut être...Lol).
Je résume :
- Soit une feuille1. En cellule A2, une case à cocher (de formulaire ou activeX) précède la cellule B2 qui contient des données (peut être y aura t'il des données par la suite dans la ou les cellules (C2, D2 …).
- Action sur la case à cocher (=True). La cellule sélectionnée (ds notre exemple B2 (voire C2, D2 … puisqu'il y aura peut être d'autres données dans les cellules voisines)) est COPIEE / COLLEE vers la feuille2 (celluleA1 ou peut importe A2 ..).
- Nouvelle action sur la case à cocher (=False), la cellule copiée de la feuille 2 est effacée.

Je vous joint un exemple basique de ce que je veux et que je voudrais au plus simple, reproduire sur X cases à cocher (qui peuvent être remplacées par des "X" via un double click ou click droit).

@Phil69970 - Désolé de mes explications tortueuses du post#1 - Le click droit COUPE / COLLE vers la feuille2.
@M92_ - Je regarde tout à l'heure mais je m'y perds déjà en VBA alors je ne te dis pas en formules...
Merci à vous deux d'avoir pris de votre temps et d'avoir prêté attention à mon post.

Bon ouikand à toutes & à tous
@+ Eric c
 

Pièces jointes

Bonjour à tous,

Un essai. Le code est dans le module de la feuille "Feuil1" :
VB:
Option Explicit
Const coche = 253, decoche = 168

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ref, derlig&, t, i&
   If Target.Count = 1 And Target.Column = 1 And Target.Offset(, 1) <> "" Then
      Target = IIf(Asc(Target) = coche, Chr(decoche), Chr(coche))
      Target.Offset(, 1).Select
      ref = Target.Offset(, 1).Value
      With Sheets("Feuil2")
         derlig = .Cells(.Rows.Count, "a").End(xlUp).Row + 1
         t = .Range("a1").Resize(derlig)
         Select Case Asc(Target.Value)
            Case coche
               derlig = .Cells(.Rows.Count, "a").End(xlUp).Row
               If derlig = 1 And .Cells(1, "a") = "" Then derlig = 1 Else derlig = derlig + 1
               Target.Offset(, 1).Copy .Cells(derlig, "a")
            Case decoche
               For i = UBound(t) - 1 To 1 Step -1
                  If t(i, 1) = ref Then .Cells(i, "a").Delete xlShiftUp
               Next i
         End Select
      End With
   End If
End Sub
 

Pièces jointes

Re le fil
Bonjour mapomme - Pile poil, toujours aussi réactif - Merci pour moi et pour marie771 - Dernière question : pourrait on imaginer que d'autres cellules (Cx, Dx, Ex....) viendront prendre place à la suite de Bx ? Si oui, où comment modifier le code (qui ne concerne que Bx). Bonne après-midi à toi.
@+ Eric c
 
Re,
imaginer que d'autres cellules (Cx, Dx, Ex....) viendront prendre place à la suite de Bx ? Si oui, où comment modifier le code (qui ne concerne que Bx)

Voir la version v2.
Une nouvelle constante en début de code définit les colonnes à copier :
Exemple : Const Colonnes = "b:g" ou Const Colonnes = "b:b"
 

Pièces jointes

Re le fil

@ mapomme - Désolé pour mon ancien post que j'ai supprimé car j'avais mal interprété le code (c'était l'heure de l'apéro (que je n'ai pas pris) et j'ai cafouillé dans les colonnes. Non tout est parfait et je t'en remercie grandement.

@+ Eric c
 
@ M92_ : j'ai bien fait tout ce que m'a indiqué dans le plus grand respect mais aucune données ne vient s'intégrer dans la feuille "IMPRESSION LISTE" ? - J'ai bien les "Vrai ou Faux" mais pas de transfert de valeurs ?
Je te remercie quand même.
@+ Eric c
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
738
Réponses
7
Affichages
704
M
Réponses
9
Affichages
769
Maikales
M
Réponses
2
Affichages
1 K
Retour