XL 2013 Macro copier-coller si condition date

Pluce1

XLDnaute Nouveau
Bonjour,

Après une semaine de recherche je viens demander de l'aide.

Je voudrais faire une macro qui copie les lignes du fichier "Suggestion new BP" si la cellule de la colonne H est à la date du jour. Ces lignes doivent être copiées à partir de la première ligne vide dans le classeur "test BP". Pour les lignes qui sont copiées, il faudrait que les chiffres rentrées dans les colonnes de T à AO du fichier "Suggestion new BP" soit cumulées en somme dans la colonne X du fichier "test BP".

Ci dessous la macro que j'ai faite:

Sub Copier_coller()
'
' Copier_coller Macro
'
j = 3
For i = 2 To 65536
If Workbooks("Suggestion new BP.xlsx").Worksheets("feuil1").Range("H" & i).Value = Date Then
Application.Workbooks("Suggestion new BP.xlsx").Worksheets("feuil1").Range("A" & i & ":BI" & i).Copy
Workbooks("test.BP").Worksheets("Feuil1").Activate
Workbooks("test BP.xlsm").Worksheets("Feuil1").Range("A" & j Range(":BI" & j).End(xlUp).Row + 1).Select
ActiveSheet.Paste
j = j + 1
End If
Next i
'
End Sub


Merci beaucoup pour votre aide !

Pluce1
 

Pièces jointes

  • test bp.xlsx
    14.7 KB · Affichages: 49
  • Suggestion new BP.xlsx
    31.5 KB · Affichages: 53
  • test bp.xlsx
    14.7 KB · Affichages: 49

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjoour,

Merci de votre réponse.
Il me signale "erreur 1004: Erreur définie par l'application ou pas l'objet", et me met en jaune les deux lignes suivantes:
Application.Workbooks("Suggestion new BP.xlsm").Worksheets("feuil1").Range("A" & i & ":BI" & i).Copy _
Workbooks("test bp.xlsm").Worksheets("Feuil1").Range("A" & j)
 

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Ca me copie effectivement les bonnes lignes mais ça les colle à partir de la ligne 2 et non à partir de la première ligne vide ce qui écrase les données qui sont au début du tableau.
 

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonsoir

Ca me copie effectivement les bonnes lignes mais ça les colle à partir de la ligne 2 et non à partir de la première ligne vide ce qui écrase les données qui sont au début du tableau.

Normal : comme ton fichier test bp donné en exemple est vide à partir de la ligne 3, on écrit dans la macro j = 3. Si ton fichier réel est vide à partir de la ligne 10, il faut remplacer cette ligne de code par j = 10.

On peut aussi faire le nécessaire pour qu'Excel trouve automatiquement le n° de la première ligne vide, mais est-ce bien nécessaire ?

@ plus
 

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjour,

Il faudrait qu'Excel trouve automatiquement le n° de la première ligne vide parce que le fichier "test BP" n'est qu'un exemple et le vrai fichier contient plus de 20 000 lignes qui s'ajoutent tout au long de l'année.
 

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

Cf. en pièce jointe. J'ai fait une macro polyvalente qui recherche le n° de la dernière colonne et de la dernière ligne dans les deux fichiers. On peut faire plus simple si on considère que toutes les colonnes de la feuille [test bp]Feuil1 finissent sur la même ligne (dans ce cas, il suffit de faire la recherche du n° de la dernière ligne sur une seule colonne, et pas sur toutes les colonnes). Idem pour la feuille [Suggestion new BP]Feuil1.

Pour autant, elle n'est pas totalement polyvalente, puisque cette macro ne copie que la plage [Suggestion new BP]Feuil1!Ai:BIi (alors que BIi n'est pas la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!) comme tu l'as fait dans ton post initial.

@ plus

P.S : Il faudra peut être que tu changes certaines extensions dans la macro.
 

Pièces jointes

  • test bp.xlsm
    24 KB · Affichages: 49
  • test bp.xlsm
    24 KB · Affichages: 56
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

Si ce n'est pas à cause des dates, exécute la macro en pas à pas détaillé et essaye de voir si la macro passe sur la ligne
Code:
Application.Workbooks("Suggestion new BP.xlsx").Worksheets("feuil1").Range("A" & i & ":BI" & i).Copy _
        Workbooks("test bp.xlsm").Worksheets("Feuil1").Range("A" & dernièrelignetest + 1)
placé en bas.

Pour aller plus vite, tu peux cliquer devant
Code:
For i = 2 To dernièreligneSug
en bas, pour y placer un point d'arrêt, puis lance la macro (F5), puis avance en pas à pas détaillé (F8 plusieurs fois) une fois que la macro se sera placée sur cette ligne.

Dis moi ce qui se passe.

@ plus
 

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjour,

J'ai execute le code pas à pas, et il s'arrête à cette dernière commande:

For col = 1 To dernièrecolonnetest
If dernièrelignetest < Workbooks("test BP.xlsm").Worksheets("Feuil1").Cells(1048575, col).End(xlUp).Row Then
dernièrelignetest = Workbooks("test BP.xlsm").Worksheets("Feuil1").Cells(1048575, col).End(xlUp).Row
End If
Next col


Il ne veut pas descendre après Next col.

a +
 

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert