Pour votre information, j'ai apportée une modification supplémentaire puisque j'avais un erreur pour les plages à copier. J'ai donc mis une virgule entre les deux colonnes A à O et A à AA et cela fonctionne.
My bad.
Attention si tu met une virgule il ne copie que les cellules A et O et non toutes les celulles entre A et O, il faut mettre ":" c'est un oubli de ma part.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Sub ajout_ligne_par_feuilles()
Dim s As Worksheet, Ligne&
Ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Retraité - Total", "Facturation - Ass.", "Facturation - SFM"
s.Rows(Ligne).Insert Shift:=xlDown
s.Range("A" & Ligne - 1 & ":O" & Ligne - 1).Copy
s.Range("A" & Ligne & ":O" & Ligne).PasteSpecial xlFormulas
Case "Retraité - Chèque"
s.Rows(Ligne).Insert Shift:=xlDown
s.Range("A" & Ligne - 1 & ":AA" & Ligne - 1).Copy
s.Range("A" & Ligne & ":AA" & Ligne).PasteSpecial xlFormulas
Case "Retraité - Paie"
s.Rows(Ligne).Insert Shift:=xlDown
s.Range("A" & Ligne - 1).Copy
s.Range("A" & Ligne).PasteSpecial xlFormulas
s.Range("F" & Ligne - 1).Copy
s.Range("F" & Ligne).PasteSpecial xlFormulas
s.Range("I" & Ligne - 1).Copy
s.Range("I" & Ligne).PasteSpecial xlFormulas
s.Range("L" & Ligne - 1).Copy
s.Range("L" & Ligne).PasteSpecial xlFormulas
s.Range("M" & Ligne - 1).Copy
s.Range("M" & Ligne).PasteSpecial xlFormulas
End Select
Next s
end sub |
Dans le fonds, il faudrait que la MACRO tienne compte que parfois la formule peut faire référence à une autre feuille à la même ligne et parfois qu'il s'agit d'un calcul entre deux cellules de la feuille active.
C'est normalement le cas, le code que je t'ai fournit insère une ligne puis fait un copier-coller de la formule, référence à une autre feuille comprise, je viens de le tester sur un classeur et ça fonctionne.
Pour terminer, petite demande spéciale qui me faciliterait beaucoup le travail. Comme la saisit des données se faire à la feuille Retraité - Paie, j'aimerais que lorsque je termine la MACRO qu'Excel m'amène directement à la cellule de la colonne B de la ligne qui vient d'être ajoutée. Donc, comme dans mon exemple, si j'ajoute la ligne 20, qu'Excel m'amène directement à la cellule B20 de la feuille Retraité - Paie pour entrer les nouvelles données.
sheets("Retraité - Paie").range("B"& ligne).select
Partager