Tableau Dynamique

Bonjour à tous,

Je reviens avec une nouvelle question concernant un tableau dynamique (à lignes variables). En effet, j'avais pu recevoir de l'aide de plusieurs membres concernant une demande de ce type mais j'aimerais pouvoir modifier une "option" dans le code et après moult test... je n'arrive pas à obtenir ce que je veux...

Voici le code qui m'avait été fourni :

Private Sub Worksheet_Change(ByVal Target As Range) 'Macro qui se déclenche lors d'un changement sur la feuille en question
Dim lo As ListObject 'Variable de type tableau structuré
Dim Indx As Long 'Variable de type nombre entier
Dim Message As String, Style As VbMsgBoxStyle, Answer As VbMsgBoxResult, Title As String 'Variables texte (String) utilisées pour l'affichage du message
    If Target.Address = "$D$2" Then 'Si la cellule modifiée est D2, alors...
        Set lo = Range("Tableau_Test").ListObject 'On affecte le 1er tableau structuré à la variable Io
        With lo 'Avec ce tableau
            If .InsertRowRange Is Nothing Then 'Si l'ajout de lignes à la suite est désactivé
                Message = "Vous allez supprimer les données de la table." & vbCrLf 'Ajout du texte du message
                Message = Message & "Veuillez confirmer votre souhait."
                Style = vbYesNo + vbQuestion 'Ajout des boutons/picto affichés
                Title = "Réinitialisation table ?" 'Ajout du titre
                Answer = MsgBox(Message, Style, Title) 'Affichage du message
                If Answer = vbYes Then .DataBodyRange.Delete 'Si oui, on supprime les données existantes
            End If
            If Not IsEmpty(Target) Then 'Si la cellule D2 n'est pas vide
                If Target.Value = 1 Then 'Si la cellule D2 = 1
                    .InsertRowRange.Cells(1).Value = 1 'On ajoute une ligne
                Else
                    .Resize lo.Range.Resize(Target.Value + 1)
                    For Indx = 1 To .ListRows.Count 'Sinon on ajoute autant de lignes que nécessaires
                        .ListRows(Indx).Range.Cells(1) = Indx
                    Next Indx
                End If
            End If
        End With
    End If
End Sub

Ma problématique est la suivante : quand les personnes destinataires du tableau rentrent par exemple 12 lignes, les 12 sont bien créées mais si jamais ils veulent en ajouter une en mettant 13 en D2, cela efface systématiquement le contenu des 12 autres...

J'aimerai donc pouvoir lui dire que si des lignes ont déjà été créées et que l'on en ajoute, il ne supprime pas les données enregistrées. Par contre si l'utilisateur décide d'en "supprimer" en entrant un nombre inférieur au nombre de lignes déjà présentes, là pour le coup cela ne me gêne pas que le contenu soit supprimé.

Dans tous les cas la modification ne se fera (en théorie) que vers le positif.

Je vous joint mon fichier test au cas où.

D'avance merci pour l'aide que vous pourrez m'apporter.

Sam

Bonsoir Ropperlimp

Reelement votre code contenait tout, il ne vous disait pas la bonne chose ! !

Lorsque vous donnez un nombre de lignes vous devez répondre OUI seulement( et seulement si) si vous voulez effacer les données sinon vous cliquez sur NON et alors le tableau ne s'efface pas

Ah... ^^' Pour le coup j'ai bien l'air bête...

Effectivement je n'avais pas compris ça comme ça. Je pensais que le NON annulait la commande d'ajout (ou de suppression) de lignes.. Et en fait il détermine juste le vidage des lignes ^^

Bon.. En tout cas merci de m'avoir éclairé ! Je vais tacher d'être un peu plus curieux de l'aide qui m'est donnée à l'avenir.

Cordialement.

Sam.

Rechercher des sujets similaires à "tableau dynamique"