Code pour insertion de ligne avec formules et formats
Bonjour à tous,
J'ai créer un fichier qui permet à l'utilisateur en chef, dans la première feuille du classeur, d'indiquer quels éléments auront besoin d'être soumissionner. Ensuite, les autres feuilles du classeur sont gérées par les différents intervenants qui auront à demander des soumissions pour ces éléments.
Ils inscrivent donc les prix et le fichier renvoi cette information dans la première feuille, celle de l'utilisateur en chef, pour qu'il puisse avoir accès aux prix sans consulter chaque feuille une par une.
Voici donc le problème;
Il est possible que l'utilisateur en chef ait besoin d'insérer une ligne au milieu des éléments qu'il aura identifiés. Il faut donc que cette ligne s'insère au même endroit dans chaque feuille. Après plusieurs recherches sur différents forums, j'ai finalement trouver ce code qui fonctionne très bien pour ce que j'ai besoin;
Sub InsererLignes()
Dim cs As String
cs = ActiveSheet.Name
Dim y As Integer
y = Application.InputBox("Entrer le # de la ligne que vous voulez ajouter", _
Type:=1)
If MsgBox("Êtes vous certain de vouloir ajouter la ligne " & y & " sur toutes les feuilles?", _
vbYesNo, "Insertion de lignes sur toutes les feuilles") = vbNo Then Exit Sub
Application.ScreenUpdating = False
Dim r As Range
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Activate
Set r = ActiveSheet.Range("A" & y)
If y < 6 Then GoTo circumv 'POUR NE PAS INSÉRER DANS L'ENTETE
Range("A" & y).EntireRow.Insert
' AJOUTER ICI LE CODE POUR COPIER LES FORMULES ET FORMATS SUR TOUTES LES FEUILLES
circumv:
Next ws
Sheets(cs).Activate
Application.ScreenUpdating = True
End Sub
Le hic, c'est que je ne sais pas comment m'assurer que toutes les différentes formules, formats et mise en forme conditionnelles restent les mêmes avec la nouvelle ligne qui vient d'être insérer avec le précédent code.
Aussi, s'il serait possible d'exclure la dernière feuille du classeur lors de l'ajout de ligne, ce serait merveilleux.
Désolé pour le long message, j'ai tenté d'être le plus clair possible.
Merci à l'avance!
bonjour
joindre un fichier exemple (simplifié ! ) pour test
Bonjour,
J'ai trouvé solution à mon problème.
Voici le nouveau code pour ceux que ça pourrait intéresser.
Sub InsererLignes()
Dim cs As String
cs = ActiveSheet.Name
Dim y As Integer
y = Application.InputBox("Entrer le # de la ligne que vous voulez ajouter", _
Type:=1)
If MsgBox("Êtes vous certain de vouloir ajouter la ligne " & y & " sur toutes les feuilles?", _
vbYesNo, "Insertion de lignes sur toutes les feuilles") = vbNo Then Exit Sub
Application.ScreenUpdating = False
Dim r As Range
Dim ws As Worksheet
If y > 6 Then
For Each ws In ThisWorkbook.Worksheets
ws.Activate
ActiveSheet.Rows("5:5").Select
Selection.Copy
Rows(y).Select
Selection.Insert Shift:=xlDown
Rows(y).EntireRow.Hidden = False
Next ws
For Each ws In ThisWorkbook.Worksheets
ws.Activate
ActiveSheet.Rows("5:5").Select
Selection.Copy
Rows(y).Select
ActiveSheet.Paste
Rows(y).EntireRow.Hidden = False
Next ws
End If
Sheets(cs).Activate
Application.ScreenUpdating = True
End Sub