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

Insérer un ligne avec un bouton.

DAVID-44-

XLDnaute Occasionnel
Bonjour,
J'aimerais copier et insérer une ligne grâce à un bouton "Insérer ligne" sous des lignes définies. (lignes bleues : fournisseurs / produits / besoin de... etc.)
Ex : Copier la ligne 9 et l'insérer en 10 puis copier la ligne 25 et l'insérer 26, etc.

Malheureusement, quand je crée une macro pour actionner la commande, lorsque je l'utilise le bouton "Insérer ligne", la première ligne est bien à sa place, mais les autres sont toutes décalées...
Ex. : Copier la ligne 9 et l'insérer en 10 mais ensuite ce n'est pas la ligne 26 qui est copiée, mais la ligne 25 qui correspond du coup à la ligne bleu et je me retrouve avec deux lignes bleu !

Je n'arrive pas à trouver une solution à mon problème!
Merci de votre aide.
 

Pièces jointes

  • STOCK.exemple.xlsm
    169.6 KB · Affichages: 22
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour David, Chris,
Quand on veut insérer des lignes à des endroits précis il faut toujours commencer par le bas du tableau. Ainsi la ligne bleu sera bien conserver là où il faut.
Sinon évidemment ça décale. A la première insertion la ligne 25 se retrouve en ligne 26.
 

vgendron

XLDnaute Barbatruc
Hello
avec ce code si j'ai bien compris

VB:
Sub insererLigne()
Dim Fin, i As Long
Application.ScreenUpdating = False
'insère une ligne au début de chaque tableau: juste sous les lignes d'entete contenant "FOURNISSEURS"

    Fin = Range("B" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille
    For i = Fin To 8 Step -1 'on remonte jusqu'à la ligne 8
        If Range("B" & i) = "FOURNISSEURS" Then 'on a identifié une ligne d'entete
            Rows(i + 1).Copy 'on copie la première ligne SOUS Fournisseurs
            Rows(i + 1).Insert shift:=xlDown 'on la colle SOUS fournisseurs en décalant tout le reste vers le bas
            Rows(i + 1).ClearContents 'on vide le contenu de la nouvelle ligne
        End If
    Next i

Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
4
Affichages
113
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…