Macro insertion dernière ligne Excel 2007

Bonjour à tous

Depuis plusieurs jours je cherche à créer une macro pour insérer une ligne après la dernière ligne du tableau, est malgré tous les sujets vus sur le forum, je bloque sérieusement, je suis vraiment nul...

je joins le tableau en question .

le but est le suivant:

insérer une nouvelle ligne en fin de tableau (ligne 15) et copier la formule en D14 pour qu'elle soit active en D15.

merci de votre aide

Bonsoir,

si la macro d'insertion de ligne ne sert qu'à recopier la formule en colonne D, alors je vous propose de transformer votre plage de donnée en tableau "Excel".

Il vous suffit pour cela de sélectionner une cellule au choix de la plage de données, aller sur le ruban, cliquer sur "insertion", puis sur la gauche "tableau".

Une fenêtre s'ouvre et vous indique la plage de cellule du tableau, indiquez que vous avez une ligne d'entête (cochez la case), puis cliquez sur [OK]

Voilà votre tableau est créé.

Maintenant entrez une date en ligne 15 et par "magie" la ligne s'intègre au tableau et en colonne D la formule est recopiée automatiquement.

Ci joint le fichier déjà modifié :

Ceci dit si MFerrand se promène par là ce soir il vous expliquera pourquoi il ne faut pas utiliser les tableaux Excel...

Bonsoir Maréchal !

Sinon si vous voulez vraiment du VBA, le code que vous avez écrit est presque bon...mais la première ligne vide est une ligne en dessous de la dernière ligne pleine, donc plutôt +1 que -1...

Ici un raccourcie : https://www.excel-pratique.com/fr/astuces_vba/derniere-ligne

@ bientôt

LouReeD

Bonjour LouReeD

Merci pour l'explication concernant mon problème.

Beaucoup plus simple qu'une macro, je connaissais le tableau Excel mais pas la possibilité d'insérer la date en dernière ligne.

En ce qui concerne le VBA je vais m'inspirer des explication contenues dans le lien, sinon je vous recontacterai

Bonne journée et merci

Bonjour,

en fait ce n'est pas le "smilet" qu'il faut mettre pour valider le post, il faut cliquer sur l'icone avec le petit V

@ bientôt

LouReeD

Salut LouReed,

Je ne raffole pas des Tableaux Excel mais je ne peux nier qu'ils ne puissent présenter des avantages ! Au cas particulier, c'est bien le cas (en supprimant les cellules fusionnnées en F...)

Sinon :

Sub insertionligne()
    Dim dlg As Integer
    With ActiveSheet
        dlg = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        .Rows(dlg).Insert
        .Cells(dlg - 1, 4).Copy .Cells(dlg, 4)
        .Cells(dlg, 6).Resize(, 4).Merge
    End With
End Sub

Cordialement.

Bonsoir MFerrand...

j'étais à l'affut de votre venue

Moi j'aime bien les tableaux mais il est vrai qu'ils apportent des soucis comme le non partage du fichier...

Mais quels sont les autres problèmes ?

Peut-être pourriez vous faire un cours téléchargeable ?

@ bientôt

LouReeD

Salut LouReed !

Je n'aime pas formuler dans un tableau, il y a de quoi s'y perdre et les formules sont généralement plus longues, c'est une habitude à prendre, c'est vrai mais...

L'habitude de rechercher la dernière ligne utilisée avec End(xlUp) peut réserver des surprises avec un tableau et il vaut mieux ne pas l'utiliser : c'est la dernière ligne du tableau qui est renvoyée, or si l'utilisateur a incorporé des lignes vides en fin de son tableau... (il ne devrait pas, mais on voit ça assez souvent !)

Un élément que j'avais trouvé intéressant, c'est que le tableau est nommé d'office par Excel, et que ce nom est utilisable dans le code comme tout autre nom, et couvre la partie données, le corps du tableau (exception faite de la ligne d'entêtes). Mais il faut se méfier de quelques particularités, un tri appliqué sur cette plage par exemple, bien que n'incluant pas l'en-tête sera faussé si on définit Header par xlNo...

Bref, ce qui me gêne c'est qu'il faut en permanence composer avec les propriétés de Tableau alors que je trouve que l'on peut mieux maîtriser tous les processus de la façon qu'on souhaite avec des plages normales.

Mais il est vrai qu'il peuvent faire gagner pas mal de temps dans beaucoup de cas...

Cordialement.

Bonjour,

il est vrai que j'ai remarqué ceci également lors de la "résolution" d'un autre post :

End(xlUp) donne la première ligne vide qui se trouve après le tableau !!!

Je suis donc passé par Range("Source").Rows.Count où Source est le nom du tableau nommé et quand le tableau est vide et que les entêtes sont en ligne 1 alors ceci donne 1.

Mais vous avez raison au niveau des formules : on a beau écrire =Si(B2<>"";"rempli";"") dans le tableau nommé Excel remple les référence de cellules par tout un système de référence par le nom des colonnes et parfois ce noms sont long et oui cela rallonge les formules !

@ bientôt

LouReeD

Rechercher des sujets similaires à "macro insertion derniere ligne 2007"