Gérer le format Tableau en VBA
Bonjour,
Je mets à jour périodiquement une base de données d’indicateurs (Base de Données) en copiant collant une feuille de mise à jour (Mise à jour) ayant ce jeu d’indicateurs et en modifiant la date et la valeur, pour la nouvelle période. Les 2 bases sont au format Tableau et j’ai automatisé avec une macro le copier-coller et la remise à blanc de la feuille Mise à Jour. Cela fonctionne. Voir ci-dessous.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Sub MàJ()
Dim ligne As Long
'Sélection de la feuille Mise à Jour (Feuil3) dans le cahier
Feuil3.Select
'Sélection du tableau Mise à Jour
Range("A1").CurrentRegion.Offset(1).Resize(Range("A1").CurrentRegion.Rows.Count - 1, Range("A1").CurrentRegion.Columns.Count).Select
Selection.Copy
'Sélection de la feuille Base de données
Sheets("Données").Select
'Numéro de la première ligne vide
ligne = Sheets("Données").Range("A1048576").End(xlUp).Row + 1
'Sélection de la première ligne vide
Range("A" & ligne).Select
'Copie de la mise à jour
ActiveSheet.Paste
'Remettre à blanc les colonnes variables (B et H) de MàJ
Feuil3.Select
Range("B2", Range("B2").End(xlDown)).Clear
Range("H2", Range("H2").End(xlDown)).Clear
End Sub |
J’ai aussi créé une macro qui génère un numéro d’identification (Colonne «A» ID) pour les données ajoutées à la suite de la base principale (qui lui à déjà un numéro ID). Voir code ci-dessous. Or ce code ne fonctionne que si la base est au format Plage de données. Après des recherche, j’ai cru comprendre que c’était lié à l’objet Tableau et qu’il fallait utiliser ListObject et les instruction adaptées. Mais là, j’ai du mal !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Sub NumAuto()
Dim i As Long, DernLigne As Long, PremLigne As Long
Sheets("MàJ").Select
' N° de la dernière ligne de la colonne A non vide
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Debug.Print DernLigne
PremLigne = DernLigne + 1
Debug.Print PremLigne
'Remplissage du numéro ID en colonne A jusqu'à la dernière ligne vide en colonne B
For i = PremLigne To Range("B" & Rows.Count).End(xlUp).Row
Debug.Print i
Range("A" & i).Select
ActiveCell.FormulaR1C1 = i
Next i
End Sub |
Je suis preneur d’une aide pour adapter mes 2 macros au fait que je travaille avec des Objets Tableau. Je suis encore novice en VBA.
En vous remerciant