Macro pour le super nul : copier ligne sur autre feuille si case cochée

bonjour a tous!

je sais que ce sujet a deja été abordé dans un autre topic mais je n'arrive pas a comprendre.

J'ai essayé en me basant sur d'autres topics mais je n'y arrive vraiment pas.

J'ai une tableau de données qui est composé de plusieurs feuilles. J'aimerais que la ligne de la feuille "global" se copie automatiquement sur la feuille "chantier" si je coche une case en colonne "G". Et j'aimerais que les lignes se rajoute automatiquement a la suite des autres sur la feuille "chantier".

De meme, si je coche une case en colonne W dans la feuille "rmp", j'aimerais qu'elle s'ajoute dans la feuille "chantier".

Nous avons donc une feuille qui se remplie si je coche une case soit dans la feuille global ou dans la feuille rmp.

Et pour un nul comme moi, c'est ingerable...

PLEASE HELP!!!!!

18factures.xlsx (23.91 Ko)

Bonjour et sur le forum,

je te propose cette solution:

20factures.xlsm (24.74 Ko)

Tu coches dans G ou W en écrivant "x" ou "X", et la ligne est déplacée dans chantier dès que tu valides la modification.

Bonjour Houssayman, bonjour le forum,'

Ce que je trouve étrange c'est de vouloir copier des lignes de deux tableaux qui n'ont pas la même structure mais bon...

Deux macros événementielles Change à placer dans leur composant onglet respectif.

Tu tapes x ou X dans la colonne G de l'onglet global et la ligne est copiée dans l'onglet chanter

Tu supprimes le x ou le X et la ligne est supprimée dans l'onglet chantier.

le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OC As Worksheet 'déclare la variable OC (Onglet Chantier)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Byte 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim VC As String 'déclare la variable VC (Valeur Cherchée)
Dim VT As String 'déclare la variable VT (Valeur Trouvée)

If Target.Column <> 7 Then Exit Sub 'si le changement à lieu ailleurs que dans la colonne 7, sort de la procédure
Set OC = Worksheets("chantier") 'définit l'onglet OC
TV = OC.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
If UCase(Target.Value) = "X" Then 'condition : si un x ou un X est édité dans la colonne G
    'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de l'onglet OC)
    Set DEST = IIf(OC.Range("A1").Value = "", OC.Range("A1"), OC.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
    Cells(Target.Row, "A").Resize(1, 6).Copy DEST 'copie les cellules de la ligne et les colle dans DEST
End If 'fin de la condition
If Target.Value = "" Then 'si la cellule est effacée
    For I = 1 To 6 'boucle sur toutes les colonnes I du tableau des valeurs TV
        VC = IIf(VC = "", Cells(Target.Row, I), VC & Cells(Target.Row, I)) 'définit la valeur cherchée VC (concaténation des données)
    Next I 'prochaine colonne de la boucle
    For J = 1 To UBound(TV, 1) 'boucle 1 : sut toutes les lignes J du tableau des valeurs TV
        For I = 1 To 6 'boucle 2 : sur toutes les colonnes I du tableau des valeurs TV
            VT = IIf(VT = "", Cells(Target.Row, I), VT & Cells(Target.Row, I)) 'définit la valeur trouvée VT
        Next I 'prochaine colonne de la boucle 2
            If VC = VT Then OC.Rows(J).Delete: Exit Sub 'si VC est égale à VT, supprime la ligne J dans l'onglet OC et sort de la procédure
    Next J 'prochaine ligne de la boucle 1
End If 'fin de la condition
End Sub

Tu tapes x ou X dans la colonne W de l'onglet rmp et la ligne est copiée dans l'onglet chanter

Tu supprimes le x ou le X et la ligne est supprimée dans l'onglet chantier.

le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim OC As Worksheet 'déclare la variable OC (Onglet Chantier)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Byte 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim VC As String 'déclare la variable VC (Valeur Cherchée)
Dim VT As String 'déclare la variable VT (Valeur Trouvée)

If Target.Column <> 23 Then Exit Sub 'si le changement à lieu ailleurs que dans la colonne 23, sort de la procédure
Set OC = Worksheets("chantier") 'définit l'onglet OC
TV = OC.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
If UCase(Target.Value) = "X" Then 'condition : si un x ou un X est édité dans la colonne G
    'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de l'onglet OC)
    Set DEST = IIf(OC.Range("A1").Value = "", OC.Range("A1"), OC.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
    Cells(Target.Row, "A").Resize(1, 22).Copy DEST 'copie les cellules de la ligne et les colle dans DEST
End If 'fin de la condition
If Target.Value = "" Then 'si la cellule est effacée
    For I = 1 To 22 'boucle sur toutes les colonnes I du tableau des valeurs TV
        VC = IIf(VC = "", Cells(Target.Row, I), VC & Cells(Target.Row, I)) 'définit la valeur cherchée VC (concaténation des données)
    Next I 'prochaine colonne de la boucle
    For J = 1 To UBound(TV, 1) 'boucle 1 : sut toutes les lignes J du tableau des valeurs TV
        For I = 1 To 22 'boucle 2 : sur toutes les colonnes I du tableau des valeurs TV
            VT = IIf(VT = "", Cells(Target.Row, I), VT & Cells(Target.Row, I)) 'définit la valeur trouvée VT
        Next I 'prochaine colonne de la boucle 2
            If VC = VT Then OC.Rows(J).Delete: Exit Sub 'si VC est égale à VT, supprime la ligne J dans l'onglet OC et sort de la procédure
    Next J 'prochaine ligne de la boucle 1
End If 'fin de la condition
End Sub

Le fichier :

[Édition]

Bonjour Ausecour, nos posts se sont croisés...

[Édition]

Bonjour Ausecour, nos posts se sont croisés...

Bonjour ThauThème

En effet nous nous sommes croisés, mais c'est pas grave, ça donne 2 solutions différentes au demandeur

bonjour @Ausecour et @Thautheme

Tout d'abord un enorme merci pour vos reponses.

Votre remarque est judicieuse @thautheme... je vais retravailler la structure des 2 tableau pour que ce soit coherent. Comme je l'avais indique, je suis plus que debutant sur excel.

Par contre, @ausecour, il y a un soucis. Lorsque je coche la colonne, la ligne "part" dans la 3 eme feuille...hors, j'aimerais un copier coller.

donc, j'ai repris le tableau pour le mettre en forme coherente. Sur le tableau RMP, j'ai juste besoin des premieres colonnes identiques au tableau de la page 1.

Pouvez vous svp rejeter un oeil?

Merci d'avance

Re,

J'ai modifié la macro pour prendre en compte ce que tu as dis, ça fait un peu comme ThauThème:

Tu coches pour faire apparaitre de l'autre côté, et tu décoches pour y faire disparaitre:

Une colonne masquée gère les références, je suis partis du principe que tu n'allais pas tout bouger dans tes deux premières feuilles.

Merci Ausecour

Par contre, vous n'avez peut etre pas vu, mais j'ai remis un document sur ma derniere parution...en prenant en compte les remarques de Thautheme..

Pouvez vous voir en utilisant ce document svp?

Re,

désolé, j'avais bien vu le fichier, mais je n'avais pas vu de différence, donc je l'ai snobé...

J'ai modifié par rapport à ce nouveau fichier, le résultat est bon d'après moi:

c'est parfait Ausecour!!!

Merci 1000 fois... Je ne cloture pas la conversation, au cas ou!! je teste et je reviens vers vous au plus vite!!

Merci aussi Thautheme

De rien

Petite mise en garde, pour éviter les gros problèmes de moulinette qui met des plombes à mouliner

J'ai limité le nombre de cellules modifiables d'un coup à 10 000, j'espère que ça ne posera pas problème...

absolument pas!!!

c'est parfait...

Bonjour à tous,

Tout d'abord je pense que je suis encore plus nul que le créateur du sujet mais j'ai exactement le même problème à la différence prêt que j'aurai besoin de pouvoir recopier seulement certaines cellules de ma ligne lorsque je coche une case sur cette ligne.

A savoir que je ne sais pas créer une colonne où je peux cocher la case (premier problème)

J'aimerai que lorsque je coche la case dans n'importe quelle autre feuille du classeur (sit19 FACT19 SIT20 FACT20) cela se copie dans l'onglet ENTCLIENT 20 (seulement les infos des cellules demandées dans ENTCLIENT 20).

Si @Ausecour ou quelqu'un d'autre pouvait m'aider cela serait vraiment top

Merci d'avance.

Rechercher des sujets similaires à "macro super nul copier ligne feuille case cochee"