Insérer des lignes dans un plage de cellules

Bonjour,
Pouvez-vous m'aider ?

Voici mon problème:

Je souhaiterai pouvoir insérer à l'aide d'un bouton une ligne à l'aide d'un bouton avec certaines caractéristiques (nombre de cellules fusionnées, couleur de fond et valeur dans la cellule) dans une plage de cellules définie à l'avance; cette ligne doit venir à la suite de celle déjà remplis.

Et avoir cette fonction sur plusieurs plages.

J'ai réussi à définir mes plages.

Mais les macros que j'ai conçu ne fonctionnent pas correctement : elles insèrent les lignes selon leur emplacement (B14 pour la première par exemple) , c'est à dire que si on insère une ligne au dessus cela met en erreur tout ce que je veux.

PS: Je n’arrive pas non plus à prendre en compte les plage de cellules dans les macros.

11ligne.xlsm (20.06 Ko)

PSS : Je suis un débutant dans Excel et VBA

Bonjour Lilian

ça sent le loup

Il est très facile d'insérer des lignes avec un tableau structuré.

Donc pas de cellules fusionnées (on aime pas)

toutes les colonnes colonne1, colonne 2,colonne 3....

et après on t'aidera... lol

A+ François

Bonsoir,

quand vous dites "débutant" en Excel, je veux bien vous croire

Pour faire de la mise en page, nul besoin de fusionner les colonnes d'une ligne, il suffit de mettre le curseur de la souris entre, par exemple l'entête "B" et "C", il se transforme alors en barre verticale noire avec des flèches partant vers la gauche et la droite, à ce moment vous cliquer gauche en restant appuyé puis vous déplacez la souris vers la droite pour agrandir la colonne B ou vers la gauche pour la réduire. Du coup votre cellule de la colonne B est plus large et il n'est plus utile de fusionner 8 colonne pour avoir la largeur voulue !

Pour le reste fanfan38 vous a expliqué, mais peut-être alors à votre niveau vous ne savez pas ce qu'est un tableau structuré ?

@ bientôt

LouReeD

Bonjour,

Je vous remercie de vos réponses mais j'ai un tableau plus complexe qui doit respecter une mises en pages ( taille et nombre de cellules ) c'est pour cela que je ne peux pas agrandir les cellules et c'est ainsi pourquoi je fusionne les cellules.

Je dois amélioré ce tableau en y rajoutant les boutons qui ajouterons des lignes selon des caractéristiques déjà citées plus haut.

Je vous remercie quand même d'avoir pris le temps pour répondre mais je souhaiterai que l'on puisse m'aider à ce que je souhaiterai faire.

bonjour,

J'ai ajouté des couleurs pour mieux voire ce qui ce passe, mais plus tard vous pouvez effacer ces lignes.

Sub teste()
     With Range("Cat_1")     'votre plage
          .Interior.ColorIndex = WorksheetFunction.RandBetween(1, 54)     'couleur aleatoire
          With .Cells(.Rows.Count, 1).Resize(, .Columns.Count)     'derniere ligne de cette plage
               .Copy     'copie
               .Insert shift:=xlShiftDown     'ajouter une nouvelle ligne en dessous et coller le contenu de la ligne précédente
               .Interior.ColorIndex = WorksheetFunction.RandBetween(1, 54)     'couleur aleatoire
               .Merge     'fusionner
               .Value = Format(Now, "ddd dd-mm-yy hh:mm:ss")     'ajouter timestamp dans cette nouvelle ligne
          End With
     End With
End Sub

Bonsoir,

personnellement j'ai testé BsAlv et ceci fonctionne bien, plus qu'à le dédoubler afin d'avoir une procédure pour chaque "Cat" !

@ bientôt

LouReeD

bonjour,

Dédoubler ou parametriser

Sub Cat1()
     teste Range("Cat_1")
End Sub

Sub Cat2()
     teste Range("Cat_2")
End Sub

Sub teste(MaPlage As Range)
     With MaPlage     'votre plage
          .Interior.ColorIndex = WorksheetFunction.RandBetween(1, 54)     'couleur aleatoire
          With .Cells(.Rows.Count, 1).Resize(, .Columns.Count)     'derniere ligne de cette plage
               .Copy     'copie
               .Insert shift:=xlShiftDown     'ajouter une nouvelle ligne en dessous et coller le contenu de la ligne précédente
               .Interior.ColorIndex = WorksheetFunction.RandBetween(1, 54)     'couleur aleatoire
               .Merge     'fusionner
               .Value = Format(Now, "ddd dd-mm-yy hh:mm:ss")     'ajouter timestamp dans cette nouvelle ligne
          End With
     End With
End Sub

il y a une chose que j'ai des doutes : avec ce "insert" la dernière ligne se déplace une ligne et la nouvelle ligne, qui est une copie de la dernière est mis à la position originale, donc on change l'originale qui est déplacé.

le résultat est le même mais je pense que cette dernière explication est plus correcte que celle dans la macro.

bonjour,

BsAlv

Je vous remercie grandement j'ai tester et modifier pour répondre à mes demande et ça marche très bien même si il me reste quelques changement à faire sur mon tableau.

Encore merci pour votre réactivité et votre performance

Rechercher des sujets similaires à "inserer lignes plage"