Insérer une ligne après la dernière ligne d'un tableau

Bonjour,

J'ai une macro qui archive les données d'une facture dans un tableau.

Voici le début

ligne = Sheets("BILAN").Range("C1").End(xlDown).Row + 1
Sheets("BILAN").Range("A" & ligne).Value = Sheets("FACTURE").Range("E7").Value

Je souhaiterais pouvoir insérer une ligne avant de remplir les cellules, car j'ai des donnés en dessous de ce tableau.

Il doit y avoir un code à mettre entre les 2 lignes ci-dessus ou à la fin de la macro ?

Merci beaucoup pour votre aide

Sylvain

Bonjour,

Tu as plus d'information à donner ? c'est quoi ton message d'erreur ?

Bonjour salmanasard,

il n'y a pas de message d'erreur, la macro fonctionne bien.

je souhaite juste pouvoir la compléter en ajoutant un bout de code qui permette d'insérer une ligne soit au début de la macro soit à la fin.

Voici la macro entière

ligne = Sheets("BILAN").Range("C1").End(xlDown).Row + 1
Sheets("BILAN").Range("A" & ligne).Value = Sheets("FACTURE").Range("E7").Value
Sheets("BILAN").Range("B" & ligne).Value = Sheets("FACTURE").Range("I13").Value
Sheets("BILAN").Range("C" & ligne).Value = Sheets("FACTURE").Range("D3").Value & Sheets("FACTURE").Range("E3").Value
Sheets("BILAN").Range("D" & ligne).Value = Sheets("FACTURE").Range("I15").Value
Sheets("BILAN").Range("E" & ligne).Value = Sheets("FACTURE").Range("C11").Value & " - " & Sheets("FACTURE").Range("I14").Value
Sheets("BILAN").Range("F" & ligne).Value = Sheets("FACTURE").Range("E46").Value
Sheets("BILAN").Range("G" & ligne).Value = Sheets("FACTURE").Range("E44").Value
Sheets("BILAN").Range("H" & ligne).Value = Sheets("FACTURE").Range("E45").Value

Sheets("FACTURE").Range("A19:D40").ClearContents
Sheets("FACTURE").Range("E3").Value = Sheets("FACTURE").Range("E3").Value + 1
End Sub

Merci beaucoup

Sylvain

Bonjour

En essayant d'intégrer cette ligne à adapter selon votre fichier

Selection.EntireRow.Insert

Bonjour jonyboy

Quand j'ajoute ce code en 2eme ligne ou en 10ème ligne, cela m'ajoute une ligne dans mon tableau facture.

Il faudrait que la ligne s'ajoute dans le tableau bilan

merci beaucoup

Sheets("BILAN").Range("A" & Range("C1").End(xlDown).Row + 1).EntireRow.Insert

(à mettre juste devant le chargement de la variable "ligne")

Quand je mets votre code au devant le chargement de la variable "ligne", la macro fonctionne mais la nouvelle ligne s'insère en plein milieu de mon tableau bilan

Sheets("BILAN").Range("A" & Range("C1").End(xlDown).Row + 1).EntireRow.Insert
ligne = Sheets("BILAN").Range("C1").End(xlDown).Row + 1
Sheets("BILAN").Range("A" & ligne).Value = Sheets("FACTURE").Range("E7").Value

La colonne "C" a sa dernière cellule vide plus haute que les autres colonnes, non ?

ce code fait référence à la (dernière cellule non-vide +1) de la colonne "C".

Sheets("BILAN").Range("A" & Range("C1").End(xlDown).Row + 1).EntireRow.Insert

Ca t'aide ?

sinon une copie du fichier pourrait aider car essayer de trouver une solution en jouant au devinette c'est pas pratique.

Voici une capture du bas du tableau bilan.

Je souhaiterais que lorsque je lance la macro pour rempli ce tableau depuis ma facture, les données se mettent dans la ligne 64 (ce qui se passe déjà) et en plus qu'une ligne soit insérée , car en dessous la ligne bleue, j'ai d'autres données.

Ne faudrait-il pas que la code ressemble à ça ?

ligne = Sheets("BILAN").Range("A" & Range("C1").End(xlDown).Row + 1).EntireRow.Insert
Sheets("BILAN").Range("A" & ligne).Value = Sheets("FACTURE").Range("E7").Value

...

capture

Merci beaucoup

Bonjour à tous,

Sinon, si votre tableau est un tableau structuré :

Worksheets("Feuil1").ListObjects("Nom_Tableau").ListRows.Add

Baboutz

Sylvaing44, un fichier pour vous montrer, cela rajoute une ligne au tableau :
94sylvaing44.xlsm (14.18 Ko)

Avec l'ajout de données dans cette ligne qui vient d'être ajoutée (Array à modifier en fct de votre besoin) :

    With Worksheets("Feuil1").ListObjects("Tableau_Factures")
        .ListRows.Add
        .DataBodyRange.Rows(.DataBodyRange.Rows.Count) = Array("Date", "Années", "Factures", "Client", "Libellés")
    End With

Le fichier :

40sylvaing44.xlsm (14.38 Ko)

Bonne journée,

Baboutz

Baboutz

Merci pour l'intérêt que tu portes à mon problème

ce n'est pas un tableau structuré.

j'ai essayé de renommer la plage de cellule correspondant à mon tableau et d'insérer ton code en première lige mais cela n'a pas fonctionné

la capture est celle de l'onglet bilan.

le bouton de macro est dans l'onglet facture

Il est démontré par a+b qu'il est plus pratique de travailler avec des tableaux structurés. Il faut prendre le pli lors de la création d'un fichier, de structurer ses tableaux.

Voici comment tu peux structurer le tient :

  • Commence par enlever les filtres, on les remettra après. Tu sélectionnes les entêtes -> Données -> Filtrer
image
  • Ensuite tu sélectionnes tout ton tableau
image
  • On valide avec la case coché sur les entêtes
image
  • Puis dans le ruban 'Création', tout à gauche on change le nom du tableau
image
  • Et voilà monsieur, votre tableau structuré est prêt, facile n'est-ce pas ?

Ok Merci beaucoup Baboutz

Ça fonctionne nickel

je n'ai pas besoin de la ligne avec "Array"

Bonne fin de semaine

Sylvain

Le Array permet un code plus pratique et fluide que votre code :

Sheets("BILAN").Range("A" & ligne).Value = Sheets("FACTURE").Range("E7").Value
Sheets("BILAN").Range("B" & ligne).Value = Sheets("FACTURE").Range("I13").Value
Sheets("BILAN").Range("C" & ligne).Value = Sheets("FACTURE").Range("D3").Value & Sheets("FACTURE").Range("E3").Value
Sheets("BILAN").Range("D" & ligne).Value = Sheets("FACTURE").Range("I15").Value
Sheets("BILAN").Range("E" & ligne).Value = Sheets("FACTURE").Range("C11").Value & " - " & Sheets("FACTURE").Range("I14").Value
Sheets("BILAN").Range("F" & ligne).Value = Sheets("FACTURE").Range("E46").Value
Sheets("BILAN").Range("G" & ligne).Value = Sheets("FACTURE").Range("E44").Value
Sheets("BILAN").Range("H" & ligne).Value = Sheets("FACTURE").Range("E45").Value

Si vous créez un fichier anonymisé, je pourrais vous aider à construire votre code vba bien plus efficacement... Comme vous le souhaitez, en tout cas, content d'avoir pu vous aider !

Bonne journée,

Baboutz

Merci Baboutz

Voici mon fichier anonymisé :-)

je ne connaissais pas la fonction array et ne comprend pas trop pour l'instant à quoi elle sert

merci

Sylvain

Sylvain,

Votre fichier au propre, avec commentaires dans le code :

Sachez que je n'ai pas touché à l'esthétique de la feuille "BILAN" mais vos traits bleus et données écrits hors du tableau m'ont stressées ahah !

Sachez également que vous pouvez masquez (Clique droit -> masquer) l'onglet "LISTE" pour que les utilisateurs ne viennent pas modifier quoi que ce soit sans faire exprès. Pour ré-afficher c'est très simple : clique droit sur le ruban des onglets -> Afficher.

Notez également que les colonnes "Règlement", "Dates règlement" et "Colonne 1" ne sont pas remplies par la macro...

Bonne soirée,

Baboutz

on

merci beaucoup pour le temps temps passé sur mon fichier.

je regarderai ça lundi maintenant

Bon weekend

Rechercher des sujets similaires à "inserer ligne derniere tableau"