Coller ligne dans une autre feuille si date identique

Bonsoir,

Je me tourne vers vous pour un problème qui, je pense, doit être assez simple à résoudre ( mais pas assez pour que je puisse y arriver par moi-même ).

  • Dans Feuil1 se trouvent en colonne B des dates ( une date pour une ligne ) dans l'ordre chronologique.
  • Dans Feuil2 se trouvent également des dates en colonne B, également dans l'ordre chronologique.
  • Toutes les dates de Feuil2 sont présentes dans Feuil1, mais dans Feuil2 il peut y avoir plusieurs lignes pour une même date, et ce de façon irrégulière ( par exemple le 07/01/2008 est présent sur 5 lignes, mais le 08/01/2008 seulement sur 4 lignes )

Je souhaiterai copier les lignes de Feuil1 à partir de la colonne C, et les coller pour chaque dates correspondantes dans la Feuil2, en partant ici aussi de la colonne C.

( Donc, par exemple si on considère le fichier exemple joint, les lignes 2;3;4;5 et 6 de Feuil2 seront identiques à la ligne 2 de Feuil1.

Dans le fichier exemple les données s'arrêtent en colonne AD, mais dans le fichier original elles s'arrêtent en colonne EE.

Je ne sais pas si c'est important de le préciser mais je souhaite ensuite ajouter des données dans Feuil2 après la colonne EE.

Je tiens à préciser que j'ai passé les deux dernières heures à éplucher des sujets similaires, car j'en ai trouvé un certain nombre, mais je suis complètement néophyte en VBA. Je ne sais qu'utiliser 'Function' et des petites choses comme IF, AND, THEN.

Cependant il y en un sujet en particulier qui m'a paru se rapprocher de ce que je souhaite faire. Voici le lien :

https://forum.excel-pratique.com/excel/copier-range-d-une-feuille-a-l-autre-si-cellule-identiques-t47990.html

Et voici le code, qui m'a juste permis de faire apparaitre la date en colonne C, mais seulement pour la premiere occurence de chaque date, et non sur toutes les lignes :

Option Explicit

Sub Recopie()
Dim Cel As Range
Dim J As Long

  With Sheets("Feuil2")
    For J = 2 To Range("B" & Rows.Count).End(xlUp).Row
      Set Cel = .Columns("B").Find(what:=Range("B" & J), LookIn:=xlValues, lookat:=xlWhole)
      If Not Cel Is Nothing Then
        Range("B" & J & ":D" & J).Copy Cel.Offset(0, 1)
      End If
    Next J
  End With
End Sub

J'avoue ne pas avoir tout compris, surtout à quoi correspondait le "J". Mais de celles que j'ai essayées, c'est la seule qui m'a permis d'entrevoir un petit quelque chose ( vraiment petit haha ).

Je vous remercie d'avoir lu, ainsi que pour votre aide

Marusanmarukyû ( ○三○九 )

52exemple.xlsm (11.03 Ko)

Salut quelque soit ton prénom et bienvenue sur le Forum,

Voici un code à tester :

Option Explicit

Sub ss()
Dim i As Integer, j As Integer, Date_Référence As Long

Application.ScreenUpdating = False

Range("C2:EE" & Rows.Count).ClearContents

For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
    Date_Référence = CLng(Range("B" & i))
    j = Application.WorksheetFunction.Match(CLng(Date_Référence), Sheets("Feuil1").Range("B:B"), 0)
    Sheets("Feuil1").Range("C" & j & ":EE" & j).Copy Range("C" & i)
Next i
End Sub

Cordialement.

126exemple-v1.xlsm (20.59 Ko)

Bonjour,

Merci beaucoup pour votre réponse et votre aide. J'ai pu obtenir le résultat souhaité. :)

Cependant j'ai quelques questions :

- Lorsque j'ai voulu appliquer la macro à mon fichier pour la première fois j'ai obtenu une erreur d'exécution '1004' ( "impossible de lire la propriété Match de la classe WorksheetFunction" ). Je me suis rendu compte que c'était du à une date qui était présente dans Feuil2 mais pas dans Feuil1. J'ai simplement inséré une ligne avec la date en question ( pour chaque occurence de l'erreur). Je me demandais, pourquoi la macro n'a simplement pas ignoré ces dates ?

- J'aurai souhaité savoir à quoi correspondent le 'i' et le 'j' dans le code ? Est-ce que c'est arbitraire et nous aurions pu les remplacer par n'importe quel(le) autre lettre ou mot ?

Merci et bon dimanche !

○三○九 ( Marusanmarukyû )

Salut,

[quote="○三○九"]Je me demandais, pourquoi la macro n'a simplement pas ignoré ces dates ?[/quote]

Comme j’avais vu que tu avais toutes les dates présentes sur les deux feuilles, je n’ai pas cru bon m’occuper de la gestion des erreurs. Maintenant si tu m’avais fait parvenir ton vrai fichier, je m’en serais rendu compte et je t'aurais demandé ce que tu désirais faire : simplement ignorer ces dates, t'en informer par un message ou que sais-je d'autre ? Veux-tu maintenant me fournir ton vrai fichier (ou un fichier présentant un tel cas de figure) et que je traite le cas selon tes souhaits ?

[quote="○三○九"]J'aurai souhaité savoir à quoi correspondent le 'i' et le 'j' dans le code ? Est-ce que c'est arbitraire et nous aurions pu les remplacer par n'importe quel(le) autre lettre ou mot ?[/quote]

Le i et le j sont des noms de variables qui peuvent prendre toutes sortes de valeurs différentes. Ces noms sont effectivement arbitraires et on aurait tout aussi bien pu prendre djdkfjdlkfdjfdkfj_fff à la place de i et Jean-François à la place de j. J'aurais également pu remplacer le nom de la variable Date_Référence par exemple par k.

A te relire.

Yvouille a écrit :

Salut,

Comme j’avais vu que tu avais toutes les dates présentes sur les deux feuilles, je n’ai pas cru bon m’occuper de la gestion des erreurs. Maintenant si tu m’avais fait parvenir ton vrai fichier, je m’en serais rendu compte et je t'aurais demandé ce que tu désirais faire : simplement ignorer ces dates, t'en informer par un message ou que sais-je d'autre ? Veux-tu maintenant me fournir ton vrai fichier (ou un fichier présentant un tel cas de figure) et que je traite le cas selon tes souhaits ?

D'accord, je comprends, c'est ce que je me disais mais je souhaitais en avoir la confirmation.

A vrai dire je ne m'attendais pas à ce que ce soit possible qu'il y ait ces quelques rares dates en plus sur Feuil2.

Merci pour votre proposition mais c'est en fait très bien ainsi et pour ce que je souhaite faire par la suite.

Yvouille a écrit :

Le i et le j sont des noms de variables qui peuvent prendre toutes sortes de valeurs différentes. Ces noms sont effectivement arbitraires et on aurait tout aussi bien pu prendre djdkfjdlkfdjfdkfj_fff à la place de i et Jean-François à la place de j. J'aurais également pu remplacer le nom de la variable Date_Référence par exemple par k.

A te relire.

C'est noté. Je vous remercie une nouvelle fois et vous souhaite un bon dimanche !

○三○九 ( Marusanmarukyû )

Rechercher des sujets similaires à "coller ligne feuille date identique"