Microsoft 365 Copier des cellules de la feuille1 à la feuille2 automatiquement même lors de l'insertion d'une ligne ou colonne de la feuille 1

kareen64

XLDnaute Nouveau
Bonjour,
Je souhaite copier les lignes ( de la feuille 1 "saisie des salaires") suivantes: 1,2,17,20 à 24, 27 à 29, 34 à 39 sur la feuille 3. J'ai réussi à le faire avec VBA mais comme la feuille 1 contient des formules avec des champs absents dans la feuille 3, je ne sais pas comment faire ??
J'ai un soucis lorsque j'insère des colonnes ou lignes sur la feuille 1 les champs ne sont pas automatiquement insérer sur la feuille 3...
Quelqu'un aurait une solution ?
Merci d'avance bonne journée
Karine
 

Pièces jointes

  • TEST.xlsm
    168.1 KB · Affichages: 21

fanch55

XLDnaute Barbatruc
Salut, à tester :
VB:
Sub rangecopy()
With Sheets("Feuil3")
    .Activate
    .Cells.Clear
    xl_Paste Sheets("Saisie des Salaires").Range("A1:BB1"), .Range("A1:BB1")
    xl_Paste Sheets("Saisie des Salaires").Range("A2:BB2"), .Range("A2:BB2")
    xl_Paste Sheets("Saisie des Salaires").Range("A17:BB17"), .Range("A4:BB4")
    xl_Paste Sheets("Saisie des Salaires").Range("A20:BB24"), .Range("A6:BB10")
    xl_Paste Sheets("Saisie des Salaires").Range("A27:BB29"), .Range("A12:BB14")
    xl_Paste Sheets("Saisie des Salaires").Range("A34:BB39"), .Range("A16:BB21")
End With

End Sub
Sub xl_Paste(source As Range, target As Range)
    source.Copy
    target.Select
    ActiveSheet.Paste link:=True
    target.PasteSpecial xlPasteFormats
    target.PasteSpecial xlPasteColumnWidths
    For Each cell In target
        If cell.HasFormula Then
        formule = Mid(cell.Formula, 2)
        cell.FormulaLocal = "=si(" & formule & "="""";"""";" & formule & ")"
        End If
    Next
End Sub
 

kareen64

XLDnaute Nouveau
Salut, à tester :
VB:
Sub rangecopy()
With Sheets("Feuil3")
    .Activate
    .Cells.Clear
    xl_Paste Sheets("Saisie des Salaires").Range("A1:BB1"), .Range("A1:BB1")
    xl_Paste Sheets("Saisie des Salaires").Range("A2:BB2"), .Range("A2:BB2")
    xl_Paste Sheets("Saisie des Salaires").Range("A17:BB17"), .Range("A4:BB4")
    xl_Paste Sheets("Saisie des Salaires").Range("A20:BB24"), .Range("A6:BB10")
    xl_Paste Sheets("Saisie des Salaires").Range("A27:BB29"), .Range("A12:BB14")
    xl_Paste Sheets("Saisie des Salaires").Range("A34:BB39"), .Range("A16:BB21")
End With

End Sub
Sub xl_Paste(source As Range, target As Range)
    source.Copy
    target.Select
    ActiveSheet.Paste link:=True
    target.PasteSpecial xlPasteFormats
    target.PasteSpecial xlPasteColumnWidths
    For Each cell In target
        If cell.HasFormula Then
        formule = Mid(cell.Formula, 2)
        cell.FormulaLocal = "=si(" & formule & "="""";"""";" & formule & ")"
        End If
    Next
End Sub


Merci cela m'a bien avancé
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa