XL 2016 Copier des lignes d'une feuille à l'autre sur une même Excel par double clique

Ned2

XLDnaute Nouveau
Bonjour à tous,

Nouvelle sur ce forum de 24h, je tiens à dire que mon niveau en VBA est faible, mais j'utilise mes connaissances en Python et Internet pour comprendre les bases.

Voici mon contexte :
Je possède une feuille appelée chez moi "Base de données_Façades" qui contient des lignes de critère destiner à être insérer dans la feuille "DPGF", en fonction de la sous-partie auquel ce critère est rattaché. Ainsi, en double-cliquant sur une case à côté du critère de la feuille "Base de données_Façades", celui-ci s'ajoute automatiquement en dessous de la sous-partie auquel le criètre est rattachée. Ainsi les critère de la colonne B de la feuille "Base de données_Façades" doivent s'ajouter entre dessous de la ligne 7 "Installation de chantier" mais au dessus de la ligne "Echafaudage". Réciproquement, quand le critère est décochée, la ligne doit disparaitre de la feuille DPGF. Objectfif : Gain de temps dans le futur.
Où j'en suis ? J'ai réussi à mettre en place le double-clic (ouhouh) et j'ai réussi à faire en sorte que quand je double clic sur les lignes de la colonne A, les lignes en question s'ajoutent sur la feuille "DPGF". Mais :
- Quand je re double clic, elle ne se supprime pas
- Toute la ligne s'ajoute et non pas juste le critère associé à la case double-cliquer
- La ligne qui s'ajoute se place automatiquement dès la ligne A2. Et ce que je comprends pas c'est que si je clique pour ajouter la ligne 2 puis la ligne 3 de ma deuxième feuille, ya trop de ligne qui sont apparus en double..

Donc, beaucoup trop de points que je ne maîtrise pas.
Je me suis aider des codes et indications de cette page pour me guider : https://www.excel-downloads.com/threads/case-cocher-pour-recapitulatif-sur-une-autre-feuille.197089/

Ci-joint l'Excel en question. Et le code pour copier les lignes d'une feuille à l'autre :
VB:
Private Sub Worksheet_Activate()

Dim nbCol As Long
Dim c As Range

Application.ScreenUpdating = False

'Me.Range("C7:C500").ClearContents --> Supprime tout, même les titres, ça va pas

With Sheets("Base de données_Façades")
    nbCol = .Cells(2, Columns.Count).End(xlToLeft).Column

'--> Cette instruction sert donc à déterminer la première colonne vide en partant de la première cellule de la ligne 2 de ta feuille et en allant vers la gauche.
    
    For Each c In .Range("A2:A" & .Range("A500").End(xlUp).Row)
        If c = "þ" Then c.Offset(0, 1).Resize(1, nbCol - 1).Copy Me.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
    Next c
End With
Application.ScreenUpdating = True

End Sub

Je ne sais pas à quel point mon explication est claire ou non, mais merci à ceux qui prendront le temps de m'éclaire. Si je constate que ce que je demande est trop dur pour moi, je trouverai une autre méthode pour me faire gagner du temps.

Bonne journée,
Ned2

PS : j'ai constaté que dès que je fais du VBA sur une feuille, je n'arrive plus à faire du copier/coller de texte, de tableau ou autre sur cette feuille. Est-ce normal ?
 

Pièces jointes

  • Pour Forum_V1.xlsm
    24 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 099
Messages
2 085 269
Membres
102 845
dernier inscrit
Baticle.geo