Problème vidage tableau

Bonjour à tous,

J'ai envie de pleurer :)

J'apprend en ce moment à coder en vba pour mon apprentissage en tant qu'ingénieur agroalimentaire. J'ai créé un tableur de gestion des stocks tout semble rouler…

MAIS : Je veux vider mon tableau "Alertes" à chaque éxécution de la macro pour que le tableau d'alertes se mette à jour, Seulement je n'y arrive pas.

Je pense avoir compris le problème, la ligne de code que j'ai mise supprime toutes les lignes du tableau mais les lignes ne sont plus définies.

Bref j'ai besoin d'une solution et surtout d'une explication…

J'aimerais aussi mettre un effet sur la forme à laquelle j'ai affecté ma macro (que le bouton s'affaisse quand on clique, comme un bouton quoi…)

Si quelqu'un peut m'expliquer comment faire, je prend avec plaisir :)

Je vous met le code ainsi que des images des différentes feuilles de calcul pour comprendre un peu mieu

Bonne journée

Clément

Sub Macro1()

' arrêt du calcul sur le classeur, en effet il y a des formules qui ne doivent pas se mettre à jour !
    Application.Calculation = xlCalculationManual

'Copie de la saisie dans l'onglet Archives

    ' Définition des variables
    Dim DerLigne As Long, I

    ' on recherche la dernière ligne pleine de la feuille 3 = Historique des changements en partant
    ' de la dernière ligne de la feuille "Rows.count" et en remontant "xlUp",
    ' on y ajoute 1 pour trouver la ligne vide suivante sur laquelle on va inscrire les données
    DerLigne = Feuil3.Range("A" & Rows.Count).End(xlUp).Row

    ' on doit faire un test dans le cas où le tableau d'historisation serait vide :
    DerLigne = DerLigne + IIf(DerLigne = 3 And Feuil3.Cells(DerLigne, 1) = "", 0, 1)

     ' maintenant on "transfert" les données du changement dans le tableau d'historisation
    For I = 1 To 5
        Feuil3.Cells(DerLigne, I).Value = Feuil2.Cells(3, I).Value
    Next I

'Retrait ou ajout d'unités dans les stocks

    ' Définition des variables
    Dim Valeur_cherchee As String, PlageDeRecherche As Range, AdresseTrouvee As Variant, Methode As Range, Quantité As Variant

    ' enregistrer le contenu de la cellule article
    Valeur_cherchee = Sheets("Mouvement").Range("B3").Value

    ' Définir la plage de recherche
    Set PlageDeRecherche = Sheets("Etat").Columns(1)

    ' Chercher la cellule dans l'onglet Etat
    Set Methode = PlageDeRecherche.Cells.Find(what:=Valeur_cherchee)

    ' Chercher la ligne de cette cellule
    AdresseTrouvee = Methode.Row

    ' Renseigner la quantité dans une variable
    Quantité = Sheets("Mouvement").Range("D3").Value

    'Addition ou soustraction de la quantité selon la condition entrée/sortie
    If Sheets("Mouvement").Range("E3").Value = "entrée" Then Sheets("Etat").Cells(AdresseTrouvee, 7).Value = Sheets("Etat").Cells(AdresseTrouvee, 7).Value + Quantité Else Sheets("Etat").Cells(AdresseTrouvee, 7).Value = Sheets("Etat").Cells(AdresseTrouvee, 7).Value - Quantité

'Suppression du contenu de la barre de saisie

    Sheets("Mouvement").Range("A3:B3,D3:E3") = ""

'Alertes

    'Définition des variables
    Dim Cell As Range, LastLigne As Long, L As Range

    'Effacer le précédent tableau d'alerte pour mise à jour
    Range("Tableau5").ListObject.DataBodyRange.Delete

    'Dernière ligne du tableau d'alertes
    LastLigne = Sheets("Etat").Cells(Rows.Count, 9).End(xlUp).Row

    'Balayage de toutes les lignes
    For Each Cell In Sheets("Etat").Range("G3:G63")
    If Cell < Cell.Offset(0, -1).Value Then
    'Recopier l'article dans le tableau d'alertes
    Sheets("Etat").Cells(LastLigne, 9).Value = Cell.Offset(0, -6).Value
    'Recopier le fournisseur dans le tableau d'alertes
    Sheets("Etat").Cells(LastLigne, 11).Value = Cell.Offset(0, -3).Value
    'Recopier la Réf dans le tableau d'alertes
    Sheets("Etat").Cells(LastLigne, 10).Value = Cell.Offset(0, -5).Value
    'Calcul de la quantité à commander
    Sheets("Etat").Cells(LastLigne, 12).Value = Cell.Offset(0, -1).Value - Cell.Value
    'Mise à jour de la dernière ligne du tableau
    LastLigne = Sheets("Etat").Cells(Rows.Count, 9).End(xlUp).Row + 1
    End If
    Next

' reprise des calculs sur le classeur pour que les formules fonctionnent à nouveau
    Application.Calculation = xlCalculationAutomatic

End Sub

Sheets("Archives") puis ("Etat") puis ("Mouvement")

3 capture 2

Bonjour,

Je veux vider mon tableau "Alertes" à chaque éxécution de la macro pour que le tableau d'alertes se mette à jour, Seulement je n'y arrive pas.

pour vider un tableau structuré :

if not ActiveSheet.ListObjects("mon_tableau").DataBodyRange is nothing then ActiveSheet.ListObjects("mon_tableau").DataBodyRange.Delete

Quelques exemples sur l'utilisation des tableaux en VBA

Dim data As ListObject

Suppression

    Set data = ActiveSheet.ListObjects("mon_tableau")
    If Not data.DataBodyRange Is Nothing Then
        If MsgBox("Voulez-vous supprimer le contenu actuel ?", vbYesNo, "Demande de confirmation") = vbYes Then
            data.DataBodyRange.Delete
        End If
    End If

Ajout d'une ligne en fin de tableau

data.ListRows.Add

Ajout d'une donne en colonne j de la ligne ajoutée

data.DataBodyRange.Cells(data.ListRows.Count, j) = "__ici_la_données_"

peu importe l'emplacement du tableau

Rechercher des sujets similaires à "probleme vidage tableau"