Problème code permettant d'ajouter des lignes à un tableau

Bonjour,

J'ai un soucis avec le code permettant d'ajouter des lignes à un tableau... Tout est expliqué dans le fichier joint !

Merci encore de votre aide,

Bonne soirée,

Amicalement

Bonjour Walden,

Pour enlever les bordures haute, dans la macro InsérerLigne, remplace la ligne

With Tablo.Rows(LFin): .Copy: .Insert: End With

par celle-ci

With Tablo.Rows(LFin): .Borders(xlEdgeTop).LineStyle = xlNone: .Insert: End With

Je ne comprends pas la première partie de ta demande : "Comment adapter le code pour que les lignes 3 et 4 n'apparaissent pas tant qu'elles ne sont pas remplies ??"Si elles n'apparaissent pas comment les remplit-on ?

Bonjour vba-new, le forum,

Merci beaucoup de ta réponse... qui entraine une nouvelle question!! Comment faire pour, que lorsque qu'une ligne est supprimée, retrouver la bordure sur la "nouvelle" dernière ligne du tableau :

  If Me.[Date].Rows(L).Value = "" Then  Me.[Date].Rows(L).EntireRow.Delete

Je ne comprends pas la première partie de ta demande : "Comment adapter le code pour que les lignes 3 et 4 n'apparaissent pas tant qu'elles ne sont pas remplies ??"Si elles n'apparaissent pas comment les remplit-on ?

Tu as raison, je me suis mal exprimé... En fait, je ne sais pas si c'est possible mais j'aimerais que lorsqu'aucune entrée n'a eu lieu, que seul "Ajoutez ici" apparaisse, comme figuré dans le fichier ci-dessous. Et bien sûr ajouter des lignes au fur et à mesure.

Merci,

Bonne journée

Amicalement

Bonjour Walden,

Pour mettre des bordures :

- à droite :

.Borders(xlEdgeRight).LineStyle = xlContinuous

- à gauche :

.Borders(xlEdgeLeft).LineStyle = xlContinuous

- en bas :

.Borders(xlEdgeBottom).LineStyle = xlContinuous

Essaie de l'appliquer à ton cas en choisissant la bonne ligne et les bonnes cellules.

Walden a écrit :

En fait, je ne sais pas si c'est possible mais j'aimerais que lorsqu'aucune entrée n'a eu lieu

Que signifie "aucune entrée n'a eu lieu" ? Comment saisit-on des entrées ? Où ? Quelle cellule ? J'ai compris le principe mais tu dois me dire comment cela se traduit sur Excel.

Dis-moi un truc du genre : si on ne saisit rien dans telle ou telle cellule alors...

Que signifie "aucune entrée n'a eu lieu" ? Comment saisit-on des entrées ? Où ? Quelle cellule ? J'ai compris le principe mais tu dois me dire comment cela se traduit sur Excel.

Dis-moi un truc du genre : si on ne saisit rien dans telle ou telle cellule alors...

Ce tableau a pour but d'être une base de données, les entrées seront saisies manuellement (pas d'userform). Ce qui me "gêne" c'est la présence de ces 2 lignes dans le tableau, même si rien n'a été inscrit dans le tableau.

En gros, j'aimerais si possible:

* si rien n'est saisie dans les cellules A3:E3 et A4:E4, seule la cligne d'en-tête et la ligne "ajouter ici" sont visibles

* lorsque l'on clique sur "ajouter ici" une ligne est insérée entre la ligne d'en-tête et la ligne "ajouter ici" et les données peuvent être ajoutées.

* si l'on re-clique sur "ajouter ici" une nouvelle ligne est ajoutée à la suite du tableau et ainsi de suite.

* si une ligne est vide, elle est supprimée..

Je ne suis pas sûr d'avoir été plus clair...

Merci encore de ton aide,

Amicalement

Comment faire pour, que lorsque qu'une ligne est supprimée, retrouver la bordure sur la "nouvelle" dernière ligne du tableau :

Je reviens vers vous pour ce problème... Voici le code modifié mais qui ne fonctionne pas...

Private Sub Worksheet_Deactivate()
Dim L As Long, Tablo As Range: Set Tablo = Me.[Date].EntireRow
For L = Me.[Date].Rows.Count To 1 Step -1
   If Me.[Date].Rows.Count <= 2 Then Exit Sub
   If Me.[Date].Rows(L).Value = "" Then Me.[Date].Rows(L).EntireRow.Delete
   With Tablo.Rows(L - 1): .Borders(xlEdgeBottom).LineStyle = xlContinous: End With
   Next L
End Sub

Où me suis-je tromper ???

Merci de votre aide,

Bonne journée,

Autant pour moi. Utilise plutôt :

.Borders(xlEdgeBottom).Weight = xlMedium

par exemple.

Je regarde pour le reste demain. Je pense que j'ai du mal à comprendre car je ne fais pas le rapprochement avec le code que tu utilises toi.

A quoi sert le champ Date ? Est-il nécessaire ?

Bonsoir,

Désolé pour le retard, j'ai commenté tes codes et en ai mis un nouveau par rapport à ce que j'ai compris. Voir fichier joint.

Ça doit se rapprocher de ce que tu souhaites. Mis à part la suppression des lignes.

Il faut que tu me dises comment tu fais car dans tes fichier précédents, tu avais utilisé l'évènement Worksheet_Deactivate pour supprimer les lignes.

Worksheet_Deactivate = Désélection de la feuille = Sélection d'une autre feuille.

Donc ta macro de suppression de ligne se déclenchait lorsque tu changeait de feuille !

Bonjour vba-new,

Merci beaucoup !!

Pour la suppression des lignes, je n'en ai aucune idée ! J'ai récupéré ce code sur le net, je ne sais où... je dois avouer que j'ai essayé de comprendre comment la suppression pouvait fonctionner dans un Worksheet_Deactivate, sans succès...

Bonne journée,

Amicalement

Salut Walden,

Comment veux-tu procéder pour supprimer les lignes ?

Salut,

Je ne sais pas trop, hier soir, j'ai essayé d'écrire un code qui supprimerait la ligne non renseignée mais sans succès.

Je continue de travailler dessus et te tiens au courant !

Merci encore de ton intérêt !

A+

En fait ce que je voulais savoir c'est à partir de quelle action veux-tu supprimer les lignes ? Est-ce en appuyant un bouton ? En vidant une cellule ? En sélectionnant une autre feuille ? En mangeant une pomme ?

Bonjour vba-new !

Excuse moi je n'avais pas compris...

En fait, j'aimerais que la ligne soit supprimée si aucune entrée n'a eu lieu !

A+

Pas de souci

On ne peut pas faire comme ça walden, car si aucune entrée n'a lieu ça veut dire que tu ne fais aucune action non ?

Je n'arrive pas à comprendre

oui, c'est ça... Je ne sais pas si c'est possible... Je pensais utiliser cette commande:

   If Me.["a"].Rows(L).Value = "" Then Me.["a"].Rows(L).EntireRow.Delete

Mais c'est sans doute stupide...

Regarde dans le fichier si c'est ce que tu souhaites.

Pour supprimer les lignes vides, clique sur le bouton.

Bonjour

Juste un essai en partant de la macro de vba-new du fichier précédent

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim activeRow As Long

  If Target.Count > 1 Then Exit Sub    'si plusieurs cellules sélectionnées on sort de la procédure
  If Target.Value = "Ajouter ICI" Then
    activeRow = Target.Row
    If activeRow = 3 Or Range("a" & activeRow - 1) <> "" Then
      Rows(activeRow).Insert xlDown
      Range("b" & activeRow + 1 & ":e" & activeRow + 1).Borders(xlEdgeTop).Weight = xlMedium
      Range("b" & activeRow & ":e" & activeRow).Borders(xlEdgeRight).Weight = xlMedium
      If activeRow > 3 Then Rows("3:" & Target.Row - 1).Borders(xlInsideHorizontal).LineStyle = xlNone
    End If
  Else
    activeRow = 3
    While Cells(activeRow, "A") <> "Ajouter ICI"
      If Application.CountA(Range("A" & activeRow).Resize(1, 5)) = 0 Then
        Rows(activeRow).Delete
      Else
        activeRow = activeRow + 1
      End If
    Wend
  End If
End Sub

Bonjour vba-new, banzai64, le forum,

Un grand merci à vous 2, c'est parfait !!

Bonne journée,

Amicalement

Rechercher des sujets similaires à "probleme code permettant ajouter lignes tableau"