XL 2013 Macro copier-coller si condition date

  • Initiateur de la discussion Initiateur de la discussion Pluce1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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)
 
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.
 
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
 
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.
 
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

Dernière édition:
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
 
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 +
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
580
Réponses
2
Affichages
539
Réponses
7
Affichages
619
Réponses
0
Affichages
459
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
691
Réponses
5
Affichages
813
Retour