Copier lignes vers une autre feuille - VBA

Bonjour,

J'ai un problème avec excel qui se réglerait à l'aide de VBA. Malheureusement, je ne m'y connais pas. J'ai trouvé un fichier excel avec VBA qui se rapproche très fort à ce que je voudrais effectuer dans mon fichier (test). J'aimerais l'adapter à ma problématique.

Ce que j'aimerais, c'est que la feuille 2 de mon fichier test reprenne uniquement les lignes du client P. Mais si j'ajoute des lignes pour le client P dans la feuille 1, elles doivent s'ajouter automatiquement à la feuille 2. Si j'en supprime dans la feuille 1, elle doivent disparaître de la feuille 2. Bien sur, si je trie mon tableau en fonction d'une certaine colonne, la feuille 2 doit toujours reprendre que les lignes du client P.

Il me semble qu'il suffirait juste d'adapter le code pour mon fichier mais je n'y arrive pas étant donné que je n'y connais rien en VBA.

Je vous remercie d'avance pour votre aide,

Bien à vous

39test.zip (18.73 Ko)
51vba.zip (33.77 Ko)

bonsoir,

une solution via une macro événementielle

Private Sub Worksheet_Change(ByVal Target As Range)
    If Cells(Target.Row, 3) <> "P" Then Exit Sub
    dl = Cells(Rows.Count, 2).End(xlUp).Row
    pl = Cells(1, 2).End(xlDown).Row
    Sheets("feuil2").Rows("10:" & dl).ClearContents
    k = 9
    For i = pl To dl
        If Cells(i, 3) = "P" Then k = k + 1: Rows(i).Copy Sheets("feuil2").Cells(k, 1)
    Next i
End Sub
82alain.xlsm (49.19 Ko)

Super ! A priori, c'est exactement ce que'il me fallait. Mille mercis !!!

Dernière question. Je n'y connais rien en macro. Je n'arrive donc pas à utiliser ce code pour l'implanter dans mon fichier réel.

Pourriez-vous m'expliquer la démarche à suivre s'il-vous-plait? Cela me serait d'une précieuse aide.

Énorme merci d'avance,

Bien à vous

A posteriori, ce n'est pas encore complètement bon.

Quand je rajoute des lignes pour le client "P", c'est parfait, elles apparaissent dans la feuil2. Mais si j'en supprime, elles ne disparaissent pas de la feuil2. De plus, j'aimerais pouvoir rajouter autant de lignes que possibles dans la feuil1. Ici, c'est encore limité à l'exemple.

Bonjour, voici la macro adaptée pour gérer les suppressions

pour insérer le code :

copier le code ci-dessous

faire clic-droit sur le nom de la feuille

coller le code dans la fenêtre de code

faire alt-F11 pour revenir sur la feuille excel

Private Sub Worksheet_Change(ByVal Target As Range)
    If Cells(Target.Row, 3) <> "P" And Cells(Target.Row, 3) <> "" Then Exit Sub
    dl = Cells(Rows.Count, 2).End(xlUp).Row
    pl = Cells(1, 2).End(xlDown).Row
    Sheets("feuil2").Rows("10:" & dl).ClearContents
    k = 9
    For i = pl To dl
        If Cells(i, 3) = "P" Then k = k + 1: Rows(i).Copy Sheets("feuil2").Cells(k, 1)
    Next i
End Sub

Merci, cela fonctionne !

Par contre, quand je dépasse un certain nombre de lignes, cela ne fonctionne plus. Peut-on spécifier dans le code que le nombre de ligne a vérifier est infini ? Mon planning ne se limite pas à 10 lignes en fait.

Merci pour toutes vos réponses !

antgrandj a écrit :

Merci, cela fonctionne !

Par contre, quand je dépasse un certain nombre de lignes, cela ne fonctionne plus. Peut-on spécifier dans le code que le nombre de ligne a vérifier est infini ? Mon planning ne se limite pas à 10 lignes en fait.

Merci pour toutes vos réponses !

pour déterminer le nombre de lignes la macro se base sur la ligne de la dernière valeur trouvée en colonne B.

tu peux prendre une autre colonne comme référence pour le nombre de lignes,

il faut remplacer le 2( pourB) par le numéro de la colonne dans cette instruction

dl = Cells(Rows.Count, 2).End(xlUp).Row

Super, ça fonctionne ! Tout grand merci !

Dernière question: est-il possible de n'afficher que certaines colonnes des lignes que je copie ?

Bonne journée !

Rechercher des sujets similaires à "copier lignes feuille vba"