Ajout Ligne Automatique Fin de Tableau (Sans Saisie)

Bonjour à tous, débutant dans le VBA je bloque sur un ajout de ligne...

J'ai un projet de gestionnaire de devis avec une page éditeur (ou je rentre les articles) et une page d'aperçu avant impression où sont triés les articles dans un tableau par RECHERCHEV. La page d'aperçu ne fait donc jamais l'objet d'une saisie manuelle. Ainsi a chaque fois que la RECHERCHEV de l'aperçu indique un résultat non vide sur la dernière ligne du tableau, le code devrait ajouter une ligne en dessous (laissant logiquement toujours une dernière ligne vide).

Mon problème semble venir du fait que ce soit la formule de la cellule qui est prise en compte et non du résultat (mais bon pas sûr), quelqu'un aurait des pistes, un bout de code ?

Merci de votre aide

PS : Le code fonctionne en saisie manuelle mais m'ajoute 2 lignes d'un coup, pas très grave mais je comprends pas pourquoi...

Hello MateoC,

Pour ajouter une seule ligne voici le code

Sub ajout()
Dim derligne As Long

' Trouver dernière ligne du tableau
With ActiveSheet
derligne = .Cells(Rows.Count, 1).End(xlUp).Row
    If .Cells(Rows.Count, 2).End(xlUp).Value <> "" Then
    .Cells(Rows.Count, 2).End(xlUp).ListObject.ListRows.Add
    End If
End With
End Sub

L'argument AlwaysInsert te décale d'une ligne, voilà pourquoi ça en insert deux.

Par contre, ton code insert une ligne à chaque fois que tu clique sur n'importe quelle cellule de ta feuille, peut-être faudrait t'il bloquer seulement la colonne A ou autres ?

A+,

Kilian

Super, merci Kilian, ça a résolu le problème des 2 lignes. Je bricole souvent le code avec l'enregistreur de macro mais ça a une limite visiblement.

Effectivement le but n'était pas d'ajouter une ligne a chaque clic, mais uniquement si la dernière ligne du tableau contient du texte. Donc si elle n'en contient pas l'ajout de ligne doit se stopper de lui même. Est ce possible ?

excel devis

Hello,

Quand tu dis dernière ligne tu parles uniquement de la cellule en ligne B ou toute la ligne ?

A+

Kilian

Salut ! Oui pardon j'ai pas précisé, c'est effectivement la dernière cellule en B.

Sur ma capture, c'est celle en dessous d'où il y a ". LAMBRIS SOUS DEBORDS". Et je voudrais que ce soit le résultat de la RECHERCHEV de cette cellule qui soit pris en compte pour ajouter la ligne.

Bon en grattant j'ai réussi a faire ce que je voulais, avec des "like "*.*" et des boucles, comme tous mes articles commencent par un signe :

Sub ajout()

Dim derligne As Long

' Trouver dernière ligne du tableau
With ActiveSheet
derligne = .Cells(Rows.Count, 1).End(xlUp).Row

' Tant que la dernière ligne commence par . ou : ou - ou < ou > ajouter ligne
    While .Cells(Rows.Count, 1).End(xlUp).Value Like "*.*" Or .Cells(Rows.Count, 1).End(xlUp).Value Like "*:*" Or .Cells(Rows.Count, 1).End(xlUp).Value Like "*-*" Or .Cells(Rows.Count, 1).End(xlUp).Value Like "*<*" Or .Cells(Rows.Count, 1).End(xlUp).Value Like "*>*"

 .Cells(Rows.Count, 1).End(xlUp).ListObject.ListRows.Add
    Wend

' Tant que l'avant dernière ligne est vide supprimer ligne
    While .Cells(Rows.Count, 1).End(xlUp).Offset(-1, 0).Value = "  "

  .Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
    Wend

End With
End Sub

Pour finir je fais activer la macro seulement quand je sélectionne la feuille c'est moins contraignant.

Merci à toi Kilian ! tu m'as bien aidé !!

A la prochaine !

Rechercher des sujets similaires à "ajout ligne automatique fin tableau saisie"