VBA copier coller lignes / doublon à la fin

Bonjour à tous,

Je vous contacte dans le cadre de la macro suivante qui va copier et coller certaines lignes

celle-ci fonctionne mais je rencontre un soucis pour les derniers if dont celui ci

If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-AF" Or tblTasks(i, 5) = "Versement CT-CF" Then

En effet les if en questions vont bien copier les bonnes lignes et les coller mais et je ne sais pas pourquoi colle en double la dernière ligne copié...

Une idée d'où est mon erreur svp?

sachant que j'ai le meme soucis pour le if d'apres également

Voici la macro dans son ensemble

tblTasks = Worksheets("Mensualisation").Range("B5").CurrentRegion.Value

For i = 2 To UBound(tblTasks) ' on ne prend pas les en-têtes

 If Now >= tblTasks(i, 1) And tblTasks(i, 10) < tblTasks(i, 1) Then
 L1 = Cells(i, 1).Row + 3
Worksheets("Ecriture").Rows(8).Insert
Worksheets("Mensualisation").Range("B" & L1 & ":" & "I" & L1).Copy
Worksheets("Ecriture").Range("A8").PasteSpecial Paste:=xlPasteValues

            If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-AF" Or tblTasks(i, 5) = "Versement CT-CF" Then
Worksheets("Répartition CT").Rows(7).Insert
Worksheets("Systeme").Range("U3:Z8").Copy
Worksheets("Répartition CT").Range("C7").PasteSpecial Paste:=xlPasteValues
  End If

               If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CJ-AF" Or tblTasks(i, 5) = "Versement CJ-CF" Then
Worksheets("Répartition CJ").Rows(7).Insert
Worksheets("Systeme").Range("AD3:AI26").Copy
Worksheets("Répartition CJ").Range("C7").PasteSpecial Paste:=xlPasteValues
  End If
       End If

Next

merci par avance

bonne journée

A toutes fins utile j'indique que le problème est ici et pas dans la première partie qui est elle est fonctionnelle

je n'affiche qu'un seul des if concerné pour plus de visibilité

ici le copier coller fonctionne c'est juste que la ligne Z8 est collé deux fois

Worksheets("Systeme").Range("U3:Z8").Copy
tblTasks = Worksheets("Mensualisation").Range("B4").CurrentRegion.Value

For i = 2 To UBound(tblTasks) ' on ne prend pas les en-têtes
 If Now >= tblTasks(i, 1) And tblTasks(i, 10) < tblTasks(i, 1) Then

If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-AF" Or _
tblTasks(i, 5) = "Versement CT-CF" Then
Worksheets("Répartition CT").Rows(7).Insert
Worksheets("Systeme").Range("U3:Z8").Copy
Worksheets("Répartition CT").Range("C7").PasteSpecial Paste:=xlPasteValues
  End If

       End If

Next

End Sub

Salut Darkangel,

Sans fichier cela va être compliqué (impossible de tester les boucles)

A+

Bonjour bruno

ravi de te revoir ici

En fait le probleme ne vient pas de la boucle!

j'avance un petit peu dans mes tests

j'ai décomposé car je m'étais trompé en copiant collant deux fois la même chose :(

If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-AF" Then
Worksheets("Répartition CT").Rows(7).Insert
Worksheets("Systeme").Range("U3:Z5").Copy
Worksheets("Répartition CT").Range("C7").PasteSpecial Paste:=xlPasteValues
  End If

  If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-CF" Then
Worksheets("Répartition CT").Rows(7).Insert
Worksheets("Systeme").Range("U6:Z8").Copy
Worksheets("Répartition CT").Range("C7").PasteSpecial Paste:=xlPasteValues
  End If

Désormais ca c'est ok 

En fait le coller du deuxième if vient se coller par dessus les résultats sauf pour une ligne..au lieu de décaler les les lignes du tableau

mais bizarre car dans la première partie de la macro je procède pareil dans écriture et cela fonctionne bien...

mais voila un fichier testhttps://forum.excel-pratique.com/post/repondre/167489#

11test.xlsm (22.41 Ko)

si l'on lance la macro ca va chercher les lignes dans l'onglet systeme

mais cela bug lors du collage

je voudrais que cela se colle en haut du tableau pour informartion

Re,

Voici le code corrigé

 Worksheets("Répartition CT").Rows(7).Insert

Remplacé par

 Worksheets("Répartition CT").Rows("6:8").Insert

Bien que la façon de procéder ne soit pas top

Private Sub check_wiretransfer()
  tblTasks = Worksheets("Mensualisation").Range("B4").CurrentRegion.Value
  For i = 2 To UBound(tblTasks)                  ' on ne prend pas les en-têtes
    If Now >= tblTasks(i, 1) And tblTasks(i, 10) < tblTasks(i, 1) Then
      ' L1 = Cells(i, 1).Row + 3
      '
      'Worksheets("Ecriture").Rows(8).Insert
      '
      'Worksheets("Mensualisation").Range("B" & L1 & ":" & "J" & L1).Copy
      'Worksheets("Ecriture").Range("A8").PasteSpecial Paste:=xlPasteValues
      '
      'Worksheets("Mensualisation").Range("K" & L1) = Worksheets("Systeme").Range("O6")

      If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-AF" Then
        Worksheets("Répartition CT").Rows("6:8").Insert
        Worksheets("Systeme").Range("U3:Z5").Copy
        Worksheets("Répartition CT").Range("C6").PasteSpecial Paste:=xlPasteValues
      End If

      If tblTasks(i, 2) = "Compte Joint" And tblTasks(i, 3) = "Versements" And tblTasks(i, 5) = "Versement CT-CF" Then
        Worksheets("Répartition CT").Rows("6:8").Insert
        Worksheets("Systeme").Range("U6:Z8").Copy
        Worksheets("Répartition CT").Range("C6").PasteSpecial Paste:=xlPasteValues
      End If
    End If
  Next
End Sub

Tiens nous au courant

A+

Merci @bruno45

Cela fonctionne dans le fichier test et vais implanter cela dans mon fichier

toutefois une remarque,

si je viens à ajouter des lignes dans dans systeme cela va refausser les choses non?

et pourquoi des insert mulitples alors que dans mon tableau écriture cela fonctionne normalement et le tableau s'adapte?

Aussi comment pourrais je procéder de façon plus adapté svp?

Re,

Je ne sais pas comment tu fonctionnes exactement avec ta feuille "Système"

Une insertion de 3 lignes puisque tu viens y coller 3 lignes en début de tableau (ce n'était pas ton souhait ?)

En écriture, tu saisi des valeurs à la fin, donc le tableau s'adapte effectivement

A+

non justement dans écriture ca se place en haut du tableau pas à la fin!

pour le nombre de lignes et dans l'exemple oui mais je ne sais pas d'avance si j'en aurais pas d'autres à venir sans pour autant changer le code à chaque fois

dans système c'est juste un tableau avec des lignes que je souhaites récupéré car récurrent mais en haut de tableau final

Rechercher des sujets similaires à "vba copier coller lignes doublon fin"