Insérer une ligne avec macros

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

Eric68

XLDnaute Nouveau
Bonjour

Je suis nouveau sur la forum et également novice en VBA.

Dans l'exemple que j'ai joint à ce post j'aimerais qu'en cliquant sur un bouton "+" (que j'ai déjà créé dans l'exemple) qu'une ligne s'ajoute au dessus de la première ligne et cela indépendamment pour les 3 sous-catégories : Salaire 1, Salaire 2, Revenus supplémentaires.

J'ai déjà essayer en faisant "enregistrer une macros" mais quand je commence à ajouter des lignes les macros perdent leurs lignes de référence et me créent des lignes dans les mauvaises catégories.

J'ai déjà trouver un code VBA pour un cas similaire, où la personne voulais ajouter des lignes entre deux lignes de même couleur. Moi j'aimerais plutôt ajouter des lignes entre "Salaire 1"-"Salaire 2" ... malheureusement je ne mis connais pas assez pour pouvoir adapter ce code à mon cas.

Code :

Option Explicit
Sub Ligne_insérer_x_x_si_couleur_x()
Dim i As Long, ii As Long
Application.ScreenUpdating = False
For i = Cells(Rows.Count, "a").End(xlUp).Row To 1 Step -1
If Range("a" & i).Interior.Color = 16776960 Then
For ii = 1 To 2
With Rows(i)
.Insert
.Offset(-1, 0).Interior.Color = xlNone
End With
Next
End If
Next
Application.ScreenUpdating = True
End Sub


Je vous remercie d'avance de l'aide que vous pouvez m'apporter, je reste à disposition si il faut plus de renseignement.

Cordialement Eric68
 

Pièces jointes

Re : Insérer une ligne avec macros

Bonjour, ou..soir 🙂

une soluce parmi d'autres 🙂

Sub Insere()
Dim Last, I
Last = [E65000].End(xlUp).Row
For I = Last To 5 Step -1
If Cells(I, 5).Value = "Salaire 1" Or Cells(I, 5).Value = "Salaire 2" Then
Rows(I + 1).EntireRow.Insert
End If
Next
End Sub
 
Re : Insérer une ligne avec macros

Bonjour Gosselien

Merci pour votre réponse.

J'ai essayer le code que vous m'avez donner. Il fonctionne par contre il m'ajoute une ligne sous "Salaire 1" et sous "Salaire 2" en même temps. J'ai donc supprimer " Or Cells(I, 5).Value = "Salaire 2" " dans la ligne et ça fonctionne. Par contre j'aimerais garder le même format de ligne que la ligne déja existante sous Salaire 1.

Merci pour votre aide.
 
Re : Insérer une ligne avec macros

Bonjour Pierrot93

Merci pour votre aide et pour ce code ça s'approche de ce que je souhaite, par contre la ligne qui s'ajoute n'est pas comme la ligne déjà existante avec 3 colonnes (comme on peut le voir dans l'exemple).
 
Re : Insérer une ligne avec macros

Re,

Par contre j'aimerais garder le même format de ligne que la ligne déja existante sous Salaire 1.

le code proposé correspondait en principe à cette demande.... une insertion de ligne se fait de toute façon avec toutes les colonnes... essaye peut être cette constante "xlFormatFromLeftOrAbove" en lieu et place de "xlFormatFromRightOrBelow"
 
Re : Insérer une ligne avec macros

Re Pierrot93

Merci je l'ai essayer mais ça me donne le résultat comme dans le tableau de gauche sur l'illustration ci-dessous. Il me faudrait la même chose que sur le tableau de droite.

Insertion de ligne avec macros.jpg
 
Re : Insérer une ligne avec macros

Voici le code de la macros :

PHP:
Sub Insere()
Dim Last, I
Last = [E65000].End(xlUp).Row
For I = Last To 5 Step -1
If Cells(I, 5).Value = "Salaire 1" Then
Rows(I + 1).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove

End If
Next

End Sub
 
Re : Insérer une ligne avec macros

Re,

essaye ceci :
Code:
Option Explicit
Sub Insere()
Dim Last As Long, i As Long
Last = [E65000].End(xlUp).Row
For i = Last To 5 Step -1
    If Cells(i, 5).Value = "Salaire 1" Then
        With Rows(i + 1)
            .Copy
            .Insert Shift:=xlDown
        End With
    End If
Next i
End Sub
 
Re : Insérer une ligne avec macros

J'ai essayer la macros dans le programme excel que je suis entrain de créer, la macros va très bien quand il n'y a pas de tableau à coté du premier. Mais dans mon cas j'ai plusieurs tableaux qui sont à cote à cote et quand j'ajoute une ligne au tableau avec la macros bien évidemment ça en ajoute une à tous les autres tableaux.

Je voulais savoir si il était possible de changer : au lieu d'insérer une ligne entière si on pouvait ajouter seulement une plage de cellules, comprenant la ligne du tableau à insérer, sans que cela n'affecte les tableaux voisins. Une image d'exemple ci dessous.

Insertion de ligne avec macros 2.jpg


Merci beaucoup pour votre aide.
 
Re : Insérer une ligne avec macros

Bonjour,

modifie peut être comme suit, non testé...

Code:
Option Explicit
 Sub Insere()
 Dim Last As Long, i As Long
 Last = [E65000].End(xlUp).Row
 For i = Last To 5 Step -1
     If Cells(i, 5).Value = "Salaire 1" Then
         With cells(i + 1,5).Resize(,14)
             .Copy
             .Insert Shift:=xlDown
         End With
     End If
 Next i
 End Sub

bonne journée
@+
 
- 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

Réponses
10
Affichages
530
Réponses
5
Affichages
703
Réponses
4
Affichages
671
Retour