XL 2013 Copier coller X fois - uniquement la premiére ligne de mon ficheir

piwwwa

XLDnaute Junior
Bonjour Cher Excel downloadeur,

Je fais appelle à vous car je n’arrive pas à modifier un code, malgré mes recherches et essaies.

J’ai un fichier sur lesquels je tente de copier certaines cellules de la première feuille dans la deuxième en multipliant cette copie par le nombre contenu en C2, c’est-à-dire que si en C2 j’ai trois je veux que dans mon deuxième onglet je retrouve ma copie sur les trois lignes. Pour ce premier point j’ai réussi en m’inspirent de différent topic du forum a multiplier les lignes en fonction d’un nombre le problème est qu’il me multiplie toute les lignes et non pas uniquement la deuxième.
Mon deuxième problème est que je souhaiterais ajouter une deuxième condition, ma première étant si C2 change alors lance la copie, je souhaiterais en plus que si H2 = « training » copie et multiplie, mais si égale a « Other » ne fait rien.

Merci d’avance pour votre aide.
 

Pièces jointes

  • Excel doxload test.xlsm
    22.5 KB · Affichages: 34

M12

XLDnaute Accro
Re : Copier coller X fois - uniquement la premiére ligne de mon ficheir

Bonjour,

A tester si c'est le but de ta demande

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim WsS As Worksheet, WsC As Worksheet
Dim j As Integer, i As Integer
                
If Target.Column = 3 And Target.Row = 2 Then
   
    Set WsS = Worksheets("Actions") 'Feuille source
    Set WsC = Worksheets("Employee") 'Feuille cible
    For j = 2 To WsS.Range("A" & Rows.Count).End(xlUp).Row
        If Cells(j, 8) = "Other" Then Exit Sub:

        For i = 1 To WsS.Cells(j, 3).Value
        
            WsS.Cells(j, 1).Copy Destination:=WsC.Range("A" & WsC.Range("A" & Rows.Count).End(xlUp).Row + 1)
            WsS.Cells(j, 2).Copy Destination:=WsC.Range("B" & WsC.Range("B" & Rows.Count).End(xlUp).Row + 1)
            WsS.Cells(j, 3).Copy Destination:=WsC.Range("H" & WsC.Range("H" & Rows.Count).End(xlUp).Row + 1)
            WsS.Cells(j, 4).Copy Destination:=WsC.Range("I" & WsC.Range("I" & Rows.Count).End(xlUp).Row + 1)
            WsS.Cells(j, 5).Copy Destination:=WsC.Range("J" & WsC.Range("J" & Rows.Count).End(xlUp).Row + 1)
            WsS.Cells(j, 6).Copy Destination:=WsC.Range("K" & WsC.Range("K" & Rows.Count).End(xlUp).Row + 1)
            WsS.Cells(j, 7).Copy Destination:=WsC.Range("L" & WsC.Range("L" & Rows.Count).End(xlUp).Row + 1)
        Next i
    Next j
    Set WsC = Nothing: Set WsS = Nothing
    
End If
End Sub
 

thebenoit59

XLDnaute Accro
Re : Copier coller X fois - uniquement la premiére ligne de mon ficheir

Bonjour Piwwwa, bonjour M12.

Les boucles peuvent être éviter dans la situation.
Je te propose une solution qui réagit au changement en C2 et en C3, permettant la copie de Word ou Excel exclusivement.

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

'Forumeur : Piwwwa
'Auteur : TheBenoit59
'Lien : http://www.excel-downloads.com/forum/242920-copier-coller-x-fois-uniquement-la-premiere-ligne-de-mon-ficheir.html

Dim n As Integer, l As Integer 'Variable du nombre de copie "n", variable de la ligne "l"
Dim fActions As Worksheet, fEmployee As Worksheet 'Variable des feuilles
Dim dl As Long 'Variable dernière ligne du classeur employée

Set fActions = ThisWorkbook.Sheets("Actions"): Set fEmployee = ThisWorkbook.Sheets("Employee")
dl = fEmployee.[a65000].End(xlUp).Row + 1

If Not Application.Intersect(Target, fActions.Range("c2:c3")) Is Nothing Then  'On cherche s'il existe une modification en C2 ou C3
    l = Target.Row
        With fActions
        If .Cells(l, 8).Value <> "Training" Then Exit Sub 'Si la valeur en colonne H est différente de Training on quitte la procédure
            n = .Cells(l, 3).Value 'On détermine le nombre de copies
                .Range(.Cells(l, 1), .Cells(l, 2)).Copy fEmployee.Cells(dl, 1).Resize(n) 'On copie et on colle selon le nombre "n"
                .Range(.Cells(l, 3), .Cells(l, 7)).Copy fEmployee.Cells(dl, 8).Resize(n)
                Application.CutCopyMode = False 'On vide le presse-papier
        End With
Target.Select 'Pour se replacer sur la cellule modifiée
End If
End Sub
 

Pièces jointes

  • Piwwwa - Copier coller X fois - uniquement la premiére ligne de mon fichier.xlsm
    22.2 KB · Affichages: 35

Modeste

XLDnaute Barbatruc
Re : Copier coller X fois - uniquement la premiére ligne de mon ficheir

Bonjour piwwwa, M12,

L'événement Worksheet_Change est-il vraiment le plus adapté, dans le cas présent?
Si on teste que: If Target.Column = 3 And Target.Row = 2 Then ... le code ne va pas s'exécuter souvent :rolleyes:
D'autre part, si c'est au moment où la colonne C est complétée que le code s'exécute, les colonnes suivantes (qui n'ont pas encore été complétées) ne sauraient être recopiées :confused:
Enfin, pour tester le contenu de la colonne H, le problème est le même ... il faudrait que la colonne H soit complétée avant la colonne C!?

[Edit:] salut thebenoit59
 

piwwwa

XLDnaute Junior
Re : Copier coller X fois - uniquement la premiére ligne de mon ficheir

Bonjour,

Merci à tous pour votre aide et votre super réactivité. Grâce à vos exemple détaillé et commenté j’ai pu adapter mon code en tenant compte de la remarque judicieuse de Modeste.

Encore un grand merci pour votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou