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

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

Je ne suis pas très "bon" en macro et donc je ne vois pas trop pourquoi cela ne fonctionne pas chez toi.

A tout hasard, avec quelle version d'Excel travailles tu ? Perso, je suis sur Excel 2007 et sur Excel 2010 et cela fonctionne bien.
Si tu utilises une version plus ancienne, la feuille contient moins de 1048575 lignes et il faut donc remplacer ce nombre par le n° de la dernière ligne de la feuille dans les deux boucles, dans

If dernièrelignetest < Workbooks("test bp.xlsm").Worksheets("Feuil1").Cells(1048575, col).End(xlUp).Row Then
et dans la ligne en dessous

et dans
If dernièreligneSug < Workbooks("Suggestion new BP.xlsx").Worksheets("feuil1").Cells(1048575, col).End(xlUp).Row Then
et dans la ligne en dessous

Tu peux aussi remplacer ce nombre 1048575 à chaque fois par Rows.Count.

Autrement, refais défiler la macro en pas à pas (F8 plusieurs fois), et positionne la souris sur le dernièrelignetest. Est-ce que tu as une valeur qui apparait ?

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

J'ai mis une seconde macro, Copier_coller2, dans le fichier test bp, moins polyvalente. Essayes, pour voir...

@ plus
 

Pièces jointes

  • test bp.xlsm
    26.9 KB · Affichages: 50
  • test bp.xlsm
    26.9 KB · Affichages: 82

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjour,

Désolée pour la réponse tardive avec ce long week end, la macro refuse toujours de defiler au delà de Next col et j'ai bien une valeur en positionnant la souris sur dernièrelignetest, il m'affiche 25073.
Je travaille sur Excel 2013.

A +
 

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjour,

Le fichier test bp n'a que 39 lignes pour l'instant mais il va devoir en contenir plus de 25 000 à terme.

J'ai testé les deux macros que tu as faite, et merci beaucoup d'avoir pris du temps pour les faire !, mais ells ne fonctionnent pas plus. Et je ne vois pas à quelle moment elle est supposée coller les données puisque je ne vois ni paste ni code allant dans ce sens.

A +
 

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

Les 3 macros utilisent une méthode différente pour repérer le n° de la dernière ligne du fichier test bp.

Le "collage" se fait à la fin, dans la boucle
Code:
For i = 2 To dernièreligneSug
après le test IF... avec le code
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)

@ plus
 

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjour,

Il me collait les données effectivement dans la ligne 25074, merci d'y avoir pensé, du coup j'ai parfaitement nettoyé les lignes de la première ligne vide jusqu'à la dernière ligne vide du fichier et maintenant il me colle les données à la ligne 50333 ce qui n'a aucun sens. Et en plus il colle certaines lignes en doublon et en oublie d'autres.

A+
 

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

Renomme ton fichier test pb, ferme le. Ensuite essaye de faire tourner la macro sur un autre fichier, un peu construit comme test pb, et s’appelant aussi test pb, avec juste quelques lignes remplies au début.

@ plus
 

Pluce1

XLDnaute Nouveau
Re : Macro copier-coller si condition date

Bonjour,

Ca marche !! =) Merci beaucoup !!
Sais tu comment faire pour que, dans les lignes copiées, les cellules de la colonne T à AO soient additionnées et que la somme s'affiche en colonne X du fichier test BP stp?

Merci,

A +
 

CISCO

XLDnaute Barbatruc
Re : Macro copier-coller si condition date

Bonjour

Rajoute la ligne de code
Code:
        Workbooks("test bp.xlsm").Worksheets("Feuil1").Cells(dernièrelignetest + 1, 24) = WorksheetFunction.Sum(Application.Workbooks("Suggestion new BP.xlsx").Worksheets("feuil1").Range("A" & i & ":BI" & i))

tout en bas de la macro, juste avant
Code:
        dernièrelignetest = dernièrelignetest + 1
        End If
    Next i
'
End Sub

@ plus
 

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22