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" ThenEn 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
Nextmerci 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").CopytblTasks = 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 SubSalut Darkangel,
Sans fichier cela va être compliqué
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#
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).InsertRemplacé par
Worksheets("Répartition CT").Rows("6:8").InsertBien 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 SubTiens 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