Copie de ligne vers une autre feuille

Bonjour,

J'aurais besoin d'aide pour mettre en place une macro qui copie des lignes,déclenché par une valeur qui est à l'intersection d'une ligne/colonne.

En faite j'ai plusieurs produits qui est composé de plusieurs pièces répartit dans plusieurs lots est je voudrais que chaque produit possède sa propre feuille en ayant les pièces qui lui correspond ainsi que les informations qui sont inscrites dans les lignes.

J'espère avoir été assez claire car c'est pas évident à expliquer, donc pour plus de compréhension j'ai ajouté ci-joint un exemple.

Je vous remercie de votre aide.

112exemple1.xlsx (19.48 Ko)

Bonsoir

Un essai avec la macro "copier" (si j'ai bien compris le problème) dans le fichier joint

Cordialement

Je te remercie de ton aide c'est exactement sa qui me fallait, mais juste une dernière chose, il existerai pas un moyen automatique qui éviterai d'appuyer sur Copier à chaque fois.

Encore merci

Bonjour

Il faudra que tu nous dises comment et à quelle fréquence ton tableau initial est mis à jour. Y a t-il toujours la même base, est que tu rajoutes des lignes, est-ce qu'il faut garder les données dans les feuilles P1,P2.....

On peut affecter la macro "à chaque changement dans la feuille initiale lot1 ou lot2 mais alors attention si tu fais une erreur c'est déjà trop tard, l'action se déclenche immédiatement.

Bon WE

Bonjour

Enfaite les feuilles lot1 et lot2 sont toujours utilisés, c'est à dire qu'il y a toujours de nouvelle données qui sont ajoutées à tout moment ,et ses données sont remplis manuellement.

Si tu préfère je complète la base dans Lot1 et Lot2 en ajoutant de nouvelle ligne.

Alors je voudrais que quand on remplie une nouvelle ligne dans lot1 et/ou lot2 sa s'ajoute automatiquement dans la feuille P1,P2.... , sans appuyer sur "COPIER" ou sinon mettre à jour automatiquement en cliquant sur la feuille P1,P2,...

Les feuilles P1,etc.. me servent à savoir de quels pièces est composé le produit, un genre de nomenclature.

Voilà, j'espère avoir répondu à tes questions.

Mais si c'est pas possible, pas grave, ce que tu m'a donné est bien, donc c'est suffisant pour moi, je voulais juste pousser un peut le truc pour faire moins de manip possible.

Bon Weekend

C'est une bonne idée. Maintenant les données sont recopiées quand on clique sur une feuille P1,P2.... (pour celà, le code de la macro est mis à chaque activation d'une de ces feuilles)

Cordialement

C'est beaucoup mieux

Mais c'est vrai que sa pose problème si le nombre de pièce diminue, car il risque d'avoir des doublons dans les feuilles Produits.

Donc sa serait bien qu'il se supprime lors de la mise à jour des feuilles.

Cordialement

J'ai voulu commencer à appliquer la macro à ma base de donnée à partir de ce que tu m'a proposé mais j'ai remarqué que tu avais mis P en variable pour nommé les différentes feuilles de produit, donc quand moi je met un autre nom à la feuille P1 par exemple sa créer des problèmes.

Je suis débutant dans l'écriture de macro, alors serait-il possible que tu réécrive la macro en enlevant la variable P pour pouvoir donné un nom différent à chaque feuille.

Encore merci pour ton aide

Il faut, dans la macro, désigner les feuilles. Pour cela on peut le faire par leur nom ou par une variable

Tes feuilles s'appelait P1, P2 ... C'est pourquoi tu trouvais ce nom "P" + un chiffre

Maintenant si tes feuilles ne s'appellent pas P1, P2 c'est normale que ça ne marche pas

Donc tu dois me dire :

soit comment elles s'appellent

soit leur nombre et leur emplacement dans l'enchainement des feuilles (pour le fichier d'avant de la 3ème à la 7ème feuille)

Il faut que tu considère P1,P2,... comme des noms et non par une variable P+ un chiffre.

Moi à partir de la macro que tu auras écrite je remplacerai les noms P1,P2,... par les noms que je voudrais qui seront différents.

Après pour le reste le nombre de feuille Produits etc.. je serai faire à partir de ce que tu auras déjà fait.

Mes tableaux lots vont évoluer fur et a mesure du temps (Ajout d'un produit, ajout d'une ligne pièce, ajout d'une colonne de renseignement à la pièce), mais sa j'arriverai à bidouiller par la suite.

Bonjour

Voilà la macro écrite pour chaque page comme tu le demandes

Cette macro est à modifier pour chaque page P1,P2...... Changer le nom de la feuille et le numéro de la colonne :

(If Sheets("Lot1").Cells(i, 1) = "X" Then 'on teste les données de la colonne 1)

Fais également attention aux lignes du type :

For i = 2 To Sheets("P1").[A65000].End(xlUp).Row

Sheets("P1").[A65000].End(xlUp).Row représente le nombre de lignes renseignées dans la colonne A. à adapter en fonction de tes feuilles

A mettre dans le code de la pageP1 sur activation de la page

Private Sub Worksheet_Activate()
Dim i, j As Integer
Application.ScreenUpdating = False

'on traite la feuille Lot1

' on efface les données de la feuille
For i = 2 To Sheets("P1").[A65000].End(xlUp).Row
    Sheets("P1").Select
    Range("A2:C" & i).Select
    Selection.Delete Shift:=xlUp
Next
j = 2
' on copie
For i = 3 To Sheets("Lot1").[F65000].End(xlUp).Row
If Sheets("Lot1").Cells(i, 1) = "X" Then        'on teste les données de la colonne 1
    Sheets("Lot1").Range("F" & i & ":H" & i).Copy Sheets("P1").Range("A" & j & ":C" & j) ' on copie les données
    j = j + 1
End If
Next

'on traite la feuille Lot2
For i = 3 To Sheets("Lot2").[F65000].End(xlUp).Row
If Sheets("Lot2").Cells(i, 1) = "X" Then
    Sheets("Lot2").Range("F" & i & ":H" & i).Copy Sheets("P1").Range("A" & j & ":C" & j)
    j = j + 1
End If
Next

Application.ScreenUpdating = True
End Sub

OK merci, je vais mettre sa en place , je te tient au courant si tous ce passe bien.

Rechercher des sujets similaires à "copie ligne feuille"