Copie de ligne variable automatique dans une autre feuille

Bonjour,

Alors voilà, mon problème est assez simple mais je ne trouve pas de solution :

J'ai une ligne défini par une variable sur une feuille 1 que j'ai nommée lignecourante 1, et qui est incrémentée à la suite d'un évènement.

Je souhaiterais dans mon programme la copier automatiquement dans une ligne également définie par une varibale dans une autre feuille (feuille 2) définie par lignecourante2 .

J'ai pour cela utilisé la formule suivante :

Sheets("Feuille2").Rows(lignecourante2) = Sheets("Feuille1").Rows(lignecourante1)

Mais je ne comprends pas pourquoi, je n'arrive pas du tout à faire fonctionner mon copiage, impossible de trouver pourquoi...

J'en appelle donc à votre aide, et vous remercie d'avance !

Cordialement

Bonjour,

Tu peux tester le code suivant ...

Feuil1.Rows(lignecourante1).Copy Destination:=Feuil2.Rows(lignecourante2)

Je vous copie mon code, puisque je ne comprends pas d'où vient mon soucis (même en ayant mis cela)

Sub Trifinal()

lignepfinal = 6     'ligne du planning final où on doit copier la ligne du planning

lignecouranteplanning = 6 'ligne actuelle du planning (qui contient le numéro de la pièce à placer)

lignecourantetri = 2    'ligne (de l'ordre de tri) où il y a la pièce qui doit arriver en 1er dans le planning final

numpiècecouranteplanning = Worksheets("Planning").Cells(lignecouranteplanning, 1) 'numéro de la pièce à placer sur le planning final
numpiècecourantetri = Worksheets("OrdreTri").Cells(lignecourantetri, 1) 'numéro de la pièce qui doit arriver en 1er sur le planning final

    While ((Worksheets("OrdreTri").Cells(lignecourantetri, 1) <> " ") And (lignecourantetri < 300)) 'boucle sur toutes les pièces, 300 pour éviter boucle infini en cas d'erreur de programme)
     'On parcoure toute la liste de tri

            While (numpiècecouranteplanning <> numpiècecourantetri And (lignecouranteplanning < 300)) 'tant qu'on a pas la bonne pièce à placer sur le planning final
             lignecouranteplanning = lignecouranteplanning + 1 'on regarde la pièce suivante du planning actuel
            Wend

    'on copie la ligne qui correpond bien à la pièce à mettre sur le plannig final
     Planning.Rows(lignecouranteplanning).Copy Destination:=PlanningFinal.Rows(lignepfinal)

     lignecourantetri = lignecourantetri + 1 'on passe à la pièce à placer en 2ème sur le planning final
     lignepfinal = lignepfinal + 1 'on passe à la ligne suivante sur le planning final
     lignecouranteplanning = 6 'On fait recommencer la recherche à partir de la première pièce du planning actuel

    Wend

End Sub

En fait j'ai un planning initial, sur lequel j'ai une liste de pièces (colonne 1 références, colonne 2 noms). J'ai ensuite un planning final que je veux créer à partir d'une copie de l'initial mais en classant les pièces selon un ordre donné dans une 3ème feuille nommée OrdreTri.

Donc je boucle sur mon ordre de tri, je recherche la référence de la 1ère pièce, puis sur mon planning initial je vais rechercher celle qui y correspond. Quand je suis arrivé à la ligne qui correspond à cette pièce, je copie tout simplement toute la ligne sur la 1ère ligne de mon planning final.

J'ai tenté ce code qui sur le papier devrait fonctionner pour copier et classer mon planning... Mais il me donne toujours une erreur à la ligne de copie quand je le lance...

Bonjour,

Ton instruction est rédigée ainsi :

Planning.Rows(lignecouranteplanning).Copy Destination:=PlanningFinal.Rows(lignepfinal)

A quoi correspondent Planning ... et PlanningFinal ...????

Mon planning est une feuille qui correspond au planning initial que je souhaite trier (en gros deux colonnes avec des références et des noms de pièces).

Mon planning final est une feuille vide, où je veux copier les lignes du planning initial mais selon un ordre qui est donné sur la feuille OrdreTri (sur cette feuille il y a la même liste de références/noms de pièces que sur la feuille planning mais dans un ordre différent).

Re,

J'ai dû mal m'exprimer ...

Si ce sont les noms de tes feuilles ... il faut tester le code suivant ...

Sheets("Planning").Rows(lignecouranteplanning).Copy Destination:=Sheets("PlanningFinal").Rows(lignepfinal)

Re,

Je t'ai créée un fichier test pour peut-être me faire un peu mieux comprendre !

49test-tri.xlsm (29.09 Ko)

Re,

Dans les macros, il faut être sûr de correctement recopier le nom des feuilles ...

Sheets("Planning").Rows(lignecouranteplanning).Copy Destination:=Sheets("Planning final").Rows(lignepfinal)

Oui j'avais juste repris le nom de mon fichier officiel. Mais outre ça, la macro ne marche pas (je garde toujours du vide dans le planning final)...

VictorienR a écrit :

Oui j'avais juste repris le nom de mon fichier officiel. Mais outre ça, la macro ne marche pas (je garde toujours du vide dans le planning final)...

Re,

Si je comprends bien ... la ligne de code qui, dans ton premier message, était un problème ... ne l'est plus ...

Par contre, ta macro ne se comporte pas comme tu le voudrais ... est-ce-bien cela ...???

Exactement ! L'erreur que tu m'as montré juste au dessus est résolue, mais j'ai l'impression que la macro ne s'exécute toujours pas...

OK ... dès que j'ai un petit moment ... je me plonge dans ta macro ...

Je te renvoi une nouvelle version de mon Excel !

J'aimerai aussi rajouter au programme un test pour vérifier que si la pièce de l'ordre de tri n'est pas dans le planning actuel, alors on passe à la pièce suivante, mais je ne vois pas trop comment le mettre, donc si tu as du temps..

Merci beaucoup !

10test-tri.xlsm (29.17 Ko)

Re,

Ci-joint ton fichier ... à tester

19test-tri.xlsm (29.42 Ko)

Magnifique ! Par contre, seul soucis : j'ai l'impression qu'il ne nettoie pas le planning final quand on relance plusieurs fois de suite le tri, bien que tu l'ai codé dans le programme...

Et à quoi correspondent tes derl ? Car j'ai essayé de l'appliquer à mon document officiel mais ça ne fonctionne pas..

OOps ...

Peux-tu juste corriger :

derl3 = Feuil3.Range("A65536").End(xlUp).Row ...

Cà devrait jouer ...

Edit : les derl .... sont les dernières lignes de chaque feuille ...

Est-ce que je peux remplacer les Feuil1, Feuil2,Feuil3 par un nom de feuile ? Puisque sur mon document officiel les Feuil1,... ne sont pas attribués aux mêmes feuille et pourtant en les modifiant cela ne marche pas...

VictorienR a écrit :

Est-ce que je peux remplacer les Feuil1, Feuil2,Feuil3 par un nom de feuile ? Puisque sur mon document officiel les Feuil1,... ne sont pas attribués aux mêmes feuille et pourtant en les modifiant cela ne marche pas...

Re,

Le plus simple est de changer 1,2,3 en ... 11,12,13 ... si ce sont les nombres de tes Feuilles...

Mais tu peux également utiliser Sheets("Tes_Noms_de_Feuilles") ...

J'ai réussi à l'appliquer, ça marche ! Cependant sur mon Planning Final, j'ai l'impression que les pièces qui ne sont pas sur le planning initial mais qui sont dans l'ordre de tri s'insèrent quand même sur le planning final et en prenant des valeurs de pièces bien présentes...

Et j'ai des pièces qui se mettent plusieurs fois à la suite, tout celà sans comprendre d'où est ce que ça vient...

Rectification : c'est surtout des pièces en doubles qui arrivent...

En gros parfois la ligne ne se copie qu'une fois, après la suivante se copie plusieurs fois, ...

Voilà un fichier qui montre l'erreur : la somme des pièces n'est pas la même entre le planning 1 et le planning final, alors qu'elle devrait...

16test-tri.xlsm (50.01 Ko)
Rechercher des sujets similaires à "copie ligne variable automatique feuille"