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 SubSheets("Archives") puis ("Etat") puis ("Mouvement")
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.DeleteQuelques exemples sur l'utilisation des tableaux en VBA
Dim data As ListObjectSuppression
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 IfAjout d'une ligne en fin de tableau
data.ListRows.AddAjout 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