Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion piwwwa
  • 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 !

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

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

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 🙄
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 😕
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
 
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.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…