Copie d'une feuille sur une autre feuille sans doublon

Bonjour,

Je souhaiterai à nouveau obtenir votre aide sur un problème rencontré dans un classeur Excel.

Dans la première feuille "Feuil1", on insère des données d'entrées selon un Type et différentes références (Ref1, Ref2, Ref3).

Dans un premier temps, on souhaite copier sur une seconde feuille "Feuil2", les références des colonnes B (Ref1) et D (Ref3) si le type de la colonne A correspond soit à "X" ou soit à "Y".

Puis dans un second temps lorsqu'on ajoute une ou plusieurs lignes dans la première feuille de Type "X" et/ou "Y", ces lignes doivent être copiées en Feuil2, à la suite des lignes déjà copiées. Cependant, si dans la colonne B, une référence est identique à une autre déjà remplie, cette ligne ne doit pas être copiée.

Et pour finir, il faut que l'ordre des lignes dans la Feuil2 reste inchangé lorsque l'on effectue un trie de A à Z ou que l'on filtre la colonne A ("Type") dans la première feuille.

On souhaite pour cela, un code vba qui répond à notre demande.

Pour cela, je vous mets à disposition un classeur reprenant les souhaits ci-dessus requis.

Vous en remerciant par avance pour toute l'aide que vous pourrez m'apporter.

Bonjour

Vu que cette demande date d'une semaine, pouvez-vous confirmer que vous attendez toujours réponse ou que vous avez reçu une réponse sur un autre forum

Cordialement

Bonjour,

Oui j'attends toujours une réponse, je n'ai pas trouvé de solution sur le problème.

Cordialement

Re,

En pièce jointe votre fichier à tester

Cliquez sur le bouton en feuille 1 et voyez le résultat du code en feuille 2

Si ok et terminé, merci, lors de votre réponse, de cloturer le fil en cochant la case à cocher verte à coté du bouton EDITER

Cordialement

Merci pour ton aide,

Cependant il reste quelques problématiques lorsque j'ai repris votre solution sur mon classeur d'origine :

1) Il faudrait que les valeurs copier de la Feuil1 débute à la ligne vide de la colonne C en Feuil2 (dans le cas présent C18);

2) La macro doit s'appliquer au changement de feuille et non plus en cliquant sur le bouton (Macro s'exécute à chaque ouverture de la feuil2) ;

3) Je souhaite conserver la mise en forme des cellules de destination et non pas la mise en forme de la Feuil1 ;

4) Dans la Feuil1, si un Type X à pour Réf1 = A1 et un Type Y à pour Réf1 = A1 alors je souhaite copier les 2 lignes dans la Feuil2 contrairement à la demande précédente, cependant lorsque un même type à la une Réf1 identique, il faut copier seulement la première ligne (n'hésitez pas à revenir vers moi si je ne suis pas clair sur ce sujet) ;

5) Il y a un bug lorsque l'on modifie une ligne dans la Feuil1 (ajout de ligne ou modification de donnée).

Vous trouverez ci-joint le classeur d'origine, avec des données réelles que l'on retrouvera dans le futur.

Pour cela, il faut prendre en compte les changements suivants :

Feuil1 = "Suivi des diffusions"

Feuil2 = "Avancement"

Type = Document

Ref1 = N°

Ref2 = IND.

Ref3 = Titre 1

Cordialement

43svdif.xlsm (45.77 Ko)

re

Revoici votre fichier en retour. Les points 1, 2 et 3 sont solutionnés

Point 4 : Je ne comprends pas la demande

Point 5 : il y a effectivement un bug du au fichier qui a un souci. Je reçois un message d'une DLL manquante. J'ai d'ailleurs du refaire 3 fois votre fichier. Il me semble que cela est du à une bibliothèque manquante du éditeur VBA. Une fois le module visible, cliquez dans le menu Outils puis Référence. Il manque la bibliothèque Microsoft Stripping Runtime. Décochez là et vérifiez si le bug se reproduit

Cordialement

142svdif-2.xlsm (37.72 Ko)

Bonjour,

Merci bien pour votre aide, cela fonctionne à merveille.

Concernant le point 4 :

Dans le dernier classeur que je vous ai transmis, on retrouve un document nommé AF avec le n° 01, et un document nommé NDC avec le n°01 également. Je souhaiterai que ces 2 lignes soient copiées dans la feuille "Avancement" car c'est 2 types de documents différents. Or, lorsqu'un même type de document (ex : PLAN) à le même numéro de référence (ex : PLAN N°22 IND. 0 & PLAN N°22 IND. A) je souhaite copier qu'une des deux lignes, comme la macro le fait bien actuellement.

Cordialement.

Re,

En gros, les ref NDC doivent être copiées au moins une fois dans la feuille Avancement ?

Crdlt

Oui en gros c'est ça

Cordialement

re

Pour le controle sur NDC, cela implique de vérifier également sur une autre colonne et ce, vu que dans la feuille Avancement on ne mentionne en colonne A que le numéro du document. Ce qui implique que vous pouvez avoir deux ou plusieurs références identiques

Actuellement cela oblige de faire un controle sur la colonne K dans la feuille suivi et C dans la feuille avancement

Une solution pour NDC serait de mettre le mot NDC dans la colonne A en plus de la référence

D'autre part, que doit-il se passer si vous corrigez un item de la colonne K dans la feuille Suivi

Cordialement

Bonjour,

Oui je vois très bien ce que vous voulez dire, je vais essayer de me débrouiller pour mettre à jour le code selon mes colonnes.

Il n'y a pas lieu de modifier un titre dans la colonne K dans la feuille Suivi.

En tous cas, je vous remercie de toute l'aide que vous m'avez apporté.

A bientôt.

Re

Ok tenez moi au courant. Je ferai les corrections dans votre fichier

Si vous en avez fini avec cette demande, merci de ne pas omettre de clôturer le fil en cliquant sur la case à cocher verte à coté du bouton EDITER

A bientôt

Bonjour Crz-10, Dan, le forum

Question : qu'adviendra t-il des erreurs de saisie, lors de la validation de la dite "saisie"

Casse tête assuré

Personnellement, je procéderais autrement :

Tu dis vouloir effectuer différents tris

Ta feuille source devrait contenir en tête de colonnes, une colonne d'indexation (ordre d'entrée)

Tu pourrais ainsi retrouver l'ordre initial de tes enregistrements pour ensuite exécuter cette macro avec l'événement Activate si tu le souhaites

Option Explicit
Sub test()
Dim a, i As Long, txt As String, dico As Object
    Set dico = CreateObject("Scripting.dictionary")
    dico.CompareMode = 1
    With Sheets("Suivi des diffusions").Range("a5").CurrentRegion
        a = .Value
        For i = 3 To UBound(a, 1)
            txt = Join$(Array(a(i, 1), a(i, 9)), "")
            If Not dico.Exists(txt) Then
                dico(txt) = VBA.Array(a(i, 9), a(i, 10), a(i, 11))
            End If
        Next
    End With
    With Sheets("Avancement")
        .Cells(14, 1).Resize(dico.Count, 3).Value = Application.Index(dico.Items(), 0, 0)
    End With
End Sub

klin89

Rechercher des sujets similaires à "copie feuille doublon"