Recopier ligne si date et heure identique

Bonjour,

j'avais auparavant créé un sujet qui était "recopier ligne si date identique".

J'ai essayé d'utiliser la même macro qu'il m'avait été proposée dans ce sujet, mais il semble que le fait que la colonne contienne une date et heure ( nombre décimal ?) au lieu d'une date seulement (nombre entier ?) provoque une erreur. Et je ne sais pas comment la corriger. ( ou peut-être que l'erreur vient d'autre chose bien sûr ^^" )

Voici le code utilisé :

Option Explicit

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

Application.ScreenUpdating = False

Range("C2:P" & 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 & ":P" & j).Copy Range("C" & i)
Next i
End Sub

J'ai essayé de modifier par exemple "j as double" au lieu d'integer, ou d'enlever le CLng, mais ça ne change rien.

Je vous joins également un fichier exemple.

Merci beaucoup pour votre aide ! :)

Marusanmarukyû ( ○三○九 )

Bonjour Marusanmarukyû ( ○三○九 )

Ce n'est pas j que tu dois déclarer en 'Double' mais la variable Date_Référence.

Ensuite, je ne comprends pas ton code...

Tu parcours chaque ligne de ta colonne B et tu copies les données des colonnes C à P.

Mais en début de macro, tu effaces le contenu de ces colonnes !! Il n'y a donc plus de données

Ou bien quelque chose m'échappe ??

Bonjour

Bonjour vba-new

Comme dit vba-new la variable Date_Référence doit être déclarée en double, car tu as une heure avec la date en colonne B

Essayes cette macro

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

  Application.ScreenUpdating = False

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

  For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
    Date_Référence = Range("B" & i)
    j = Application.Match(Date_Référence, Sheets("Feuil1").Range("B:B"), 0)
    If Not IsError(j) Then
      Sheets("Feuil1").Range("C" & j & ":P" & j).Copy Range("C" & i)
    End If
  Next i
End Sub
Banzai64 a écrit :

Bonjour

Bonjour vba-new

Comme dit vba-new la variable Date_Référence doit être déclarée en double, car tu as une heure avec la date en colonne B

Essayes cette macro

Bonsoir Banzai64,

Merci beaucoup ! je viens d'essayer et cela semble marcher. J'avais oublié de préciser que j'avais également essayer de "déclarer en Double" Date_référence, mais ça n'avait pas corrigé l'erreur.

Je vois que vous avez également enlevé la partie 'WorksheetFunction'. Est-ce que le problème pouvait alors venir de ça ?

Merci encore en tout cas !

vba-new a écrit :

Bonjour Marusanmarukyû ( ○三○九 ) :D

Ce n'est pas j que tu dois déclarer en 'Double' mais la variable Date_Référence.

Ensuite, je ne comprends pas ton code...

Tu parcours chaque ligne de ta colonne B et tu copies les données des colonnes C à P.

Mais en début de macro, tu effaces le contenu de ces colonnes !! Il n'y a donc plus de données :?: :?: :shock:

Ou bien quelque chose m'échappe ??

Merci également pour votre aide vba-new. Je suis bien incapable de vous répondre, c'est la macro qu'une sympathique personne comme vous avait rédigé lors de mon précédent sujet, et je n'en comprends que quelques minuscules parties. Ce que je voyais, c'est que ça marchait pour ce que je voulais faire. :D

Merci à tous les deux :)

Marusanmarukyû ( ○三○九 )

Re,

@Banzai

Tu as déclaré la variable j en variant... Une erreur de ta part ?

Edit : J'ai rien dit c'était au cas où j renvoyait une erreur

Rechercher des sujets similaires à "recopier ligne date heure identique"